前言
一本秘籍闯宇宙,那么这边秘籍是什么呢?那就是git秘籍
,初学者对于git
只知道git add .
、 git commit -m 'commit message'
、git push origin main
这三个招式吧!其实git的招式还有很多,足够让你去探索一番!让我们掌握这本秘籍闯宇宙去吧!
先送大家一张git命令大全吧! git通用流程图
git秘籍核心--多人协作冲突
1.什么是Git多人协同开发
当开发一个大型项目时通常都是许多人进行合作,每个人负责项目的一部分,Git是实现多人协同开发最常见的工具,但是对于刚接触Git的人来说,多人协同开发会遇见很多问题,这篇博客的内容主要就是为了给出多人协同开发的正确步骤,并对这个过程中遇到的问题进行解释和解决。
2.多人协作开发的准备工作
- 新建一个仓库
- 创建主分支,即上传项目的初始内容到master分支
- 团队内成员进行分工(各个成员之间负责的内容用尽量不冲突)
3.开发阶段
- 每个成员将远程仓库主(master)分支的内容clone下来
- 按照分工进行自己负责的工作
4.提交阶段(冲突产生阶段)
(1)、每个成员在完成自己的工作后,首先需要注意远程仓库的变化
(2)、获取远程仓库的最新版本与本地进行合并
合并时会产生冲突问题:合并冲突
思考:那么上面3种情况中哪种会产生冲突呢?
下面将揭晓答案:
(3)、合并过后,就可以上传(git push)到远程仓库自己的分支
5.审核阶段
6.冲突解决
1.冲突的类型
合并时使用git rebase 和 git merge的区别
2.变基(rebase)
git pull 与 git pull --rebase
-
git pull = git fetch + git merge
-
git pull --rebase = git fetch + git rebase
冲突1
冲突2
多人基于同一个远程分支开发的时候,如果想要顺利 push 又不自动生成 merge commit,建议在每次提交都按照如下顺序操作:
//git stash 能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
git stash
git pull --rebase
git push
//git stash p 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。将暂存文件取出,与pull的文件对比
git stash p
3.回滚(reset与revert)
git reset(重置)
其中:A
和 B
是正常提交,而C
和 D
是错误提交。现在,我们想把C
和 D
回退掉。而此时,HEAD
指针指向 D
提交(5lk4er)
。我们只需将 HEAD
指针移动到 B
提交(a0fvf8)
,就可以达到目的。
那么命令是什么呢?那就是git reset
命令
git reset --hard a0fvf8
命令运行之后,HEAD
指针就会移动到B
提交下
而这个时候,远程仓库的 HEAD
指针依然不变,仍在 D
提交上。所以,如果直接使用 git push
命令的话,将无法将更改推到远程仓库。此时,只能使用 -f
选项将提交强制推到远程仓库
git push -f
采用这种方式回退代码的弊端显而易见,那就是会使 HEAD
指针往回移动,从而会失去之后的提交信息。将来如果突然发现,C
和 D
是多么绝妙的想法,可它们已经早就消失在历史的长河里了。
git revert(撤销)
git revert
的作用通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD
指针是指向这个新生成的版本,而不是目标版本。
使用 git revert
命令来实现上述例子的话,我们可以这样做:先 revert D
,再 revert C
(有多个提交需要回退的话需要由新到旧进行 revert
):
// 1 revert D
git revert 5lk4er
// 2 revert C
git revert 76sdeb
那么就会生成两个新的提交:D'
和C'
这里只有两个提交需要 revert
,我们可以一个个回退。但如果有几十个呢?一个个回退肯定效率太低而且容易出错。我们可以使用以下方法进行批量回退:
git revert OLDER_COMMIT^..NEWER_COMMIT
这时,错误的提交 C
和 D
依然保留,将来进行甩锅的时候也有依可循。而且,这样操作的话HEAD
指针是往后移动的,可以直接使用 git push
命令推送到远程仓库里。而这种做法,正是企业所鼓励的。
git指令练习网站
可以让我了解每个命令执行后发生了什么的网站(感兴趣的可以去玩一玩) Learn Git Branching,练习git命令的网站
网站页面显示 比如:练习一道题
介绍git rebase
未执行 git rebase main
执行 git rebase main
未执行 git rebase bugFix
执行 git rebase bugFix
题目问题操作提示 答题界面介绍 答案 通过输入命令我们可以观察到右边的树状图都会发生改变,可以让我们更好的理解git命令
下面的大家可以根据答案去输入git命令去尝试,我就不一一为大家解答啦!有疑问可以在评论区留言!
//新建并切换到bugFix分支
git checkout -b bugFix
//提交一次
git commit
//切换到main分支
git checkout main
//提交一次
git commit
//再次切换到bugFix分支
git checkout bugFix
//rebase 到 main
git rebase main
总结
git多人协作也是第一次去了解,毕竟还是学生没有在工作中真正的遇到这些问题。如果有问题的地方,麻烦大佬们帮忙指出,我及时修改,在此先提前感谢各位大佬们!
上面有些图是盗来的,如果有侵权请联系我!
本人大三正在学习前端!
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!