git的使用-协作篇

目录

1 多用户

1.1 Josh

1.2 aimxu

2 删除分支

3 冲突

4 最后

5 附录


git和其他版本管理软件一样,最令人兴奋的一点是可以实现多人协作。

多个人共同完成一个项目,非常容易起冲突,熟练使用git各种功能可以有效避免冲突,也能进一步提高工作效率。

下面我们就来看一下git如何实现多人协作。

 

1 多用户

1.1 Josh

现在假设来了一个新同事 Josh ,共同完成这个任务。

如果想要加入项目,必须先下载原有的代码(假设他的电脑已经配置好了git)

$ git clone git@github.com:aimxu/testgit.git

代码下载下来,就可以开始项目了,而他分到的任务是添加一个减法功能。于是他添加了一个新的分支,叫 feature2。

编写代码

然后就可以上传了,根据之前学习的命令,一步一步走,可能比较着急,没有管对不对,就直接上传到远程仓库

git add .
git commit -m "add substract"
git push -u origin feature2

这时候上传的是feature2

这时候在远程仓库中,尽管没有看到添加的减法功能,注意到了一点变化,没错,多一个branch

我们可以看到两个branch中,feature2是活动的branch,这个不难理解,因为我们没有上传的时候没有切换branch到master,这样做会不是有问题呢?

1.2 aimxu

这个问题其实不大,因为如果 feature2 是 Josh 自己维护的,其他人一般不会用到 feature2 这个分支,但是不是还有什么问题?

没错,没有合并分支,master 分支还是没有减法功能,因此如果 Josh 想让其他同事用到自己的功能,必须合并分支

从上面的图可以看到原来的用户aimxu,根本没有看到新的减法功能,那没有办法得到 Josh 的工作了吗?其实是可以的(虽然一般不这样做)

git pull origin feature2:feature2

origin:连接的名称

第一个feature2,远程仓库的分支名

第二个feature2,本地仓库的分支名

【注】push也是可以选择分支上传代码

git push -u origin <local_branch>:<remote_branch>

这里的顺序跟pull反过来

可以这样记忆,代码的总是从左到右的

pull(拉)是从远程下载到本地( remote -> local )

push(推)是从本地上传到远程( local -> remote )

 

2 删除分支

这时候,不管是谁已经完成了分支的合并,并删除了远程仓库的分支,只有一个分支master

git push origin --delete feature2

通过origin连接,删除远程仓库的 feature2 分支。

但是突然发现,原来 Josh 写的代码错了。

经管完成了减法操作,但是在主函数中,并没有 #include“dec.h”,这样执行程序肯定是错的

这是 Josh 肯定瑟瑟发抖,自己的错误已经整合到主分支了,很有可能会影响到后面的工作,

不慌,这是只要新建一个原来的分支,如果忘了分支名,可以用 git reflog查看删除了的分支的记录,找到合并前的分支号

reflog是reference log的意思,可以查询和版本相关的历史操作,但是版本号好像有什么不同

没错,版本号特别短,只有7位,其实这里是版本号的前7位,已经可以代表该版本了。

这时回退版本,再新建分支feature2,修改错误,合并上传

git switch -c feature2
# 修改代码
git add .
git commit -m "add substract"
git switch master
git merge freature2
git branch -d feature2
git push

解释一下最后一句

 

3 冲突

在 Josh 为了他的部分焦头烂额的时候,aimxu也接到了新的任务,需要为程序添加一个乘法功能。

老司机二话不说就开干,忙活了两分钟完成该功能。

等一下,是不是有点似曾相识?

没错,还是少了那一句 #include"dec.h",Why????(参考上一节)

此时 Josh 已经完成了修复,但是,但是,aimxu 忘了pull,忘了pull,忘了pull!!!

就push了

git add .
git commit -m "add multiplation"
git push

为了简单起见,没有用新的分支

果不其然,又来了

最后只能乖乖地pull一下,查看hello.c,发现一大堆要改的

红色部分框部分是自己添加的内容,蓝色框部分是别人添加的内容,需要手动整合一下,再上传一次

因此

在修改代码之前,必须先pull,至于什么时候pull,网上有很多参考的文章,可以参考隔壁的一篇文章,讲得还是很有道理的。

4 最后

其实git有很多功能,很多情况,但是总的一句而言,git只是个工具,没有必要把它研究透了,遇到各种情况再好好地分析,学习新的特性就可以了,在最开始,只需要掌握简单,最核心的部分就可以了。

在每次操作前,务必三思,尤其是初学者,经常会因为脑子一热,写错命令,导致代码丢失,遇到这种情况千万不要慌张,捋清楚思路,一步一步的把代码还原回来。在这期间只要不是频繁操作,都有很大的可能性能还原回来的。

所以在最开始务必自己用一个小程序来练手,千万不要把有价值的代码用来练手,否则将会得不偿失。

就简单写到这里吧。有时间的话再添加一些内容。

 

5 附录

git常用命令速查表

GIT CHEAT SHEET (PDF)

链接:https://pan.baidu.com/s/1XgZ81uf3OidNtKHHC6o5yw 
提取码:ckom

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值