0

私はgitrepoを備えたmachine1を持っています。clientこれにはブランチmasterとがありfixes_v3ます。私はmachine2を持っており、どのような組み合わせを試しても、ブランチをプルして名前を付けますfixes_v3が、内容はmaster。です。例えば:

git clone git+ssh://user@machine1/home/user/clientこれをくれ

git pullこれをくれ

git branch -aその後checkout、リモートfixes_v3は私にこれを与えます

git fetchこれをくれ

これらのもののさまざまな他の組み合わせと同様に、多くの場合、最初からやり直し、さまざまなSOの質問、マニュアル、公式ドキュメントなどから集約されます。n回目の最初からgitを学ぶ必要なしに、これをどこから研究し始めるかさえわかりません。

fixes_v3不適切な名前のブランチの代わりにコードを取り込む方法はfixes_v3

要求された出力の編集:

um@machine2:~/client$ git show-ref
ae10bcf7e15a4e251b50e8bc2eae3e5a2bc25b63 refs/heads/fixes_v3
ae10bcf7e15a4e251b50e8bc2eae3e5a2bc25b63 refs/heads/localfixesv3
ae10bcf7e15a4e251b50e8bc2eae3e5a2bc25b63 refs/remotes/origin/HEAD
ae10bcf7e15a4e251b50e8bc2eae3e5a2bc25b63 refs/remotes/origin/fixes_v3
ae10bcf7e15a4e251b50e8bc2eae3e5a2bc25b63 refs/remotes/origin/version3
um@machine2:~/unrollclient$ git ls-remote origin
um@machine1 password: 
ae10bcf7e15a4e251b50e8bc2eae3e5a2bc25b63    HEAD
ae10bcf7e15a4e251b50e8bc2eae3e5a2bc25b63    refs/heads/fixes_v3
ae10bcf7e15a4e251b50e8bc2eae3e5a2bc25b63    refs/heads/version3
7bd4490e8f98d29c5e82f473d1b04e542b67dec0    refs/remotes/origin/HEAD
16c7b55e2ea3e26c2f8faccd43e1c0db9620008a    refs/remotes/origin/Testing
a7a5642f6766332910c2c9005e8aafaf456f1f58    refs/remotes/origin/john
7bd4490e8f98d29c5e82f473d1b04e542b67dec0    refs/remotes/origin/master
ae10bcf7e15a4e251b50e8bc2eae3e5a2bc25b63    refs/remotes/origin/version3
um@machine2:~/client$ git remote show origin
um@machine1's password: 
* remote origin
  Fetch URL: git+ssh://um@machine1/home/um/client
  Push  URL: git+ssh://um@machine1/home/um/client
  HEAD branch (remote HEAD is ambiguous, may be one of the following):
    fixes_v3
    version3
  Remote branches:
    fixes_v3 tracked
    version3 tracked
  Local branches configured for 'git pull':
    fixes_v3     merges with remote fixes_v3
    localfixesv3 merges with remote fixes_v3
  Local ref configured for 'git push':
    fixes_v3 pushes to fixes_v3 (up to date)
4

2 に答える 2

1

オリジンリポジトリからリモートブランチfixes_v3を取得します

git fetch origin fixes_v3

ブランチを作成する

git checkout -b myLocalFixes_v3 origin/fixes_v3

トリックを行う必要があります

あなたがしていることの説明

git clone git+ssh://user@machine1/home/user/client

リポジトリのクローンをローカルで作成しています。デフォルトでは、ローカルリポジトリはリモートリポジトリのHEADリビジョンでチェックアウトされます。デフォルトではどちらがマスターです

git pull 

Gitプル(オプションなし)は、デフォルトのトラッキングブランチをフェッチしてから現在のブランチにマージします。リモートマスターブランチを発信/追跡したマスターをローカルに使用していたため、リモートマスターブランチをフェッチ(キャッシュにダウンロード)してから、マスターである現在のブランチにマージします。

git branch -a then checkout the remote fixes_v3 gives me this

チェックアウトは難しい部分です。私があなたに与えたチェックアウトはうまくいくはずです。私は過去にも間違ったチェックアウトをしました。なぜなら、私はすべての微妙な点を理解していなかったからです。もし、するなら

git checkout -b origin/fixes_v3

マスターに基づく「origin/fixes_v3」というローカルブランチを作成します

git checkout -b origin/fixes_v3 master

こっちも一緒

git checkout -b origin/fixes_v3 origin/fixes_v3

これは、origin/fixes_v3リモート「fixes_v3」に基づく「origin/fixes_v3」と呼ばれるローカルブランチを作成します。ただし、gitは「origin / fixes_v3」がリモートブランチ、または「/」が含まれるローカルブランチであるかどうかを判断するのに問題があるため、これを行うべきではありません。

git fetch

Gitフェッチは、ローカルキャッシュ内のリモートブランチ/コミットのみをダウンロードします。それ以外は何もしません。マージもチェックアウトもリベースもしません。

リモート名が:originの場合、.git / refs / remotes / origin /ディレクトリにキャッシュがダウンロードされます(単純化します)。したがって、.git / refs / remotes / origin/masterと.git/refs/remotesがあります。 / origin/fixes_v3。git checkout -b origin / fixes_v3 origin / fixes_v3を実行すると、.git / refs / remotes / origin/fixes_v3に基づいて.git/refs / head / origin / fixes_v3が作成されますが、名前に競合が発生しますorigin / fixes_v3がoriginリモートのリモートを意味するのか、origin/fixes_v3という名前のローカルブランチを意味するのかがわからないためです。

于 2012-06-20T10:38:26.227 に答える
0

質問は思ったよりも面倒でした。fixs_v3ブランチの変更はコミットされませんでした...gitproガイドを読み直した後、私はgitを十分に理解して、そのような基本的な手順のトラブルシューティングを行うことができました。みんな、ありがとう。

于 2012-06-21T14:50:34.087 に答える