Git には同期されていないコミットが 4 つあり、1 つ先に 3 つ遅れています。先行しているコミットをリモートにプッシュし、他のコミットをリモート ブランチから削除したい。これどうやってするの?
2 に答える
履歴の一貫性のために、リポジトリに既に存在するコミットを削除することはお勧めしません。特に複数のユーザーがいる場合。正しい方法は、別のブランチで不要なコミットを元に戻し、revert-commit をリポジトリにプッシュすることです。マージ/リベース ブランチを先にリポジトリ ブランチでコミットして結果をプッシュするよりもです。コマンドの例を次に示します (必要に応じて変更する必要があります)。
git branch revert-commits origin/yourremotebranch
git checkout revert-commits
# check hashes of needed commits
git log --oneline
# revert them in reverse order
git revert 473f879
git revert 473f878
git revert 473f877
git push
# checkout to branch with ahead-commit
git checkout ahead-commit
# rebase reverts in ahead-commit branch to resolve possible conflicts
git pull --rebase origin yourremotebranch
git push
# delete unneeded revert-commits branch
git branch -D revert-commits
コミットとブランチのログは、git log --graph --decorate --pretty=oneline --abbrev-commit --all
何をしたいのかを理解するのに役立ちます (のように)。
しかし、git でのコミットは「依存関係チェーン」のようなものであり、何をしたいのかを考えていることを考えると、最も簡単な方法は、最後に同期したポイントから新しいブランチを作成し、コミットしたものだけをチェリーピックすることです。必要に応じてそれを使用します (これは、github のようにブランチをプッシュする場合に適用されます)。
これに続いて、マスターで直接作業している場合は、不要なコミットを削除してから、以前に作成したブランチをマージします。
繰り返しますが、私はあなたが投稿した情報で推測しています。