【发布时间】:2018-02-25 15:56:58
【问题描述】:
我的 git 日志如下所示:
commit b265eb43abd7704ed2560cca7c635dbd47b677b0
Date: Sun Feb 25 10:20:58 2018 -0500
added C3
commit 536d071bf99059ff8b519ae96ce6e97d92fbc7d7
Date: Sat Feb 24 20:50:15 2018 -0500
added B2
commit 6e46e4ff4135b4df55866a5df9af963e3d6ff218
Date: Sat Feb 24 11:07:58 2018 -0500
added a
commit 93ad202a08660a62f76496d728a3a89d727350a9
Date: Sat Feb 24 11:05:56 2018 -0500
first commit
我想撤消我之前的提交并返回提交 6e46e4ff4135b4df55866a5df9af963e3d6ff218。但是,我想保留历史记录,不想从 git 日志中删除“添加的 C3”和“添加的 B2”,以便排除 git reset --hard 6e46e4ff4135b4df55866a5df9af963e3d6ff218。
我在网上做了一些阅读,人们说完美的工具是“git revert”。我尝试“git revert 6e46e4ff4135b4df55866a5df9af963e3d6ff218”并看到以下内容
error: could not revert 6e46e4f... added a
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
我打开了我要还原的文件并看到以下内容:
Test
<<<<<<< HEAD
adding A
adding B
adding C
=======
>>>>>>> parent of 6e46e4f... added a
有人告诉我这意味着我有“合并冲突”。但我不想将项目的当前状态与项目的旧状态合并 - 我想用项目的旧状态替换项目的当前状态。
有没有什么方法可以简单地用旧的提交替换项目的当前状态,并让它成为新的提交?我可以通过以下方式手动执行此操作:1) git checkout ,2)将签出的项目复制到备份目录,3)在主文件夹中执行 git checkout master ,3)删除主文件夹中的所有文件,用备份替换它们旧的提交。但我更愿意学习如何以 git 方式进行操作。我还希望避免使用分支解决方案,因为我想学习使用“git revert”——如果它不能用于这个非常基本、直接、规范的示例,它可能用于什么?
【问题讨论】:
-
为什么不删除冲突,提交然后还原?
标签: git