一个项目,fork 出来,修改了其中一个文件,git commit & push,然后获取上游的更新,并和自己的代码 merge,merge 后我对原来那个文件的修改被合并,变成上游的代码,现在我想把该文件回退到之前我修改并提交的状态,但是我用 git log 查看的时候出现了标题说明的问题…十分不理解… (图里,我是 hyzhang)
项目在这里
认证高级PHP讲师
を使用したため、完全な履歴を確認し、復元したいバージョンを見つけて確認し、コミットします。 -2呀,然后合并来的上游修改比你的新,所以你自己的修改排在前2之外了。不要用-2
-2
git extras をインストールしてから git revert を実行すると、すべてが自動的に処理されます
git log --pretty=oneline modules.rst を試してくださいgit log --pretty=oneline modules.rst
git log --pretty=oneline modules.rst
看到这个界面,我还是要再推荐下 tig
我 clone 了你的库,然后我分别 checkout 到你之前的 commit 上然后创建新的分支,再进行 diff 操作,以下是结果:
clone
checkout
commit
diff
从 fix typo and translation 到 Merge...无 modules.rst 的修改记录
fix typo and translation
Merge...
modules.rst
从 add... 到 fix typo and translation 仍然无 modules.rst 的修改记录
add...
从 fix typo 到 add... 终于出现了 modules.rst 的修改记录
fix typo
所以很明显 git 的 log 记录没有错,你最近的几次 commit 并没有修改 modules.rst 文件,它又怎么会出现在 log 中呢?
git
log
最近的四次 commit 记录:
根据 git diff 的结果,可以确定从 fix typo 到 add... 的这次提交中是对 modules.rst 最近的操作,所以查看 modules.rst 的 log 肯定只显示到 add... 这次 commit了。
git diff
输入 git log --merges 命令,显示用于 merge 的 commit:
git log --merges
merge
发现了吗?与之前的 merge 相比,你这次 merge 是存在 conflict 的,而且这个 conflict 和你的问题文件 modules.rst 还有关,所以我分析这应该就是问题所在,应该是你的文件产生了冲突,但是你没有解决冲突,而又 merge 成功,这些冲突不知道什么原因被忽略,所以它们不会作为 commit 的一部分进入 log
conflict
に対するものであると判断できます。 rst
コミット
を使用したため、完全な履歴を確認し、復元したいバージョンを見つけて確認し、コミットします。
-2
呀,然后合并来的上游修改比你的新,所以你自己的修改排在前2之外了。不要用-2
git extras をインストールしてから git revert を実行すると、すべてが自動的に処理されます
git log --pretty=oneline modules.rst
を試してくださいgit log --pretty=oneline modules.rst
看到这个界面,我还是要再推荐下 tig
我
clone
了你的库,然后我分别checkout
到你之前的commit
上然后创建新的分支,再进行diff
操作,以下是结果:从
fix typo and translation
到Merge...
无modules.rst
的修改记录从
add...
到fix typo and translation
仍然无modules.rst
的修改记录从
fix typo
到add...
终于出现了modules.rst
的修改记录所以很明显
git
的log
记录没有错,你最近的几次commit
并没有修改modules.rst
文件,它又怎么会出现在log
中呢?最近的四次
commit
记录:根据
git diff
的结果,可以确定从fix typo
到add...
的这次提交中是对modules.rst
最近的操作,所以查看modules.rst
的log
肯定只显示到add...
这次commit
了。输入
git log --merges
命令,显示用于merge
的commit
:发现了吗?与之前的
このインターフェースを見た後でも、私は tig をお勧めします🎜 🎜ライブラリをmerge
相比,你这次merge
是存在conflict
的,而且这个conflict
和你的问题文件modules.rst
还有关,所以我分析这应该就是问题所在,应该是你的文件产生了冲突,但是你没有解决冲突,而又merge
成功,这些冲突不知道什么原因被忽略,所以它们不会作为commit
的一部分进入log
clone
し、以前のcommit
にcheckout
して新しいブランチを作成し、diff
を実行します。 > 操作の結果は次のとおりです: 🎜 🎜🎜 🎜fix typo and translation
からMerge...
までのmodules.rst
の変更記録はありません🎜 🎜🎜 🎜add...
からfix typo and translation
まで、modules.rst
の変更記録はまだありません🎜 🎜🎜 🎜fix typo
からadd...
まで、最後にmodules.rst
の変更記録が表示されます🎜 🎜つまり、git
のlog
レコードが正しいことは明らかです。最近のcommit
はmodules.rst
を変更しませんでした。 > ファイルをlog
に表示するにはどうすればよいですか? 🎜 🎜最後の 4 つのcommit
レコード:🎜 🎜
git diff
の結果によると、fix typo
からadd...
への送信はに対するものであると判断できます。 rst
の最新の操作であるため、modules.rst
のlog
を確認すると、add...
のみが表示されます。 > 今回はコミット
します。 🎜 🎜git log --merges
コマンドを入力して、merge
に使用されるcommit
を表示します。 🎜 🎜🎜 🎜見つけましたか?以前のmerge
と比較すると、今回のmerge
にはconflict
があり、このmerge
は、以前のmerge
とは異なります。問題ファイルmodules.rst
はまだ関連しているため、これが問題であると分析しました。ファイルが競合しているはずですが、競合を解決せず、merge
を実行しました。 > 成功した場合、これらの競合は不明な理由で無視されるため、commit
の一部としてlog
の履歴には記録されません。さて、お休みの時間です。回答が質問者様のお役に立てば幸いです。 :)🎜