63

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

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

4

3 に答える 3

75

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

にトラッキングブランチが必要です。これは、リベースするブランチを認識していること~/Desktop/testを意味します。追跡ブランチが存在しない場合(の場合)、gitはそのブランチのどのブランチを取る必要があるかを認識せず、失敗します。git rebase originorigin~/Desktop/fallstudieorigin

これを修正するには、次のコマンドでブランチトラックを作成origin/masterします。

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

または、master現在チェックアウトされているブランチでない場合:

git branch --set-upstream-to=origin/master master
于 2011-05-11T13:02:41.897 に答える
23

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

git remote set-head -a origin

ドキュメントから:

-aを使用すると、リモートが照会されてHEADが決定され、$ GIT_DIR / remotes//HEADが同じブランチに設定されます。たとえば、リモートHEADがnextを指している場合、「git remote set-head origin -a」は、$ GIT_DIR / refs / remotes / origin/HEADをrefs/remotes / origin/nextに設定します。これは、refs / remotes / origin/nextがすでに存在する場合にのみ機能します。そうでない場合は、最初にフェッチする必要があります。

これは実際にはかなり前からあります(v1.6.3以降)。どうして見逃したのかわからない!

于 2011-05-13T00:09:23.037 に答える
2

[.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

于 2011-05-11T15:12:29.120 に答える