3

次のように仮定します。

mkdir test; cd test
echo "1" > file1; git init; git add .; git commit -m "initial - file 1"   # 1st commit on master
echo "2" > file2; git add .; git commit -m "file 2"                       # 2nd commit on master
git checkout -b newbranch                                                 # creates newbranch
echo "1" >> file1; git add .; git commit -m "changed 1"                   # 1st commit on newbranch
git checkout master                                                       # goes to master
echo "2" >> file2; git add .; git commit -m "changed 2"                   # 3rd commit on master
git merge newbranch -m "merge commit"                                     # merge newbranch on master
echo "3" > file3; git add .; git commit --amend -m "merge commit"         # amend merge commit and adds file3
git rebase HEAD~2                                                         # don't change anything, just leave
ls                                                                        # there isn't file3 anymore!

マージコミットを回復して、修正された変更が失われないようにする方法はありますか?

4

1 に答える 1

0

行った変更はまだreflogにあります。

偶発的なリベースの後(「失われた」コミットについて話しているので、偶然だと思います)、実行しgit reflogます。

一番上のセットの最後の「rebase:」行のすぐ下にあるエントリを見つけます。その左側のコミット ハッシュは、リベースを開始する前に修正されたマージ コミットです。

于 2013-03-30T01:55:24.163 に答える