今天总结一下自己在实际工作项目中搭配git和gitee代码托管平台完成日常工作流的开发。
第一步
每天早上上班需要切到主分支上拉取一下最新的代码。
注意:这里有一个需要特别关心的点就是如果你工作的分支有未完成的修改(也就是昨天晚上你工作的代码没修改完,你忘了推送上去)你是无法切换分支的
这里着重讲一下这种情况如何正确处理
1.下图可以看到我们现在修改了一部分代码,但是还未修改完,不想发一个commit
到master
分支上
2.现在我仓库上游有代码更新了,我需要去切换到master
分支上拉去最新的代码。
以后但是由于你没有commit
,所以git
不允许你切换分支因为你的代码并没有完成,如果你commit
的话,会多一条无用的记录,并且commit -m
的时候信息也不知道如何填写合适。
这时候我会用到git stash
,这里我们不过多讲解stash
的用法,它是用来代替commit
的,相当于把你的改动暂时放到了和暂存区同级别的一个地方。
3.让我们git status
看一下哪些文件被修改了
就是这个红色的文件被我们修改了,导致我们无法切换到主分支。接下来让我们git stash
一下试试。然后再执行
可以看到我们的修改好像消失了一样,这时候我们就可以切换到master上了,执行git pull
,同步一下最新的代码。
ok,这时候我们master
分支的代码是最新的了,但是我们开发是在分支上开发的呀,text
分支代码还不是最新的。这时候我们就需要让text
分支和master
分支的代码同步。
4.这里切回text
分支。
在实际开发中我会选择git rebase master
这个命令来同步最新的代码,因为使用git merge master
会造成一次特殊的commit
,意思就是master
分支上拉下来和你不同的那些代码git
会自动生成一次commit
记录来帮你记忆这次代码的更改。但往往这个commit
是无用的,它会再你代码改好以后,等真正想push
代码的时候,这条commit
会跟着你改代码时候“真正的”那条commit
一起推送过去。
所以我们就选用git rebase
,在这里只简单讲解一下,具体意思可以百度搜寻更详细的答案。它真正让人感到和merge
的不同之处就是不会产生多余的那条commit
5.执行一下git rebase
看看
好像不对劲,有错误?先采用下面这个回答的方式解决,至于原因这个我之前也没研究过,待我以后搞清楚再来补充
6.执行完git fetch origin
以后,我们在text
分支上执行git rebase master
命令。
可以看到现在我们的代码就是上游仓库,你的同事所有提交完以后的最新代码。
但是别忘了,你修改的代码还在stash
仓库里放着。
我们只需执行stash apply
,就可以拿下来所有add
以后的代码了。
熟悉的那个文件就又出现了。注意!!!!!!这时候可能会引起冲突。道理很简单因为你现在更改的代码,有可能你同事也改过了,这时候git
就不知道该才用谁的代码了,所以这时候git
就会提示你优先更改冲突。
此时修改冲突即可。