簡體   English   中英

“git rebase origin”與“git rebase origin / master”

[英]“git rebase origin” vs.“git rebase origin/master”

我沒有得到git rebase origingit rebase origin/master之間的區別。 在我的情況下,我克隆了兩次git存儲庫。 在第一個克隆中我必須使用git rebase origin而在另一個克隆中我必須使用git rebase origin/master

一個例子: http//paste.dennis-boldt.de/2011/05/11/git-rebase

git rebase origin表示“來自跟蹤origin git rebase origin/master ”,而git rebase origin/master表示“來自分支master of origin ”的rebase

你必須在~/Desktop/test有一個跟蹤分支,這意味着git rebase origin知道要使用哪個origin分支。 如果不存在跟蹤分支(在~/Desktop/fallstudie的情況下),git不知道它必須采用哪個origin分支,並且失敗。

要解決此問題,您可以使用以下命令創建分支軌道origin/master

git branch --set-upstream-to=origin/master 

或者,如果master不是當前簽出的分支:

git branch --set-upstream-to=origin/master master

這是一個更好的選擇:

git remote set-head -a origin

從文檔:

使用-a,查詢遠程以確定其HEAD,然后將$ GIT_DIR / remotes // HEAD設置為同一分支。 例如,如果遠程HEAD指向下一個,“git remote set-head origin -a”將$ GIT_DIR / refs / remotes / origin / HEAD設置為refs / remotes / origin / next。 只有當refs / remotes / origin / next已經存在時,這才有效; 如果不是,它必須先取出。

這實際上已經存在了很長一段時間(自v1.6.3起); 不確定我是怎么錯過它的!

您可以在[.git \\ refs \\ _dototes \\ origin]下創建一個名為“HEAD”的新文件,並將內容“ref:refs / remotes / origin / master”放入其中。 這應該可以解決您的問題。

似乎從空的回購中克隆會導致這種情況。 也許空的repos沒有HEAD,因為不存在提交對象。

你可以使用

git log --remotes --branches --oneline --decorate

看看每個存儲庫之間的區別,而“問題”則沒有“origin / HEAD”

編輯:使用命令行提供方法
您也可以使用git命令行來執行此操作,它們具有相同的結果

git symbolic-ref refs / remotes / origin / HEAD refs / remotes / origin / master

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM