[git ウェアハウス管理] 競合を処理するときに、git commit プロンプトの代わりに git rebase を表示します。

コードの競合を解決する方法

今日ウェアハウスを更新したところ、最新のコードがプルされておらず、拒否されていることがわかりました。そこで git pull を実行することにしましたが
、与えられたプロンプトが以前とは異なることがわかりました:
ここに画像の説明を挿入します
通常の方法は git commit -m "message" である必要があります。その後、競合は解決されます
。心配しないで、git を見てみましょうstatus. ステータス
ここに画像の説明を挿入します
表示が通常のものと異なります インタラクティブなリベースが進行中です なんということでしょう; 指定された参照手順はまだ git rebase コマンドに関連していますので、従来の考え方に従って処理して、実現可能かどうかを確認してみましょ

。競合があるため、次のコマンドを実行しました

git add .
git commit -m "..."

このとき、git Push を実行すると拒否されました。
ここに画像の説明を挿入します
プロンプトに従って git Push Origin Master を実行すると、今度は
ここに画像の説明を挿入します
ローカル ブランチがリモート ブランチよりも遅れているため、プッシュが許可されていないというエラー メッセージが表示されます。
ただし、前のコマンドはすでに最新のコードをプルし、競合を解決しています。なぜ効果が現れないのでしょうか?
この時点で、効果を確認するために git pullorigin master を再度実行します。
ここに画像の説明を挿入します
結果は残酷であり、まだ拒否されています。
次に、プロンプトに従ってコマンドを実行します。
まず git rebase --abort を実行します。ご想像のとおり、以前にプルしたコードは消えています。
次に、git pull、競合の解決、git add の順に実行します。
その後、git rebase -- continue を実行します。 . コマンドを実行したところ、出力が異なることがわかりました。

ここに画像の説明を挿入します
このとき、ログ git log を確認してください。リモート コミットがローカル コミットにマージされていることがわかります。
つまり、競合を解決するこの方法はマージとは異なります

これはコード ブランチ マージのモードに関連しています。git
ウェアハウスには 2 つのコード マージ モードがあります。

  1. gitマージ

  2. git rebase
    の 2 つの方法の違い

  3. git merge は、別のブランチをこのブランチにマージするマージです。非同期コミットがある場合、別のブランチからのコミットが現在のブランチにマージされ、マージ コミットが生成されます。これにより、チームのコミット レコードの信頼性が保証されます。

  4. Git rebase はリベースです。リモート ブランチがこのブランチと競合する場合、git rebase 後、リモート ブランチはローカル ブランチに更新され、すべてのローカル コミットはリモート ブランチをプルした後の最新のコミットに基づきます。マージ コミット ブランチがない場合、比較的きちんとした履歴レコードが維持されます。

  5. git merge は競合を 1 回処理するだけで済みますが、git rebase は競合を複数回処理する必要がある場合があるため、 git rebase -- continue コマンドがあります。

  6. 実際のプロジェクト シナリオの場合は、全員が git merge を使用することをお勧めします。

  7. 他の開発同僚がリモート ブランチで共同作業し、git rebase を使用してマージしている場合、送信レコードが混乱する可能性があります。誰もがリベースしています。おそらく、あなたは私の記録をリベースし、私は彼の記録をリベースし、彼はあなたの記録をリベースします。この関係を想像してみてください。

gitリベースプロセス

# 1.先拉取代码
git pull

# 2. 解决冲突并保存到暂存区
git add .
# 3. 继续处理下一个commit的冲突 
git rebase --continue
# 或者 终止变基
git rebase --abort

git pull モードを変更する

# 设置rebase模式
git config --global pull.rebase true
# 获取
git config --global --get pull.rebase
# 删除
git config --global --unset pull.rebase

まとめると、上記の問題は興味本位でプルモードを変更したために発生したもので、結果的にマージに戻すことで解決しました。

おすすめ

転載: blog.csdn.net/weixin_43500200/article/details/131849393