4

誰もが使用する共有 git リポジトリがあり、2 つのブランチがあります。

  • 主人
  • 開発者

私はこのレポの独自のフォークを持っています。アップストリーム リポジトリからフォーク内のそれぞれのブランチに時々変更をプルし、機能ブランチを dev にリベースします。

すなわち。

フォーク

  • 主人
  • 開発者
  • 特徴1

コマンド:

git checkout dev
git pull upstream dev
git checkout feature1
git rebase dev

時々、feature1 ブランチをフォークにプッシュしようとすると、ブランチが古くなっていると言われ、プルを実行すると、マージの競合が発生します。

このフォーク/ブランチで作業しているのは私だけなので、なぜこれらのマージの競合が発生するのか混乱しています。

他の誰も作業していなくても、プッシュされたブランチをリベースすることに問題はありますか? これを回避する方法、または従うべきより良いワークフローは何ですか

4

1 に答える 1

3

これは、変更をリベースしているために発生します。ブランチに以前と同じコミットが含まれていないことを完了すると、同じ (または同様の変更) を反映する新しいコミットが含まれます。これらの変更をプッシュしようとすると、git は、ターゲット リポジトリのブランチの現在の先端にあるコミットが、そのブランチの新しい先端として設定しようとしているコミットの祖先ではないことに気付きます。

git push -f早送りではない場合でも、プッシュを強制的に発生させるために使用する必要があります。ただし、これを行うときは、そのブランチから他の変更を消去しないように注意する必要があります。そのブランチが単一のリポジトリでのみ変更される場合は、その 1 つのブランチで使用しても問題ありませんが、そのフラグを使用してまたはブランチ-fにプッシュしないように注意する必要があります。masterdev

于 2012-11-26T22:57:18.333 に答える