探索 JetBrains 里 git pull
的便捷体验
git pull
的默认行为实际上是执行 git fetch
加上 git merge
,但这仅在需要合并的情况下发生
如果远程分支的更新与你本地分支的提交没有冲突, GoLand 在执行 git pull
时,会直接快进合并(fast-forward merge),git pull
会表现为直接更新 HEAD 到远程分支的最新提交,而不会创建一个额外的合并提交
所以你不会看到诸如此类的 commit:Merge remote-tracking branch 'origin/feat-v2.32' into feat-v2.32
你也可以在命令行中直接执行快进合并:
# 拉取远程更新
git fetch origin
# 执行快进合并,如果无法快进合并,就报错
git merge --ff-only origin/feat-v2.32
相反,如果本地代码和远程代码存在冲突或不同步的提交时,GoLand 会像常规的 git pull
操作一样,先执行 git fetch
然后再 git merge
,并会提示用户解决冲突
GoLand 在执行 git merge
操作发生冲突后,通常有 3 个操作步骤:
# 执行合并,遇到冲突会停止
git merge origin/feat_v2.32_1128
# 开发介入,解决冲突...
# 标记已解决的冲突文件
git add <resolved-files>
# 提交合并,生成合并提交
git commit
解析:
git merge
:尝试合并目标分支。如果存在冲突,它会标记冲突文件git add
:标记已解决的冲突文件git commit
:提交合并,生成合并提交。 在这一步里,Git 会自动生成合并提交消息,类似Merge remote-tracking branch 'origin/feat_v2.32_1128' into feat_v2.32_1128