編集:質問する前に、これをチェックしました 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
"?
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 pull
がOrigin/master
の上にローカルコミットを自動的に再生します。次に、git Push
を実行できます。