私はマスターからのブランチを持つgitリポジトリに取り組んでいます。これをab
ブランチと呼びます。私のチームはブランチに取り組んでおり、ab
githubを使用したプルリクエストワークフローを持っています。私のチームメートの1人が、自分のブランチjeremy_ab_deletions
からブランチへのプルリクエストを行いましたab
。私は彼の変更を確認/テストしていましたが、ab
ブランチにマージしようとしたときに、誤ってマスターにマージし、間違いを見つける前にマスターをgithubにプッシュしました。私が行った変更をgit-revertできると思っていたのですがgit revert SHA
、うまくいったようです...
それで十分だと思い、喜んでabブランチに戻って作業を続けました。しかし今、私は、決してab
マスターになるべきではないブランチからの以前のコミットがすべてマスターにあることに気づきました。それは...かなり混乱しています。彼のブランチは元々から分割されていたので、それをマスターにマージしたので、を使用して元に戻す必要がありました。ab
git revert -m 1 SHA
今日、私はどこが間違っていたのかを正確に把握しようとしていましたが、gitの履歴とreflogに基づいて、あらゆる種類の混乱が生じています。最初に、私は元に戻すことを試みました、そして次にしますgit revert -m 1 SHA
しかしgitは私に言います:
fatal: Mainline was specified but commit 4c431c345dfe0a856967c090932c32f153824085 is not a merge.
だから私は大丈夫だと思います...多分それはマージコミットではなく、私は別のSHAをターゲットにする必要があります。しかし、歴史を見ると、私は一生の間、これらのどれがマージコミットであったかを理解することはできません...
This was supposed to be on AB...
…
d985b5bcf8 Browse code
Nathan B authored 8 days ago
This was supposed to be on AB...
…
0e01911273 Browse code
Nathan B authored 8 days ago
removed unecessary tests
4c431c345d Browse code
Nathan B authored 8 days ago
Apr 17, 2012
removing un-used views and pages
a546f90ed3 Browse code
jeremychurch authored 10 days ago
「これはABにあるはずだった」という2つのコミットは、「削除された不要なテスト」と「未使用のビューとページの削除」コミットを元に戻すための元に戻すコミットです。マスターへの次のコミットは今日で、それ以前のコミットは16日で、どちらも関連していませんでした。実際のマージがどこで発生したかわかりません。
私はreflogを調べて、正確にすべてが台無しになっている場所を確認しました。キーファイルを使用してreflogバージョンを上下に移動し、git reset --hard HEAD@{NUM}
キーファイルを調べて、悪い変更がまだその場所にあるかどうかを確認しました。最後に、これらのreflogに絞り込みました。
1fe2be2 HEAD@{79}: checkout: moving from 1fe2be29c6eda9f9fc9eb0b372ee83b7c15dfc2c to jeremy_ab_deletions
1fe2be2 HEAD@{80}: HEAD@{3}: updating HEAD
4c431c3 HEAD@{81}: HEAD@{1}: updating HEAD
47a97af HEAD@{82}: commit: removed unecessary tests, routes, and controller actions
4c431c3 HEAD@{83}: merge jeremy_ab_deletions: Fast-forward
1fe2be2 HEAD@{84}: checkout: moving from master to ab
d985b5b HEAD@{85}: revert: This was supposed to be on AB...
0e01911 HEAD@{86}: revert: This was supposed to be on AB...
4c431c3 HEAD@{87}: merge jeremy_ab_deletions: Fast-forward
c121a08 HEAD@{88}: checkout: moving from jeremy_ab_deletions to master
4c431c3 HEAD@{89}: commit: removed unecessary tests
a546f90 HEAD@{90}: checkout: moving from ab_page_changes to jeremy_ab_deletions
511b340 HEAD@{91}: checkout: moving from jeremy_ab_deletions to ab_page_changes
a546f90 HEAD@{92}: pull git@github.com:REDACTED/repo.git ab-remove-stuff: Fast-forward
具体的には、ここのHEAD @ {88}には不正なコミットがなく、HEAD@{87}には不正なコミットがあります。したがって、私がコミットで失敗したと仮定するのは合理的ですmerge jeremy_ab_deletions: Fast-forward
......しかし、それがどの「マージコミット」であるかを理解することはできません。私はこれを試しました:
$ git revert -m 1 4c431c3
fatal: Mainline was specified but commit 4c431c345dfe0a856967c090932c32f153824085 is not a merge.
私は...実際のマージコミットが見つからないようですか?誰かが私が間違ったことを知っていますか:/私は今あらゆる種類の道に迷っています。