我已經完成了至關多的工做(「你的分支在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