web-dev-qa-db-ja.com

git fetchは正確には何をしますか?

編集:質問する前に、これをチェックしました GitのFETCH_HEADの意味は何ですか?
元の不正確な質問でごめんなさい。

私の質問は、フェッチが実際にどのように機能するかです。フェッチは現在のログをすべてドロップしますか?

これは私の状況です。私のチームメイトと私は、1つのブランチしかない同じリポジトリを使用しています。したがって、何かをプッシュする前にフェッチを行う必要があります。
通常、次の方法で行います。

git status
git add .
git commit -m message1
git fetch Origin
git reset head
git status
git add .
git commit -m message
git Push

しかし、リセット後、私の以前のコミット(message1) なくなっている。

これは正常ですか、それとも何か問題がありますか?
ローカル履歴にアクセスするにはどうすればよいですか?
それらは同期されていますが、私のローカル履歴はありません。

古いスタッフ、忘れてください:私は最近Git CLIを学んでいます。
誰かが「git fetch head "リモートブランチを追跡します。
しかし、これは何をするのでしょうか?このコマンドはローカルログを上書きしますか?
そして「git fetch "および" git fetch head "?

13
HarryTheF

2つの個別のコミットを実行する必要はなく、git fetchはログを削除しません。

 --o--o--o (Origin/master)
          \
           x--x (master: my local commits)

あなたがしなければならないことは、git fetchコマンドによってフェッチされた新しいコミットの上にローカルコミットをリベースすることです:

git fetch

--o--o--o--O--O (Origin/master updated)
         \
          x--x (master)

git rebase Origin/master

--o--o--o--O--O (Origin/master updated)
               \
                x'--x' (master rebased)

git Push

--o--o--o--O--O--x'--x' (Origin/master, master)

さらに単純な Git 2.6以降 の場合、次の構成を使用します。

git config pull.rebase true
git config rebase.autoStash true

次に、単純なgit pullOrigin/masterの上にローカルコミットを自動的に再生します。次に、git Pushを実行できます。

4
VonC