我最近将一个文件提交到我工作存储库的主分支。
然后我创建了一个新的本地分支来处理其他事情,但意识到我在原始提交中遗漏了一些东西。我在新分支中进行了更改。git commit --amend 会起作用,还是我需要重新提交?我是否正确假设 git commit --amend 只是从我的新本地分支中的新文件修改 git 上的文件
我最近将一个文件提交到我工作存储库的主分支。
然后我创建了一个新的本地分支来处理其他事情,但意识到我在原始提交中遗漏了一些东西。我在新分支中进行了更改。git commit --amend 会起作用,还是我需要重新提交?我是否正确假设 git commit --amend 只是从我的新本地分支中的新文件修改 git 上的文件
修改仍在提交 - 它仍然发生在同一个分支上,所以:
意味着如果您执行 git commit,它会在“新本地分支”上添加一个新节点,甚至不会触及主节点。
$ git checkout master
// apply changes here
$ git commit --amend
这会创建新的提交替换 master 分支的当前提示(很可能是您之前在那里所做的提交,除非您或其他人已经在那里工作,之前的提交被推送等)。
$ git checkout master
// apply changes here
$ git commit -m "New commit, new commit message"
不那么优雅。但如果你推?很有魅力。
// 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.