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

时间:2016-03-16 10:10:17

标签: git github version-control amend

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

然后我创建了一个新的本地分支来处理其他事情,但意识到我错过了原始提交的内容。我在新的分支机构进行了更改。请问git commit --amend工作,还是我需要重新提交?我正确地假设git commit --amend只是修改了我在新本地分支中的新文件中的git上的文件

2 个答案:

答案 0 :(得分:1)

您当前的提交将修改当前分支的更改。

答案 1 :(得分:1)

分支是这里的“问题”

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

  • 提交大师
  • 将分支机构切换为“新本地分支机构”
  • 在那里进行更改

意味着如果你进行git commit,它会在“new local branch”上添加一个新节点,甚至不会触及master。

选项1:主分支上的git commit --amend

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

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

选项2:主分支上的git commit

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

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

选项3:git提交“新本地分支”和樱桃挑选和壁球

// 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然后进行所有更改并提交。

如果原始提交中的某些内容真的很糟糕/有害,我只会使用它。