2

私はgit bookを読みましたが、どういうわけか次のルールを忘れていました:

公開リポジトリにプッシュしたコミットをリベースしないでください。

そのガイドラインに従えば、問題ありません。そうしないと、人々はあなたを憎み、友人や家族から軽蔑されるでしょう.

これは、職場でローカル ブランチ feature-xyz を作成し、リモート リポジトリにプッシュしたことを示しています。別のコンピューターでプルし、さらに作業を行ってプッシュしました。仕事に戻り、枝を引っ張った。数回コミットした後、ブランチをリベースしました。これで、feature-xyz の処理が完了し、それをリモート リポジトリにプッシュしたいと考えていますが、これは明らかに次のメッセージで失敗しています。

$ git push origin feature-xyz
To git@<url>:<repo>.git
 ! [rejected]        feature-xyz -> feature-xyz (non-fast-forward)
error: failed to push some refs to 'git@<url>:<repo>.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

明らかに、リモート ブランチをプルすると、あらゆる種類の競合が発生します。そこで、代わりにリモート ブランチを削除することにしました。

git push origin :feature-xyz

そしてそれを再作成します:

git push origin feature-xyz

しかし、リモート ブランチの削除を伴わないより良いワークフローがあるかどうか疑問に思っていましたか?

4

1 に答える 1

5

その場合、リベースしないでください。マージ。つまり、 の上に
リベースしないでください。にマージします。feature-branchanotherBranchanotherBranchfeature-branch

push --forceリモートブランチまたは同じブランチを削除することは同じであることに注意してください。
どちらの場合も、新しい SHA1 を公開し、履歴を書き直しました。これは、以前にfeature-branch.

于 2012-10-24T10:35:01.040 に答える