5

Git For Windows (以前は msysgit と呼ばれていました) 1.7.10.msysgit.1 で Git Extensions 2.32 を実行しています。

別のユーザーが新しいブランチを作成し、それをリモート リポジトリにプッシュしました。その新しいブランチをローカル リポジトリにフェッチしたいと考えています。

この画像は、私がやろうとしていることを示しています。マスターは現在チェックアウトされており、他のユーザーが新しいブランチ「brentfo」を追加し、リモート リポジトリにプッシュしました。その新しいブランチをローカル リポジトリにフェッチしたいと考えています。

イメージに見られるように、Git Extensions Pull ダイアログを開きます。新しいリモートブランチ「brentfo」を選択して、マージオプション「マージしないで、リモートの変更のみをフェッチする」を使用してオリジンからプルしています。[プル] ボタンをクリックすると、進行状況ダイアログが表示されます。

c:\Program Files (x86)\Git\bin\git.exe fetch --progress "origin" +refs/heads/brentfo
Done
From //dnzchfile1/git-chch$/mRouteDotNET
 * branch            brentfo    -> FETCH_HEAD

進行状況ダイアログにエラーは表示されません。プロセスは正常に完了したようです。

FETCH_HEAD ファイルには、次の内容が表示されます。

eea033921fea43acf34a5baa380d1666181b56aa        branch 'master' of //server/gitrepo/mRouteDotNET
5e0640e42d04a744aae2e95663a13c0747cacaf1    not-for-merge   branch 'brentfo' of //server/gitrepo/mRouteDotNET
934e6034c526b703ac69b26497e0131f9bb71c2c    not-for-merge   branch 'mRoutePCLib' of //server/gitrepo/mRouteDotNET

しかし、後でコミット ログを見ると、何も起こっていないように見えます (上記の [プル] ダイアログの画像の背景にコミット ログが表示されています)。新しいブランチ brentfo がローカル リポジトリに作成されていません。ブランチのドロップダウン リストをプルダウンすると、マスターと mRoutePCLib の 2 つしかありません。

[プル] ダイアログでリモート ブランチを選択しない (つまり、空白のままにする) と、同じ結果が得られます。その場合、進行状況ダイアログに次のように表示されます。

c:\Program Files (x86)\Git\bin\git.exe fetch --progress "origin" 
Done

以前のバージョンの Git 拡張機能では、リモート ブランチからローカル ブランチを作成する際にバグがあったようです。ただし、Git Extensions プロジェクトの変更ログを見ると、問題はバージョン 1.55 で解決されたようです。だから私は何か間違ったことをしていると思います。

Git Bash コンソールを使用してリモート ブランチをフェッチし、そこから新しいローカル ブランチを作成できることはわかっています。ただし、GUIを介してこれを行うことができるはずです。

次のいずれかに沿った回答を期待しています。

a) はい、あなたのやり方は間違っています。(GUI 経由で) 行うべき方法は次のとおりです。また

b) これは既知の問題です。バグが修正されるまでは、コマンドライン インターフェイス (Git Bash) から実行する必要があります。

乾杯サイモン

4

3 に答える 3

5

取得すると、現在のブランチ (およびローカルで追跡されているブランチ? 誰かが私を助けてくれます) のすべての変更と、すべてのリモート ブランチの知識が取り込まれます。まだチェックアウトしていないすべてのブランチのすべてのコミットを fetch でダウンさせたくありません.何千ものブランチがあった場合、それは悪いことです. まだ表示されていないリモート ブランチをチェックアウトするには、フェッチしてからブランチをチェックアウトします。

リモート ブランチの存在は既に取得しています。

今あなたがしたいこと

Git 拡張機能 -> チェックアウト ブランチ

ローカルからリモートに変更します。ドロップダウンでリモート ブランチを選択します。OK と言うと、ローカル ブランチを作成して追跡するかどうかを尋ねられます。必ず[はい]をクリックしてください。

Smart Git 3 を購入する方法を見つけることをお勧めします。これは、他のすべての Windows Git 製品よりもはるかに優れています。無料のオープン ソース ライセンス バージョンがあります。

于 2012-06-21T00:18:21.067 に答える
2

Andrew Finnellの答えに加えて:

(Windowsエクスプローラーのコンテキストメニューから)[Git拡張機能]> [チェックアウトブランチ]を選択すると、 [チェックアウトブランチ]ダイアログが開きます。

[リモートブランチ]とプルダウンするリモートブランチの名前を選択し、[チェックアウト]をクリックします。[リモートブランチのチェックアウト]ダイアログが開きます。

[リモートブランチのチェックアウト]ダイアログで、[ {ブランチ名}'という名前のローカルブランチのリセット]を選択し、[マージ]がオンになっていることを確認してから、[チェックアウト]をクリックします。

[リモートブランチのチェックアウト]ダイアログ

これにより、新しいローカルブランチが作成され、リモートブランチからの変更で更新され、ローカルブランチとリモートブランチの間にマッピングが作成され、変更をプッシュおよびプルできるようになります。

注: 「「{リモート名}_{ブランチ名}」という名前でローカルブランチを作成する」は選択しないでください。これによりローカルブランチが作成されますが、プレフィックスとしてリモートリポジトリの名前が付けられます(上記の例では、ローカルブランチの名前は「DSIChanges」ではなく「origin_DSIChanges」になります)。

于 2012-06-21T03:34:21.303 に答える
0

はい、あなたはそれを間違っています。これが(GUIを介して)行うべき方法です。リモート ブランチのコミットをローカル ブランチにフェッチしていますが、リモート ブランチとローカル ブランチもマージする必要があります。「リモート ブランチを現在のブランチにマージする」オプションを選択し、「フェッチのみをマージしない」を選択しないでください。

于 2015-10-28T05:35:42.403 に答える