我可以修改从新的本地分支到 master 分支的提交吗?

Can I amend a commit to the master branch from a new local branch?

我最近提交了一个文件到我作品存储库的 master 分支。

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

中的新文件修改 git 上的文件

分店在'the problem'这里

修改仍在进行中 - 它仍然发生在同一个分支上,所以:

  • 提交到 master
  • 将分支切换到 "new local branch"
  • 在那里进行更改

意味着如果你 git 提交,它会在 "new local branch" 上添加一个新节点,甚至不会触及主节点。

选项 1:git 在主分支上提交 --amend

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

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

选项 2:git 在主分支上提交

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

不太优雅。但如果你推?非常有吸引力。

选项 3:git 提交 "new local branch" 和 cherry pick and squash

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

这应用了 "new local branch" 末尾提交引入的更改。如果分支差异太大,您可能会发生冲突。

$ git rebase -i

在这里您需要将提交压缩为一个。仅当您尚未推送更改时才这样做!

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

"Oh no! I pushed!" 选项

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

如果原始提交中的内容实际上是 bad/harmful,我只会使用它。