web-dev-qa-db-ja.com

「git rebase Origin」と「git rebase Origin / master」

git rebase Origingit rebase Origin/masterの違いはわかりません。私の場合、gitリポジトリを2回クローンしました。最初のクローンではgit rebase Originを使用する必要があり、他のクローンではgit rebase Origin/masterを使用する必要があります。

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

53
Dennis

git rebase Originは「Originの追跡ブランチからリベース」を意味し、git rebase Origin/masterは「masterのブランチOriginからリベース」を意味します

~/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
67
CharlesB

より良いオプションは次のとおりです。

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以降)。どうやって見逃したかわからない!

20
Cascabel

[.git\refs\remotes\Origin]の下に「HEAD」という名前の新しいファイルを作成し、それにコンテンツ「ref:refs/remotes/Origin/master」を入れることができます。これで問題が解決するはずです。

空のリポジトリからのクローンはこれにつながるようです。コミットオブジェクトが存在しないため、空のリポジトリにHEADがない可能性があります。

使用できます

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

「問題」リポジトリには「Origin/HEAD」がありませんが、各リポジトリの違いを確認するには

編集:コマンドラインを使用して道を譲る
gitコマンドラインを使用してこれを行うこともできますが、結果は同じです

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

2
winterTTr