GIT维护工作流
我们假设在GITHUB上面有一个仓库,是repository。我们假设这个repository上面只有一个**分支branch
上面只有一个提交commit
**是init。
![image-20240503001627505](https://img-blog.csdnimg.cn/img_convert/42c12a6f5a0966358d9070c3ef06e970.png)
当我们想要共享或者修改代码的时候,我们要做的第一件事是把仓库复制到本地:git clone https://github.com/example/example.git
,通过该命令我们可以在本地复制一个一模一样的仓库。
![image-20240503001950767](https://img-blog.csdnimg.cn/img_convert/c017f1cf3c1d1b50e239c93e80906a60.png)
我们可以将本地部分想象成两份local
和disk
。local
是git程序所知道的样子,而disk
是本地硬盘存储的样子。
创建一个新的分支branch
当我们需要修改代码的时候,首先就是要创建一个新的branch
,通过建立新的分支而不是直接修改主分支有一个好处:他不会把你的主分支搞得不能工作,而且能够维护多人合作时的安全性。
![image-20240503002248437](https://img-blog.csdnimg.cn/img_convert/7e224508aa9f8daa891d3b16d79b0021.png)
值得注意的是,在创建新分支的时候,我们是在Local层面进行创建的,使用命令:git checkout -b my-feature
。
disk
并不关心code是源于哪个分支,而是只关注与code本身的状态。
同步local
与disk
当我们更改完本地代码后,这个时候git还不知道我们的代码是什么样子,那这个时候,我们需要通过git add 文件名
与git commit
来将修改的代码提交到local
的仓库。
推荐在提交之前我们应该去git diff
来查看我们究竟对代码做了什么改变。
同步local
与remote
当我们同步完本地磁盘与本地仓库以后,这个时候远程代码仓库还不知道我们都做了什么,这个时候我们需要通过git push origin my-feature
来同步远程和本地的改动。
当修改过程中遇到别人的更新
在当我们更新代码的过程中会遇到别人提交代码的情况,这个时候我们应该先切换到最初的分支main,命令是:git checkout main
。随后再进行代码的最新获取,命令是:git pull origin master
把远端的main同步到本地的仓库里。这个时候我们切换回我们自己新建的分支,然后使用git rebase main
来进行在新的修改之后的同步。
rebase的意思是,把我的提交先放在一边,然后把main最新的修改拿过来,接着在这个最新的修改基础上,再尝试把我的修改弄回去。
如果遇到了别人更新的情况,因为我们做了这个rebase
所以我们所以我们push的时候需要加上git push -f origin master
。
远程仓库代码分支合并
这个过程我们叫做pull request
,我们形式上认为这个分支是属于项目的,不属于任何个人。在git上这个操作是非常简单的,我们称之为Squash and merge
。就是我们把这个分支上的所有改变合并成一个commit
然后把这个commit
放到我的main branch
上。在之后,一般情况下我们就会把这个远端的branch
给删掉,但是远端的删除以后本地的还有,这个时候我们需要把这个本地删除掉,我们使用命令:git branch -D my-feature
,最后,我们再把远端的仓库再次Pull一次,这个时候我们的本地和远程的仓库代码就又一模一样了。