混帐没有自动提交
有没有可能做一个“混帐合并”,但没有提交?
“man git merge”这样说:
With --no-commit perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing.
但是当我尝试使用git合并–no-commit它仍然自动提交。 以下是我所做的:
$> ~/git/testrepo$ git checkout master Switched to branch 'master' $> ~/git/testrepo$ git branch * master v1.0 $> ~/git/testrepo$ git merge --no-commit v1.0 Updating c0c9fd2..18fa02c Fast-forward file1 | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) $> ~/git/testrepo$ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # nothing to commit (working directory clean)
随后的“git log”揭示了v1.0分支合并到master的所有提交。
注意合并时的输出 – 这是说Fast Forward
在这种情况下,你想要做的是:
git merge v1.0 --no-commit --no-ff
你在这里误解了合并的含义,–no-commit阻止了MERGE COMMIT的发生,只有当你合并两个发散的分支历史时才会发生这种情况。 在你的例子中,情况并非如此,因为git指示它是一个“快进”合并,然后git只按顺序应用已经存在于分支上的提交。
如果您只想提交一个提交中的所有更改,就好像您自己input了一样,–squash也会执行
$ git merge --squash v1.0 $ git commit
我更喜欢这种方式,所以我不需要记住任何罕见的参数。
git merge branch_name
然后它会说你的分支在#提交前面,你现在可以把这些提交closures,并把它们改成如下的工作:
git reset @~#
例如,如果在合并之后它是1提前提交,使用:
git reset @~1