2016-03-23 13 views
3

gitlabサーバーからgitリポジトリをクローンした後、origin/HEADが 'origin/foo'という別のブランチを指しているので、チェックアウトマスターはありません。 gitlabでは、デフォルトのブランチはmasterに設定されています。gitクローン - デフォルトブランチ

'origin/foo'のorigin/headを 'origin/master'に移動するにはどうすればよいのですか?私はHEADブランチはいえ、マスターするために指すようにしたい

origin/HEAD -> origin/foo 

- :

右クローニングした後、gitのリモートショーの原点状態:

HEAD branch: foo 

gitのリモート-r秒というinside gitlab - デフォルトブランチはすでにmasterに設定されています。

答えて

3

これはサーバー側でのみ実行できます。 GitLabの場合は、プロジェクトの設定(左側のサイドバーの最後の項目)、「デフォルトの分岐」(3番目のテキストフィールド)で行います。

Screenshot of GitLab Project Settings page

はどうやらGitLabによって報告されたデフォルトの分岐が常にgit remote show originによって報告HEADブランチと同じではないことを意味し、現時点での問題(2016年3月)があります。 GitLabのデフォルトブランチを他のものに設定し、それをマスターに戻すことは@rralfのために働いています。

+0

Uhm - 既に言ったように:Gitlabのデフォルトブランチは既にマスタに設定されています – rralf

+0

はい - 私は知っています、それはマスターに設定されています!私はそれを何か他のものに設定し、それを再びマスタリングするようにリセットしました。私は現在、現在それが動作するかどうかを見るためにそれを複製しています。 – rralf

+0

[OK]をgitlabのデフォルトのブランチを変更し、マスターに戻す私の問題を解決しました。あなたはこのヒントをあなたの答えに加えることができます。それから私はそれを受け入れます。 gitlabの中に深い虫がいるようだ... – rralf

0

この質問では、リモート側で操作する必要があります。次のようなもの:

git checkout master。

HEADがマスターを参照させる。

+0

リモート側は、gitlabでホストされているように、生のgitコマンドではうまくいきません。私はクライアント側でいくつかの魔法を実行し、それらの更新をリモートに送信する必要があります。 – rralf

+0

@rralfローカルトリックについては、ローカルのコマンドエイリアス、つまり.gitconfigの* clone -b master *というエイリアスを設定し、元のcloneコマンドの代わりにこのエイリアスを使用することしか考えられません。 – gzh

2

Paul Hicks' answerのほかに、クライアント側のgitが非常に古い(つまり、1.8.5以前の場合でも、修正が1.8.4.3にも移植されていましたが)、正しく選択されていない可能性がありますとにかく分岐します。

この問題は、サーバーのHEAD参照が、ブランチののヒントでもあるコミットIDに解決されたときに発生します。 gitの古いバージョンのcloneプロセスは、HEAD -> ...の方向を理解することができず、代わりにHEADが解決する未処理のコミットIDを取得します。また、各ブランチのコミットIDを取得し、そのブランチを選択します。ブランチは本質的にランダムですが、そのコミットIDを持ちます。

新しいクライアントは、シンボリックスタイルの転送をネゴシエートし、毎回正しいブランチを取得します。しかし、古いものに悩まされている場合、回避策の1つは、HEADが解決するIDが1つのブランチにのみ関連付けられていることを確認することです。つまり、一致するブランチがある場合は、そのブランチの先端が同じIDではなくなるようにダミーコミットを行います。

(サーバーが古すぎると、古いサーバーはネゴシエーションフェーズではシンボリック転送オプションを受け付けないため失敗しますが、GitLabは当選した特定のLinuxディストリビューションのように過去10年間にスタックされません't CentOname、ahem。)

関連する問題