git reset --soft HEAD

时间:2014-02-27 20:06:02

标签: git github

我在拉取请求中有一堆我不想要的提交,但我不想在以前的提交中放弃我的工作。将git重置--soft HEAD重置我的提交到开头?

3 个答案:

答案 0 :(得分:0)

不,它不会。

重置会将HEAD移动到指定的提交。将HEAD移至HEAD无效。

您可以使用交互式rebase(git rebase -i)对提交进行重新排序,然后您可以推送特定提交(包括之前的所有提交,但不包括之后的提交),而不是完整的分支到github。

答案 1 :(得分:0)

没有。 git reset --soft HEAD绝对不会做任何事情。

只需在要包含在拉取请求中的最后一次提交中创建一个新分支并推送它。

git checkout -b for-github <commit-id>
git push origin for-github

假设远程origin指向GitHub并且您确实想要调用该分支for-github。这不太可能。

您的master分行将保留所有其他更改。

答案 2 :(得分:0)

这可能已经晚了,但你应该考虑压缩你的提交。以下命令将列出您最近的4次提交。

git rebase -i HEAD~4

然后,您将看到一个类似于此的列表

pick 01d1124 Adding license
pick 6340aaa Moving license into its own file
pick ebfd367 Jekyll has become self-aware.
pick 30e0ccb Changed the tagline in the binary, too.

# Rebase 60709da..30e0ccb onto 60709da
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

然后将pick(或squash)的fixup替换为您要从历史记录中删除的提交(不删除更改)并保存。你的提交应该被压制成一个。

来源:

http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html

https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History