複数のgitプロジェクトリポジトリ間のGitチェリーピックコードの同期

この間、プロジェクト間のコード分離は、gitのAライブラリからBライブラリへと行われ、その後、AライブラリとBライブラリはそれぞれの要件に合わせて独立して開発されました。

このように、AライブラリとBライブラリの先頭のコードは基本的に同じですが、問題が発生します。AライブラリのコードがBUGで変更され、Bライブラリで変更する必要がある場合があります。便利でない。

したがって、チェリーピックが実行可能かどうかを確認してください。

 

いくつかの先行記事を読んで試してみた後(例として、コミット->コミットIDはライブラリAのリリースのXXXXXであり、ライブラリBのリリースブランチに送信します)手順は次のとおりです。

  1.コードをBライブラリのリリースブランチにカットします。問題を防ぐために、最初にバックアップブランチをプルすることをお勧めします。

  2.別の倉庫Aをローカルに追加します

 Zxxxxx5:B 1 $ git remote add zhorigin http://git.xxxx.com/A.git

追加が成功したかどうかは、git remote -v
Zxxxxx5:B 1 $ git remote -v
origin http://git.xxxx.com/B.git(fetch)originhttp://git.xxxx.com/で確認でき
ます。 B.git(プッシュ)
zhorigin http://git.xxxx.com/A.git(フェッチ)
zhorigin http://git.xxxxcom/A.git(プッシュ)
 

  3. Zxxxxx5:B 1 $ git fetch zhorigin  は、リモートAライブラリのブランチ情報をローカル

  4に同期します。この時点で、チェリーピックを実行できます。関連するプロンプトが表示された場合は、プロンプトに従ってください。

    Zxxxxx5:B 1 $ gitチェリーピックac50e25bf

ユーザー名とホスト名に。それらが正確であることを確認してください。
明示的に設定することで、このメッセージを抑制できます。
次のコマンドを実行し、エディターの指示に従って
構成ファイルを編集します
    。gitconfig --global --edit
これを行った後次のコマンドでこのコミットに使用されるIDを修正できます
    。gitcommit--amend --reset-author

-------------------------------------------------- -------------
------------------------------------- --------------------------

名前とメールアドレスは
、ユーザー名とホスト名に基づい自動的に構成されました。それらが正確であることを確認してください。
明示的に設定することで、このメッセージを抑制することができます
    。gitconfig --global user.name "Your Name"
    git config --global user.email [email protected]
これを行った後、このコミットに使用されるIDを次のように修正できます。
    git commit --amend --reset-author
 

 

 

 5.上記のプロンプトでは、操作後にgit pushを実行できます。このとき、魔法のシーンが表示されます。AライブラリのBUGブランチをBライブラリに複製します(Aライブラリのリリースブランチにいる場合)。直接変更すると、Bライブラリのリリースに直接プッシュできます。興味がある場合は、試してみてください)

Zxxxxx5:B 1 $ git push
オブジェクトの列挙:69、完了。
オブジェクトのカウント:100%(69/69)、完了。
最大8つのスレッドを使用したデルタ圧縮
オブジェクトの圧縮:100%(20/20)、完了。
オブジェクトの書き込み:100%(39/39)、4.01 KiB | 2.00 MiB / s、完了。
合計39(デルタ13)、再利用10(デルタ3)
http://git.xxxx.com/B.gitへ
   ccccc ..yyyyyy bugfix-branch-xxxx-A-> bugfix-branch-xxxx-A
 

6.これまでのところ、ライブラリAのBUG変更ブランチはライブラリBにあり、その後のプロセスは通常のチェリーピックプロセスと同じように単純です。

   ローカルでは、Bライブラリのリリースに切り替えるようにしてください

  Zxxxxx5:B 1 $ gitチェックアウトリリース
  Zxxxxx5:B 1 $ gitチェリーピックyyyyyy

  Zxxxxx5:B 1 $ git push

7.通常のコード操作に影響を与えないように、removeを削除します

 Zxxxxx5:B 1 $ gitのリモート-v
起源http://git.xxxx.com/B.git(フェッチ)
起源http://git.xxxx.com/B.git(プッシュ)
zhoriginます。http:// gitの。 xxxx.com/A.git(フェッチ)
zhorigin http://git.xxxxcom/A.git(プッシュ)
 Zxxxxx5:B 1 $  git remote remove zhorigin
 Zxxxxx5:B 1 $ git remote -v
origin http:// git。 xxxx.com/B.git(フェッチ)
オリジンhttp://git.xxxx.com/B.git(プッシュ)

 

 

備考:

     AライブラリのクローンがBライブラリに分岐する理由、新しい分岐バージョンの開始コミットIDがcccccである理由など、非常に興味深い詳細がいくつかあります

おすすめ

転載: blog.csdn.net/pan0755/article/details/108220934