Git 有没有一种方法可以从一个分支中删除提交并将其放到另一个分支中?
我犯了一个错误,无意中向master提交了一段时间,现在我意识到了我的错误,我想将这些提交从master转移到我自己的暂存分支中Git 有没有一种方法可以从一个分支中删除提交并将其放到另一个分支中?,git,Git,我犯了一个错误,无意中向master提交了一段时间,现在我意识到了我的错误,我想将这些提交从master转移到我自己的暂存分支中 这是可能的,是使用git还是我必须手动移动文件?如果您的错误导致master当前看起来像: A->B->C->D 您只需将C和D移动到一个新分支,这非常简单: $ git checkout master # move to D $ git branch new-branch # create new branch at D $ gi
这是可能的,是使用git还是我必须手动移动文件?如果您的错误导致master当前看起来像:
A->B->C->D
您只需将C
和D
移动到一个新分支,这非常简单:
$ git checkout master # move to D
$ git branch new-branch # create new branch at D
$ git reset B-sha1 # reset master to B
$ git checkout new-branch # continue working on new-branch
根据
C
和D
引入的更改,这可能无法正常工作。例如,如果C
引入了一个新文件,git可能不会让您签出新分支,因为担心会覆盖该文件。(当master在B
签出时,git认为该文件未被跟踪。)您可以在重置后添加git clean-xdf
,或者根据具体情况执行reset--hard
。如果您的错误导致master当前看起来像:
A->B->C->D
您只需将C
和D
移动到一个新分支,这非常简单:
$ git checkout master # move to D
$ git branch new-branch # create new branch at D
$ git reset B-sha1 # reset master to B
$ git checkout new-branch # continue working on new-branch
根据
C
和D
引入的更改,这可能无法正常工作。例如,如果C
引入了一个新文件,git可能不会让您签出新分支,因为担心会覆盖该文件。(当master在B
签出时,git认为该文件未被跟踪。)您可以在重置后添加git clean-xdf
,或者根据情况执行reset--hard
。假设您错误地向master提交了5次提交,则移动提交:
git checkout master
git branch temp
git rebase --onto yourbranch temp~5 temp
更新分支:
git push . temp:yourbranch
git push . master~5:master -f
更新您的远程主机:
git push origin master -f
告诉您的同事您做了什么,以便他们可以根据您的更正调整主控形状。假设您错误地向主控形状提交了5次,请移动提交:
git checkout master
git branch temp
git rebase --onto yourbranch temp~5 temp
更新分支:
git push . temp:yourbranch
git push . master~5:master -f
更新您的远程主机:
git push origin master -f
告诉你的同事你做了什么,这样他们就可以根据你的纠正来调整他们的主数据。可能重复的可能重复的可能重复的,所以这是在将内容移动到另一个分支,并在那里继续开发?这能让我也打捞遥控器的主人吗?@Alex如果你已经推到遥控器上,你还有更多的工作要做。如果您知道没有其他人从该远程设备提取数据,您可以在那里执行更新引用,但如果您不能保证需要添加一些
revert
提交。如果你认为aSo正在做的是将事情转移到另一个分支,并在那里继续发展?这能让我也打捞遥控器的主人吗?@Alex如果你已经推到遥控器上,你还有更多的工作要做。如果您知道没有其他人从该远程设备提取数据,您可以在那里执行更新引用,但如果您不能保证需要添加一些revert
提交。如果你有