2

我最近将一个文件提交到我工作存储库的主分支。

然后我创建了一个新的本地分支来处理其他事情,但意识到我在原始提交中遗漏了一些东西。我在新分支中进行了更改。git commit --amend 会起作用,还是我需要重新提交?我是否正确假设 git commit --amend 只是从我的新本地分支中的新文件修改 git 上的文件

4

1 回答 1

1

分支是这里的“问题”

修改仍在提交 - 它仍然发生在同一个分支上,所以:

  • 提交主
  • 将分支切换到“新本地分支”
  • 在那里进行更改

意味着如果您执行 git commit,它会在“新本地分支”上添加一个新节点,甚至不会触及主节点。

选项 1: git commit --amend 在 master 分支上

$ git checkout master
// apply changes here
$ git commit --amend

这会创建新的提交替换 master 分支的当前提示(很可能是您之前在那里所做的提交,除非您或其他人已经在那里工作,之前的提交被推送等)。

选项 2:主分支上的 git commit

$ git checkout master
// apply changes here
$ git commit -m "New commit, new commit message"

不那么优雅。但如果你推?很有魅力。

选项 3:“新本地分支”上的 git commit 和樱桃采摘和壁球

// changes applied on local branch creating commit with SOME_SHA
$ git checkout master
$ git cherry-pick "new local branch name here"

这将应用由“新本地分支”尖端的提交引入的更改。如果分支太不同,您可能会遇到冲突。

$ git rebase -i

在这里,您需要将提交压缩为一个。仅当您没有推动更改时才这样做!

如果你问我,这有点过头了。:-)

“哦不!我推了!” 选项

选项 2,或者...,git revert SHA-of-original-commit然后进行所有更改并提交。

I'd only use it if something in that original commit was actually bad/harmful.

于 2016-04-18T18:36:15.647 回答