8

例:

  • Githubリポジトリのクローンを作成し、新しいブランチを作成して、機能の開発を開始しました。

  • 私の同僚は、まったく同じGithubリポジトリのクローンを作成し、ローカルマシンに独自のブランチを作成し(git checkout -b mylocalbranch)、独自の機能を使用しています。

  • 私の同僚は、私が行う前に機能を終了し、それを本番環境にプッシュしてGithubに戻します。

  • 30分後に機能を終了し、競合を発生させずに作業をプッシュしたいと思います。

競合を発生させずに、作業を本番環境にプッシュしてGithubに戻すための最良の方法は何ですか?

4

4 に答える 4

17

あなたの同僚が自分のコードをproductionブランチにマージしたとしましょう。

yourfeature以前に作成したブランチproductionは少し古くなり、その上にあなたがコミットしたものはほとんどありません。

あなたが今しなければならないことは次のとおりです。

  • productionブランチに切り替える
  • それを引っ張る(あなたの同僚による変更を含む最新の変更があるように)
  • yourfeatureあなたの支店に行きます
  • ブランチを次のようにリベースproductionします: これにより、最新のプロダクションでこのブランチのコミットが再生されます。
  • 競合が発生した場合: それらは、あなたが何かを更新しているときに、同僚が行ったのと同じ行の変更が原因です。

リベースについて詳しくはこちら

于 2012-12-19T19:30:12.923 に答える
1

マージ先のブランチをチェックアウトして、

git checkout master

次に、コードをマージします

git merge [current_branch]

コンフリクトの可能性は常にあります。その場合、コンフリクトに対処して解決する必要があります。

この記事が役立ちます: http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging

于 2012-12-19T19:30:12.233 に答える
0

簡単な方法は、変更がコミットされていることを確認し、 を使用してチームメイトが行った変更をプルしgit pull、 でブランチを自分のものgit merge branchnameにマージし、 でブランチをマスターにマージしてからgit checkout master git merge yourbranchnamegit push変更をリモート リポジトリに戻すことです。

その他の関連リンク:

GitHub のフォーク間のマージ

リモート github リポジトリからローカル リポジトリに変更をマージする

于 2012-12-19T19:29:14.653 に答える
0

このブログ投稿は非常に役に立ちます。

結論

多くのコミッターがいる場合や、トレーニングを受けていないコミッターがいる場合は特に、マージ ワークフローを避けてください。

git の分散型の性質がゲームをどのように変えるかを理解します。

権限のあるリポジトリでシステム receive.denyNonFastForwards をオンにします

出典: http://randyfay.com/content/avoiding-git-disasters-gory-story . コメントも投稿も金です。

于 2012-12-19T19:33:13.737 に答える