如果我想更新我的本地分支,请说 master
,到远程分支gitlab/master
,我看到两个选项:
- 我可以使用快进 merge 将本地分支与远程分支 merge 。
- 我可以使用重置将我的分支移动到远程分支的位置。
第一个操作可以在我的SmartGit GUI中通过右键单击来实现:merge
。后一种操作可以通过将本地分支标记拖动到新位置来实现。
git merge --ff <commit>
之间有任何技术差异吗?和git reset <commit> --mixed
?
我承认重置也可以用于将本地分支移动到另一个分支,这不是快进的方式。
最佳答案
如果 merge 解析为快进,则应该没有差异,但如果情况并非如此:
- 如果您使用
git merge
,您将拥有 merge 提交以及来自两个分支的所有提交。 - 如果您使用
git reset
,您将只有来自gitlab/master
的提交,而没有 merge 提交。gitlab/master
中缺少的master
提交将被取消提交(重置),但其内容将出现在工作目录中。
您可以自己尝试一下,有以下两种场景:
(初始化,常见两种场景,我们使用master
作为gitlab/master
和branch1
作为master
)
# Common commit
git init
echo a > a; git add .; git commit -m"a"
# Commit on branch1
git checkout -b branch1
git init
echo b > b; git add .; git commit -m"b"
# Second commit on master
git checkout master~1
echo c > c; git add .; git commit -m"c"
( merge 场景)
git checkout branch1
git merge master
(重置场景)
git checkout branch1
git reset master
另请注意,选项 --ff
和 --mixed
都是默认选项,可以省略。
关于git - git merge --ff <commit> 和 git reset <commit> --mixed 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46758289/