2752

同僚と私は同じリポジトリで作業しています。これを 2 つのブランチに分岐しました。それぞれが技術的に異なるプロジェクト用ですが、類似点があるためmasterbranch.

しかし、私はbranch. 私の同僚はどうすればそのブランチを具体的に引っ張ることができますか?

リポジトリの Agit cloneは、彼のためにローカルにブランチを作成していないようですが、私の側でプッシュした後、それらが unfuddle でライブになっているのを見ることができます。

また、最初にブランチを作成したときは、-b checkout. それは大きな違いがありますか?

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

$ git fetch origin discover
$ git checkout discover

これらは私が実行したコマンドです。しかし、それは間違いなく機能していません。

そのブランチをチェックアウトしてから、さまざまな共同作業者やワークステーションからのブランチの変更だけをプッシュしてコミットできるようにしたいと考えています

4

31 に答える 31

3740

更新:Gitスイッチの使用

以下に記載されている情報はすべて正確でしたがgit switch、作業を簡素化する新しいコマンドが追加されました。

リモートリポジトリに存在するがローカルブランチには存在しない場合daves_branchは、次のように入力するだけです。

git switch daves_branch

ローカルにブランチがないため、これにより自動的switchにリモートリポジトリが検索されます。その後、リモートブランチトラッキングも自動的に設定されます。

daves_branchローカルに存在しない場合は、git fetchを使用する前に最初に存在する必要があることに注意してくださいswitch


元の投稿

リモートブランチを追跡するローカルブランチを作成する必要があります。次のコマンドは、daves_branchという名前のローカルブランチを作成しリモートブランチのorigin/daves_branchを追跡します。変更をプッシュすると、リモートブランチが更新されます。

Gitの最新バージョンの場合:

git checkout --track origin/daves_branch

--trackこの場合、[ remotename git checkout -b [branch] [remotename]/[branch]]はoriginであり、[branch]は2倍同じであり、この場合はdaves_branchの省略形です。

Git 1.5.6.5の場合、これが必要でした。

git checkout --track -b daves_branch origin/daves_branch

Git 1.7.2.3以降の場合、これで十分です(以前に開始された可能性がありますが、これは私がすぐに見つけることができる最も早い確認です)。

git checkout daves_branch

最近のGitバージョンでは、このコマンドはローカルブランチを作成せず、「切り離されたHEAD」状態になることに注意してください。ローカルブランチが必要な場合は、--trackオプションを使用してください。

詳細はこちら:3.5 Gitブランチ-リモートブランチ、トラッキングブランチ

于 2012-03-02T17:45:18.030 に答える
148

ローカルではなくリモートに存在する myBranch をチェックアウトするには - これは私にとってはうまくいきました:

git fetch --all
git checkout myBranch

私はこのメッセージを受け取りました:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'
于 2013-11-12T03:36:22.180 に答える
82

git branch -a(ローカル ブランチとリモート ブランチの両方) または(リモート ブランチのみ) を使用git branch -rして、すべてのリモートとそのブランチを表示します。その後git checkout -t remotes/repo/branch、リモートに対して a を実行して、ローカル ブランチを作成できます。

そのリモートのすべての参照とタグを表示するgit-ls-remoteコマンドもあります。

于 2012-03-02T17:16:57.310 に答える
36

使用する:

git checkout -b serverfix origin/serverfix

これは、Git が--track省略形を提供する十分に一般的な操作です。

git checkout --track origin/serverfix

実際、これは非常に一般的であるため、そのショートカットにはショートカットさえあります。チェックアウトしようとしているブランチ名が (a) 存在せず、(b) 1 つのリモートのみの名前と完全に一致する場合、Git は追跡ブランチを作成します。

git checkout serverfix

リモート ブランチとは異なる名前のローカル ブランチをセットアップするには、異なるローカル ブランチ名を持つ最初のバージョンを簡単に使用できます。

git checkout -b sf origin/serverfix

これで、ローカル ブランチsfが から自動的にプルされorigin/serverfixます。

出典: Pro Git、第 2 版、Scott Chacon と Ben Straub によって書かれました(読みやすいように切り取られています)

于 2016-03-18T00:21:19.290 に答える
17

私を助けてくれたのは

1) 利用可能なすべてのリモート ブランチを表示するには (例: 'remote-branch-name')

git branch -r

2) リモート ブランチ名を使用してローカル ブランチを作成する

git fetch && git checkout 'remote-branch-name'
于 2018-09-17T02:16:14.797 に答える
16
git fetch

git branch -r

git checkout <branch_name>
于 2013-12-04T20:53:33.833 に答える
15

リモート ブランチを 1 回で取得してチェックアウトすることもできます。

git fetch && git checkout the-branch-name
于 2015-03-25T06:43:02.823 に答える
14

入力しました

git checkout <branch_name>

そして得た

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'
于 2013-10-17T00:07:26.057 に答える
13

マスター ブランチをいじらず、リモート ブランチのみを操作するように求められることがあります (私が求められたように)。したがって、必要なのはリモート ブランチだけです。

したがって、リモート ブランチのみを (マスターなしで) クローンするには、次のようにします。

git clone url --branch remote_branch_name

ここで、remote_branch_name はリモート ブランチの名前です

例えば、

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15

これにより、リモート ブランチの名前を使用して、リモート ブランチをローカル ブランチに確実に複製できます。

コードをコミットしてプッシュすると、コードはそのブランチだけに送信されます。

于 2015-02-06T05:11:05.837 に答える
12

手順は次のとおりです。

  1. git fetch originまたはgit fetch --all、これはすべてのリモートブランチをローカルにフェッチし、次にこれを続行できる2番目のオプションです.

  2. git checkout --track origin/<The_remote_branch you want to switch over>

次に、このブランチで作業します。次のように入力して、そのブランチにいるかどうかを確認できます

git branch

現在所属しているブランチが表示されます。

于 2013-12-26T10:09:11.903 に答える
10

リモートが git@xyz.git で、その random_branch ブランチが必要だとしましょう。プロセスは次のようになります。

  1. まず、リモコンのリストを確認してください

    git remote -v

  2. 上記のコマンドの出力に git@xyz.git リモートがない場合は、次のように追加します。

    git remote add xyz git@xyz.git

  3. これで、そのリモートのコンテンツを取得できます

    git fetch xyz

  4. 次に、そのリモートのブランチをチェックアウトします

    git checkout -b my_copy_random_branch xyz/random_branch

  5. ブランチリストを確認してください

    git branch -a

ローカル ブランチ my_copy_random_branch は、リモートの random_branch ブランチを追跡します。

于 2018-03-06T16:59:13.580 に答える
7

git fetch && git checkout <your friend's branch name>トリックを行う必要があります

于 2018-04-25T11:37:50.700 に答える
4

ファイルを確認してください。特に、そのリモートのフェッチ.git/config時にどのトラッキングが存在するかを確認してください。

[remote "randomRemote"]
    url = git@github.com:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

heads/*を指している場合randomRemote/*、実行するgit fetch randomRemoteと、すべてのブランチがフェッチされます。

その後、そのブランチをチェックアウトできます。

さもないと、

  1. これを使用して、追跡にリモート ブランチを追加する必要があります。.git/configこれを実行した後に確認してください。あなたは理解するでしょう。

    git remote set-branches --add randomRemote randomBranch
    
  2. 実行しますgit fetch randomRemote。これにより、リモート ブランチがフェッチされます。

  3. これで実行できますgit checkout randomBranch

于 2017-02-01T14:29:24.920 に答える