2012-01-11 7 views
1

現在、最新のマスターコミットにフィーチャーブランチをリベースした後、強制プッシュを使用して変更をリモートにプッシュする必要があります。残念ながら、この場合、別のマシンからプッシュしたコミットを失う可能性があります。Git:リポジトリの新しい変更を強制的に上書きするのを防ぎます

私のローカルリポジトリのリモートブランチがリモートリポジトリの対応するブランチと一致する場合、Gitに強制プッシュのみを許可するように指示する方法はありますか?

更新:強制プッシュには一切投票しないでください。

+0

私はこのために別のリモートリポジトリを使用し、メインリポジトリの強制プッシュを完全に禁止することを検討したいと思います。 – ThiefMaster

+0

ワークフローの内容はまだ不明です。あなたは、「ユーザーA、ユーザーBはこれを行い、それを実現し、これを実現してほしい」というシナリオを詳述できますか? –

+0

[git push -forceを拒否するようにgitリポジトリを設定する方法はありますか?](http://stackoverflow.com/questions/1754491/is-there-a-way-to-configure-git-リポジトリから拒否 - git-push-force)? – nulltoken

答えて

0

ローカルブランチへの変更をプルダウンして、プッシュする前に問題を解決することができます(別の方法で次のマシンで解決しなければならないかもしれません)。または、 - 注釈。 git push origin [local-branch]:[remote-branch]
リモートブランチを削除する方法もあります(つまり、git push origin :branchは、指定されたリモートブランチに空のブランチをプッシュして削除します)。

これは、他のブランチには全く触れてはなりません。 (ただし、ブランチに外部的な変更がある場合は、これを新しいブランチに分岐するなどして、強制的にプッシュする前にこれらをマージするように注意してください)。

実際、私はこれについて考えるので、現在のブランチに強制的にプッシュするのではなく、リモートの新しいブランチにリベースされたブランチをプッシュする方が良い解決策です。 (そして、おそらく不要になった古いリベースされていないブランチを削除する可能性があります)。

+0

私の質問にお返事いただきありがとうございます*。技術的には、私がリポジトリから引っ張った後、変更を強制的にプッシュする前に、別の開発者が変更をプッシュした可能性があります。技術的に、Gitはこれをチェックすることができましたが、残念ながらそれはしません。私が毎日複数回rebaseするかもしれないので、各rebaseの後に別のブランチを使用することは私のためのオプションではありません。 – Mot

関連する問題