我已经完成了至关多的工做(“你的分支在37次提交以前超过了'origin / master'。”)这真的应该进入本身的分支而不是master
。 这些提交只存在于个人本地机器上,并无被推送到origin
,但状况有点复杂,由于其余开发人员一直在推进origin/master
,我已经取消了这些更改。 git
如何追溯将个人37个本地提交移动到新分支? 根据文档,彷佛git rebase --onto my-new-branch master
或...origin/master
应该这样作,但二者都只是给我错误“致命:须要单个修订”。 man git-rebase
只字未提提供修订rebase
及其例子不这样作,因此我不知道如何解决这个错误。 app
(请注意,这不是 将现有的,未完成的工做移动到Git中的新分支或如何将个人本地未提交的更改合并到另外一个Git分支中的重复?由于这些问题涉及本地工做树中未提交的更改,而不是具备的更改已在当地承诺。) fetch
关于什么: spa
git reset
在开始进行更改以前git reset
为上一次提交。 git pull
从新拉出你重置时丢弃的远程更改。 或者,当您尝试从新合并分支时,这会爆炸吗? code
或者,在您提交错误的分支后,执行如下步骤: 开发
git log
git diff {previous to last commit} {latest commit} > your_changes.patch
git reset --hard origin/{your current branch}
git checkout -b {new branch}
git apply your_changes.patch
我能够想象第一步和第二步有一个更简单的方法。 rem
另外一种方法假设branch1 - 是具备提交的更改branch2的分支 - 是指望的分支 文档
git fetch && git checkout branch1 git log
选择您须要移动的提交ID get
git fetch && git checkout branch2 git cherry-pick commit_id_first..commit_id_last git push
如今从初始分支恢复未删除的提交 it
git fetch && git checkout branch1 git reset --soft HEAD~1
若是你的提交次数不多而你不在意这些提交是否合并为一个mega-commit,那么这种方法效果不错,并不像git rebase
那样可怕:
unstage文件(用提交#替换1)
git reset --soft HEAD~1
建立一个新的分支
git checkout -b NewBranchName
添加更改
git add -A
提交
git commit -m "Whatever"
对我来讲这是最好的方式:
git fetch
git branch my-changes
并推送到远程 git master -u upstream-branch remotes/origin/my-changes
git branch master --set-upstream-to remotes/origin/master