OK,Taoye交给妹妹的任务已经完成了,于是就兴奋的出去玩耍了。毕竟这篇论文是属于Taoye的,所以还是需要认真的完成,自然花费的时间也就更多了。经历了一晚上通宵的时间,终于是顺利完成了part2部分的内容,于是屁颠屁颠的将论文提交至远程仓库:
1# Taoye的操作2$ git checkout dev
3$ vim paper.txt
4# 在paper.txt添加一句:taoye have finished the part2
5$ git add paper.txt
6$ git commit -m "taoye have finished the part2" paper.txt
7$ git push origin dev
而就在Taoye推送论文到远程仓库的时候,由于自己推送内容与妹妹推送的内容不一致,所以导致推送失败。我们通过Git给出的提示信息可以知道,要想解决这个冲突,首先需要通过pull命令将最新的提交拉取下来,然后与本地合并,解决冲突之后再推送到远程仓库。为此,Taoye立马执行了pull命令:
1$ git pull而在执行pull命令的时候,糟糕的问题又接踵而至了,Git提示说:There is no tracking information for the current branch.,也就是说本地的分支与远程没有建立链接。对此,我们可以建立链接后再执行pull命令:
1$ git branch --set-upstream-to=origin/dev dev2$ git pull
虽然可以执行pull命令,但是会出现冲突提示,所以我们需要首先手动解决冲突,解决的方式和上节中一样:对paper.txt文件进行编辑,然后提交并推送至远程仓库。所以,Taoye对paper.txt文件进行编辑之后,内容如下:
1taoye have finished the part12taoye have finished the part2
编辑好后,将文件保存并推送至远程仓库:
1$ git add paper.txt2$ git commit -m "finished the part1 and part2" paper.txt
3$ git push origin dev
所以,在多人协作工作时我们一般准守如下过程:
完成任务后首先使用git push origin xxx推送至远程仓库
如果推送失败,则需要执行git pull命令将最新的提交拉取下来
如果拉取失败,则可能需要建立连接,所以执行git branch --set-upstream-to=origin/xxx xxx命令
解决之后,再次执行git pull命令尝试拉取最新提交
此时,我们需要对冲突文件进行修改,等到修改完成之后,将文件推送至远程仓库
六、标签管理在上面的内容中,我们有介绍过,可以根据版本号(很长的字符串)来实现任意版本之间的穿越。但是通过这种较长字符串版本号的形式对用户并不是特别友好,看的脑阔有点疼。所以我们一般可以给每一个版本贴上一个标签,并且可以通过这个标签来定位任意的版本,从而更加容易的实现版本穿越等需求。
在这,我们也可以将标签看做是版本号的一个别名,使用标签就相当于使用版本号,两者的作用是等价的。如果有使用过Docker的话,应该会知道,在Docker中,我们每创建一个容器,Docker都会分配一个容器id以便于我们定位对应的容器,而我们自己也可以为每一个容器定义一个别名。我们在使用一系列的Docker命令对容器进行操作的时候,既可以通过容器id,也可以通过别名的形式来进行操作。
Git中,我们主要是采用tag命令来管理标签,由于标签比较的简单,这里就不一一讲解了,与标签相关的命令主要有以下一些:
1$ git tag # 查看所有标签2$ git tag v1.0 # 没有指定版本,则默认给当前版本打标签
3# 查看各个版本信息(版本号)
4$ git reflog paper.txt | git log --pretty=oneline paper.txt
5$ git tag v0.9 a35d6b # 根据版本号来打标签
6# 打标签的同时,给标签添上相应的说明
7$ git tag -a v0.1 -m "version 0.1 released" a35d6b
8$ git show v1.0 # 查看对应的标签信息
9$ git tag -d v0.9 # 删除标签
10
11$ git reset --hard v0.9 # 根据标签实现版本穿越
总结