今天总结一下自己在实际工作项目中搭配git和gitee代码托管平台完成日常工作流的开发。

第一步

每天早上上班需要切到主分支上拉取一下最新的代码。

image.png

注意:这里有一个需要特别关心的点就是如果你工作的分支有未完成的修改(也就是昨天晚上你工作的代码没修改完,你忘了推送上去)你是无法切换分支的

这里着重讲一下这种情况如何正确处理

1.下图可以看到我们现在修改了一部分代码,但是还未修改完,不想发一个commitmaster分支上

image.png

2.现在我仓库上游有代码更新了,我需要去切换到master分支上拉去最新的代码。

image.png

以后但是由于你没有commit,所以git不允许你切换分支因为你的代码并没有完成,如果你commit的话,会多一条无用的记录,并且commit -m的时候信息也不知道如何填写合适。

这时候我会用到git stash,这里我们不过多讲解stash的用法,它是用来代替commit的,相当于把你的改动暂时放到了和暂存区同级别的一个地方。

image.png

3.让我们git status看一下哪些文件被修改了

image.png

就是这个红色的文件被我们修改了,导致我们无法切换到主分支。接下来让我们git stash一下试试。然后再执行

image.png

可以看到我们的修改好像消失了一样,这时候我们就可以切换到master上了,执行git pull,同步一下最新的代码。

image.png

ok,这时候我们master分支的代码是最新的了,但是我们开发是在分支上开发的呀,text分支代码还不是最新的。这时候我们就需要让text分支和master分支的代码同步。

4.这里切回text分支。

image.png

在实际开发中我会选择git rebase master这个命令来同步最新的代码,因为使用git merge master会造成一次特殊的commit,意思就是master分支上拉下来和你不同的那些代码git会自动生成一次commit记录来帮你记忆这次代码的更改。但往往这个commit是无用的,它会再你代码改好以后,等真正想push代码的时候,这条commit会跟着你改代码时候“真正的”那条commit一起推送过去。

所以我们就选用git rebase,在这里只简单讲解一下,具体意思可以百度搜寻更详细的答案。它真正让人感到和merge的不同之处就是不会产生多余的那条commit

5.执行一下git rebase看看

image.png

好像不对劲,有错误?先采用下面这个回答的方式解决,至于原因这个我之前也没研究过,待我以后搞清楚再来补充

image.png

6.执行完git fetch origin以后,我们在text分支上执行git rebase master命令。

image.png

可以看到现在我们的代码就是上游仓库,你的同事所有提交完以后的最新代码。

但是别忘了,你修改的代码还在stash仓库里放着。

我们只需执行stash apply,就可以拿下来所有add以后的代码了。

image.png

熟悉的那个文件就又出现了。注意!!!!!!这时候可能会引起冲突。道理很简单因为你现在更改的代码,有可能你同事也改过了,这时候git就不知道该才用谁的代码了,所以这时候git就会提示你优先更改冲突。

此时修改冲突即可。


FFF方
451 声望12 粉丝