私が欲しいもの:
すべてのブランチでローカルリポジトリを使用してサーバーからのすべてのニュースコミットを更新しますが、ブランチをマージしません(履歴行を結合するだけです)
私はこのコマンドを試しています
git fetch --force --progress --verbose name@Host:/path/to/repository.git
私はそれがうまくいくと思った:
From Host:/path/to/repository
* branch HEAD -> FETCH_HEAD
しかし、この出力はどういう意味ですか?ログが表示される場合、更新されていません。サーバーからクローンを作成すると、すべての新しいコミットがそこにあります。だから...コマンドは動作しません。次に、サーバーには存在するがローカルリポジトリには存在しないブランチを試します
git fetch --force --progress --verbose name@Host:/path/to/repository.git my_branch
結果は次のとおりです。
From Host:/path/to/repository
* branch my_branch -> FETCH_HEAD
すべての成功...すべてのブランチがわからず、ブランチが更新されたとしても、この変更を取得してログで確認できます。
それを行うためのアイデアはありますか?
フェッチすると、リモートブランチが取得されますが、リモートブランチからの変更をローカルブランチにマージして、それらの変更を確認する必要があります。
取得した後、これを試してください:
git log Origin/yourbranchname | head
git log yourbranchname | head
違いがわかりますか?
今やる:
git checkout Origin/yourbranchname -b newbranchname
git log newbranchname
Newbranchnameにリモートの変更が表示されるはずです。
これらの変更をブランチにマージすることもできます
git checkout yourbranchname
git merge Origin/yourbranchname
以前この問題に直面しましたが、主な理由は、gitローカル設定でremote.Origin.fetchを設定しなかったことです。
以下のコマンドを使用して問題を修正します。
git config --local --add remote.Origin.fetch +refs/heads/*:refs/remotes/Origin/*
その後、「git fetch Origin」を実行すると、期待どおりの出力が得られると思います。
git fetch
は、リモートブランチのローカルコピーに変更を加えるだけです。リポジトリまたはローカルブランチを更新する場合は、fetch
の後にmerge
を続けるか、ワンショットにgit pull
を使用する必要があります。
素晴らしいSO answer: https://stackoverflow.com/a/292359/102371