如何撤消git branch和git commit

时间:2015-12-25 16:07:15

标签: git

我正在使用某个功能而且已经很晚了。我想将我的工作保存到VCS。我应该使用藏匿处但我忘了它。我不想做半完成功能,所以我决定创建新的本地分支并在那里保存我的工作。所以我做了git branch newlocalbranchgit commit -m 'in the middle of task';但后来我意识到,当我将这个本地分支合并到我的官方功能专用分支(带有任务ID)时,无效提交仍会出现在我的功能分支中。我现在想要的是回到过我所在的功能分支,我所做的所有这些变化。然后我会把它们藏起来回家。

2 个答案:

答案 0 :(得分:1)

您可以对分支的分支进行软重置。这样,您将重置指向该分支的分支指针,但保留所有更改。之后,您可以继续处理它,然后创建一个正确的提交。

因此,如果您之前来自master,那么这将是命令:

git reset --soft master

那将是这样的情况:

          master
            ↓
* --- * --- *
             \
              \
               * [in the middle of task]
               ↑
         newlocalbranch

替代方法是继续在分支上工作,直到完成工作,然后修改“在任务中间”提交,以便它包含完整的更改并具有正确的名称。为此你可以做git commit --amend --edit。这将基本上替换“在任务中间”提交一个新的包含来自原始提交的所有更改以及您添加到索引中的任何内容(通常,该命令用于在您忘记某些内容时修复最后一次提交)。之后,您可以将正常的快进合并返回到主服务器上,并且新的优化提交将是历史记录中出现的那个。

答案 1 :(得分:0)

将您的newlocalbranch合并到功能分支并提交已完成的工作后,但在推送之前,您可以squash / fixup提交一个。见git guide on this