2

これが状況です。github には、master、his-tests、my-tests の 3 つのブランチがあります。 master ブランチについてはしばらく忘れましょう。master での最初の作業の後、私が一緒に働いている人がブランチ 'his-tests' を作成し、そこでコードの開発を続けました。次に、彼に基づいてブランチを作成しました:

git checkout -b my-tests

my-tests にいくつかの変更を加え、コミットして github にプッシュしました。私の協力者は変更を見て、彼のブランチ (his-tests) にそれらを実装しました。数日後、彼はさらに変更を加えたので、それらを私のブランチ (my-tests) に実装したいと思います。どうすればいいのですか?ブランチを削除して、彼のブランチを再度複製できることはわかっていますが、それを続けることはできません。それを処理する正しい方法は何ですか?したがって、github にアクセスすると、彼のブランチ (通常は 1 つまたは 2 つのファイル) に変更が加えられていることがわかります。

git branch -a
master
* my-branch
his-branch
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/my-branch
remotes/origin/his-branch

では、his-branch と my-branch をマージするにはどうすればよいでしょうか。彼はファイルの最新の状態を持っており、私のブランチのすべてのファイルを更新したいと思っています。ご覧のとおり、私はチェックアウトして常に my-branch で作業しているため、his-branch には変更を加えていません。my-branch を彼の変更で更新してから、いくつかの変更を追加し、私の変更を github の my-branch にプッシュするというこのサイクルのワークフローは何ですか。

他に必要な情報はありますか?ありがとうございました

4

2 に答える 2

1

彼のブランチをあなたのブランチにマージする必要があります。

git checkout my-test
git merge his-test

rebase彼のブランチに変更することもできます。これにより、履歴が正しく維持されますが、履歴が変更されます (これは悪いと考える人もいます)。

git checkout my-test
git rebase his-test

同僚が別のリモートにいる場合。リモートを追加することから始めます。

git remote add my-colleague-remote git@hisremote.com

次に、このリモートでブランチ ホールドを参照します。

git fetch my-colleague-remote
git merge my-colleague-remote/his-branch
于 2013-01-07T22:12:54.763 に答える
1

では、his-branch と my-branch をマージするにはどうすればよいでしょうか

his-branch と my-branch をマージします!

まず、ローカル リポジトリが GitHub で表示されているものと一致することを確認します。

$ git checkout his-branch
$ git pull

ローカル リポジトリが最新の状態になったら、新しいものを からhis-branchにマージできmy-branchます。

$ git checkout my-branch
$ git merge his-branch

を使用git mergeすると、git は 2 つのブランチ間で発生する可能性のある競合を処理できます。コンフリクトがあっても気にせず、自分のブランチを彼のものと同じにしたいだけで、ブランチ内の他のすべてを放棄したい場合は、次のコマンドでブランチを移動できますgit reset:

$ git checkout my-branch
$ git reset --hard his-branch
于 2013-01-07T22:12:28.873 に答える