git 更新和冲突解决简单流程如下:
流程如下:
1.0) 建立分支branch1并切换过去
git checkout -b branch1
git branch #查看是否顺利切换过去
1.1)在branch1下修改文件后添加并递交到缓存区
递交前可使用git status查看哪些文件作了更新。
以上命令打印出的提示信息:
# On branch branch1
# Changes not staged for commit:
# (use "git add <file> ..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: demo_top.v
以上提示信息说明了:
a)当前所在分支为branch1
b) 提示demo_top.v 被修改了。可以使用git add命令提交修改。或使用"git checkout --
demo_top.v"命令放弃修改,即恢复回修改前的内容。
确定修改后递交更新:
git add 文件名
git commit 文件名 -m “注释说明”
1.2)切换回master
git checkout master
git branch
1.3) 从git更新,其他团队成员可能对同一个文件的相同行作了更新,从而可能在以下1.4步产生冲突
git pull
使用git pull的作用:
- 获取最新的数据
- 发现冲突,并和其他团队成员沟通可能存在哪些问题,经协商后解决冲突
假定我们先不做git pull,而是先做1.4的git merge branch1,则有很大几率报出以下错误:
fatal: no commit specified and merge.defaulttoupstream not set.
解决办法就是严格遵循先1.3 后1.4的顺序。
1.4) git merge branch1 或git merge --no-ff branch1
提示信息:
Auto-merging design/rtl/demo_top.v
CONFLICT (content): Merge conflict in design/rtl/demo_top.v
查看文件demo_top.v, 发现标注了冲突行。
建议使用git merge --no-ff branch1 #即保留分支痕迹,no-ff表示no fast forward,即在删
除分支后,仍保留修改信息。所谓的fast forward,即直接修改Master的HEAD指针,未修改整合master和branch1分支,故速度很快,但缺点是删除branch1时无法保留branch1的修改信息。
1.5) 仅在master分支下改掉文件中的冲突,并重新递交到master分支的缓存区。
在master 分支,修改demo_top.v, 添加并递交到缓存区
git add demo_top.v
git commit demo_top.v -m "master conflict correction"
提示信息:
fatal: cannot do a partial commit during a merge
解决方法:
git commit demo_top.v -i -m "master conflict correction" #即独立递交demo_top.v
或
git commit -a -m "master conflict correction"
建议挨个确认冲突,独立递交每一个修改
不需要在branch1下修改冲突并递交。原因为:在master下已通过git merge合并了branch1下的修改,而且合并后,可删除branch1。
1.6)push到远程,保证其他团队成员可获得最新的修改。
git push origin master #若第一次push,使用git push -u origin master