11

Git では、実行時間の長いブランチで作業することがあります。準備が整ったときにマージを容易にするために、マスターを時々リベースするのが好きです。

リベース後、ブランチの履歴がそのブランチのリモートの履歴と一致しなくなったため、以前にプッシュしたブランチをリモートにプッシュできません。ですから、まずそれを削除する必要があります。

これは私の現在のワークフローです:

git checkout my_branch
git rebase master
git push origin :my_branch  # Delete remote version of the branch
git push origin my_branch   # Push up my new version of history on this branch

最後の 2 つのコマンドを置き換えることができる単一のアトミック コマンドはありますか?

4

2 に答える 2

15

リモート ブランチの書き換えが許可されている場合は、git push --force my_remote my_branch.

于 2012-06-01T14:06:09.427 に答える
0

そうgit push -fです、例では適切です。

その理由は、リベース前のすべてのコミットが同じままであるため、ブランチ全体を再作成する必要がないからです。

新しいリベースされたローカル コミットを、リベースされていない古いコミットを含むリモート リポジトリに上書きするだけです。


私の同様のユースケースでgit push -fは、リモートリポジトリが誤って削除されたため実行できませんでした。そのため、PATH に git-create シェルスクリプトを作成して、簡単に実行できるようにしました。

git create my_branch
git push -f
于 2020-04-26T13:48:30.413 に答える