2017-06-16 42 views
0

所以我們發現自己處於一個遠程分支被提前刪除的情況,我們仍然有我們想要合併和恢復的未完成提交。我最初的想法是簡單地做原開發工作拷貝如下:如何在舊版Git上沒有該選項的git --unset-upstream?

> git checkout local-branch 
> git branch --unset-upstream 
> git push -u origin remote-branch 

但是有問題的開發商發現,這並不工作,因爲他上運行的系統已經安裝的Git的一個特別版本的古並安裝更新的版本是不是一種選擇:

git branch --unset-upstream 
error: unknown option `unset-upstream' 
usage: git branch [options] [-r | -a] [--merged | --no-merged] 
    or: git branch [options] [-l] [-f] <branchname> [<start-point>] 
    or: git branch [options] [-r] (-d | -D) <branchname>... 
    or: git branch [options] (-m | -M) [<oldbranch>] <newbranch> 

幸運的是我們有問題的提交先前已經被推到遠程倉庫,以便與上最新版本的git的另一開發商能夠獲取和將這些提交合併到他們自己的本地分支版本中,從而恢復遠程分支並允許我們把它合併:

> git fetch origin <sha1hash> 
> git checkout local-branch 
> git merge <sha1hash> 
> git branch --unset-upstream 
> git push -u origin remote-branch 

但是它好像應該已經取消設置上游分支在最初的開發方式通過編輯配置或許倉庫裏的文件從而使原開發商以恢復分支。

那麼如何在不使用git branch --unset-upstream的情況下刪除上游分支?

回答

0

採用分支master例如,運行git config --local -e並刪除以下行:

[branch "master"] 
     remote = origin 
     merge = refs/heads/master 

或者只是運行git config --remove-section branch.master如果支持的話。

+1

可能有更多'branch.master。*'項目,所以只刪除遠程和合並設置會更安全。 – torek