背景:我々は我々のプロジェクトのためのgithubのを使用して、私は、私たちのメインリポジトリの私自身のフォークに取り組んでいます。大きなマージコミットを避けるために、マージの代わりにリベースを使用します。Gitは長寿命(リモート)上のリベース機能ブランチ
シナリオ:
- 新機能を実装、私のフォークのマスターのローカルブランチを作成し、そこに私の変化に置く:私は仕事をしたいの方法は、このようなものです。グループ内の私と他の人は、多くの小さなコミットを行います。そのため、ブランチ上の同じファイルに影響を与える複数のコミットがほとんど常にあります。
- プッシュ私のフォークへのローカルブランチはので、私は、私はすべての私の変更は私のラップトップが死亡した場合に失われたり失われて持っている必要はありません(私が働いているかのリモートコピーを持っている。私は最後にこれを実行してみてください毎日の)。
- 機能の終了に時間がかかる場合は、自分のフォークのマスターにリベースして、機能が損なわれる可能性のある変更がないことを確認することがあります。これは通常正常に動作します。
- ブランチのリモートコピーを最新の状態に保つために、ローカルブランチをリベース後にプッシュします。
問題:手順4で問題が発生します。私はほとんどの場合、早送りではないコミットを扱い、git push --forceを使用する必要があります。
私は
Git: how to maintain permanent parallel branches
How to maintain (mostly) parallel branches with only a few difference
を見てきましたし、私のワークフローの仕事を作るための方法を発見していません。 gitワークフローでGoogle検索を行うと、ローカルブランチで作業し、リモートコピーをgithub(例えばhttp://nvie.com/posts/a-successful-git-branching-model/)に保存しないと仮定した結果が返されます。
私はGitリポジトリへの比較的新しいので、私は、私はここで何かをしないのですかどうかを知りたいのです。私は--forceなしでステップ4をやりたいと思っています。マージの代わりにリベースを使用し、ローカルブランチのリモートコピーを保持できる代替ワークフローも非常に便利です。
'--force-with-lease'を使って競合状態を避けることができます。アップストリームがあなたのローカルよりも新しい場合、失敗します。 – mLuby