[Git] 重学Git三剑客关键总结
Posted 削尖的螺丝刀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Git] 重学Git三剑客关键总结相关的知识,希望对你有一定的参考价值。
核心总结
在团队中使用Git的法则
1:push前一定先pull
2:合并代码必须两人结对
3:合并冲突,非自己的变动保持原样,和自己冲突的代码找相应的代码提交人确认如何解决冲突
4:合并完成后,保证本地能编译能运行再push
5:【 合并到主干的代码必须通过测试,必须通过代码review 】
6:【不同的功能从主干上拉新分支进行开发工作,开发完后确认无误再合并到主干】
7:分支的命名需要加上,拉取人+拉取说明
8:上完线的分支要及时清理
也就是说,从主线打一个分支,然后分支同步本地,以后改的代码都只在分支(本地——>远端)这一条线上做交互,直到这次开发完毕,才合并到主线(切换到主线,merge对应分支到当前主线)上去,如此以往…
比如我这里拉下来的代码目前在master,远端对主线创建了一个feature/branchdev分支
那我就要通过 git checkout -b 命令来针对远端分支建一个同名的本地分支了(origin后面的部分相同,之后push就不用带远端分支名了),那我这里使用的命令就是git checkout -b feature/branchdev remotes/origin/feature/branchdev,可以看到结果入下。
之后在分支改好代码,再checkout main 到主线,然后合并分支再推到主线去就行了。
使用禁忌
-
千万不要用: git push -f —— 这个命令即时不是fastfoward状态也能提交,但是它会把分支上已有的所有提交记录全部清空掉,然后变成当前的一次提交。
-
公共分支(所有人一起维护的),严禁拉到本地通过rebase做变更历史操作,不管是合并还是重写messege,因为其他人在这历史版本上拉的代码,你改了就会出大麻烦,所有人的代码基层都变了。
(PS:对于自己本地多次Commit,还从未push过的,可以做rebase,如果是公共部分拉取下来的,千万不要做rebase)
禁止rebase,如果要求历史提交是线性的,如何做呢?
如果线性对你们团队很重要的话,办法肯定是有的。比如master为集成分支,且要求版本历史为线性,假设在GitHub平台上,首先为master分支设置Branch protection rule(不允许直接push),勾选“Require pull request reviews before merging。
其次,Merge Button选择“Allow squash merging”或者“Allow rebase merging”,不要选“Allow merge commits”。
学习地址: https://time.geekbang.org/course/detail/100021601-75481
其他补充
如果有些文件不想加入版本控制,也不想提交到远端,可以按如下步骤操作:
1.git ls-files查看暂存区内已进行版本控制的文件
2.git rm --cached 〈文件名〉将文件移除版本控制
3.编辑.gitignore文件,将不想加入版本控制的文件写进去,详细方法可参考github上的.gitignore文件。
clone的代码或者新拉取的代码和本地分支是断开的非fastFoward状态,merge的时候报refusing to merge unrelated histories怎么办?
merge执行这个命令
$ git merge --allow-unrelated-histories master
ps: master的名字是你要合并的对象的名字。
同样,有时候pull也会报这个错,pull后执行这个即可。
$git pull origin main–allow-unrelated-histories
ps: main是你远端分支的名字。
可以发现
--allow-unrelated-histories 是一个非常重要的命令,如果远端和本地断开的话就要执行这个。
这里记住一个分支删除的命令,以备不时之需:
- git branch -D 分支名
PS : 本文出自对极客时间 ——
《玩转Git三剑客》
的学习总结,由于之前公司用的都是SVN,对GIT的系统了解甚少,索性在周末看完了这个专栏,如果你也对GIT感兴趣,或者正在追这个专栏,欢迎一起探讨,交流学习!
[ 🎏 nextStation: 重学Git三剑客 ]
以上是关于[Git] 重学Git三剑客关键总结的主要内容,如果未能解决你的问题,请参考以下文章