banner
克喵爱吃卤面

喵落阁

光就是一切的意义!
telegram
github
qq
email
x
bilibili

Git 上流リポジトリの更新を同期する

Git 上流リポジトリの更新を同期する#

  Github テンプレートを使用して自分のリポジトリを作成しましたが、パッチの更新を同期する必要があります。手動で書き写すわけにはいきませんので、解決策を探しました。

  記録しておきます。

上流リポジトリを追加する#

  上流リポジトリに名前を付けます。upstream​ と名付ける場合は、ローカルリポジトリで以下のコマンドを実行します:

git remote add upstream https://github.com/$<upstream-repo>.git

上流リポジトリの変更を取得する#

  以下のコマンドを実行して、上流リポジトリのすべてのブランチとコミットを取得します:

git fetch upstream

上流の変更をマージする#

  今、上流の main ブランチの変更をあなたのローカル main ブランチにマージします:

git merge upstream/main --allow-unrelated-histories

  特定のコミットだけをマージする必要がある場合:

git cherry-pick <commit-hash>

  次のように使用することもできます:

gcp <commit-hash>

  commit-hash は GitHub のウェブページから直接コピーできます。

  この時、コミットの作者は元のリポジトリの作者で、Vercel がビルド失敗を通知し、Pro にアップグレードする必要があると言っています。別のファイルを修正して、自分でコミットを追加できます。

  もちろん、これはあまり優雅ではありませんが、以下のコマンドを使用してファイルに変更を取得できますが、コミットはしません:

git cherry-pick <commit-hash> --no-commit

  その後、手動でコミットします:

git commit -m "commit information"

コンフリクトを解決する#

  自分がソースコードをすでに変更している場合、マージ中にコンフリクトが発生する可能性があります。手動で解決する必要があります。
Git も通知を行い、コンフリクトファイルを手動で編集して保存し、その後変更をコミットします。

バッチコミット#

git cherry-pick <開始コミッ>^..<終了コミッ>

  コンフリクトがある場合は順番に処理され、その後、continue を実行して終了まで続けます:

git cherry-pick --continue
  • <開始コミット>​:範囲の開始点(このコミットは含まれません。<開始コミット>~ または <開始コミット>^ を使用しない限り)。
  • <終了コミット>​:範囲の終了点(このコミットは含まれます)。
  • ^​ は Git の構文で、「前のコミット」を指定するために使用されます。
  • ..​ は範囲を示します。

プッシュ#

git push origin main

  もちろん、デフォルトでは新しく追加された upstream​ にはプッシュされませんので、直接 git push​ すれば大丈夫です。

  もはや同期が必要ない場合は、上流のリポジトリを削除できます:

git remote remove upstream
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。