有什么方法可以模拟git merge
两个分支(当前工作分支和主分支)之间的,而无需进行任何更改?
当我不得不做一个朋友时,我经常有冲突git merge
。有什么办法可以先模拟合并?
有什么方法可以模拟git merge
两个分支(当前工作分支和主分支)之间的,而无需进行任何更改?
当我不得不做一个朋友时,我经常有冲突git merge
。有什么办法可以先模拟合并?
Answers:
在尝试合并之前,我不认为有什么方法可以模拟发生的情况。但是,如果git status
在合并之前确定的输出为空,则继续尝试是非常安全的。如果发生冲突,您可以使用以下方法立即回到以前的状态:
git reset --merge
从git 1.7.4开始,您还可以通过执行以下操作中止合并:
git merge --abort
(正如添加该选项的提交消息所解释的,添加该消息是为了与之保持一致,git rebase --abort
依此类推。)
--no-commit
在我看来,使用起来要容易得多
--no-commit
您仍在更改索引和工作树,但这并不完全是“不做任何更改” :)我的意思是,当人们问这种问题时问题,通常是因为他们不知道查看合并方式的最佳方法是尝试合并,通常是因为他们不知道恢复之前的状态有多么容易如果发现有问题。
git merge --abort
等于git reset --merge
何时MERGE_HEAD
存在”,所以更容易记住的是:)
您可以使用 git merge --no-commit
阻止合并的实际提交,如果您不喜欢合并的方式,只需将其重置为原始标题即可。
如果您绝对不希望完成合并,即使它是快速进行的(按照定义,因此也没有冲突),也可以添加--no-ff
。
git merge --abort
存在-也许你是说git reset --merge
什么?
rebase
没有--abort
for git merge
。
--no-ff
。为了防止ff合并发生。
--no-ff
是相当多的强制性这里,如--no-commit
不停止快进的改变。
如果我想将主题分支上的更改与master进行比较,则发现执行以下操作最简单,最安全:
git checkout master
git checkout -b trial_merge
git merge topic_branch
完成合并后,很容易从母版中看到合并的更改
git diff master
完成后,只需删除trial_merge分支
git checkout master
git branch -D trial_merge
这样,主分支永远不会改变。
git checkout --detach
任何测试。以后,如果您想保留更改,请执行git checkout -b new_branch
。如果您想放弃所做的更改,请签出您想要的任何分支(git checkout master
)。
topic_branch
很大(如果您一开始就遇到这个问题,可能就是这种情况),diff master
如果合并会引起冲突,则输出可能太大而您无法察觉。
我用 :
git merge --ff-only
根据文档:
除非当前HEAD已经是最新的,否则合并将以非零状态退出,否则合并可以作为快进进行解析。
这并不是真正的模拟,因为如果两个分支之间没有冲突,则会进行快速合并。但是在发生冲突的情况下,您会被告知并且什么也不会发生。
我不知道这是否是你的情况,但是您的问题记得我有时我会启动一个功能,我几天来提交,然后将开发合并多次。
在这一点上,我失去了对更改的确切文件的控制权,只有在关闭功能并开发代码后,我才知道它。
在这种情况下,一种很好的方式来知道您进行了哪些修改(不是从合并中进行的其他修改)正在使用Sourcetree。
您必须在基本分支上单击右键,然后选择Diff Against Current
:
然后,如果您将分支合并到基础分支中,则sourcetree将显示所有将被合并的修改。
当然,它不会显示冲突,但是它是合并中的有用工具。