Git 如果尝试还原已还原的提交,会发生什么情况?

Git 如果尝试还原已还原的提交,会发生什么情况?,git,github,version-control,versioning,Git,Github,Version Control,Versioning,我试图理解在下面的git revert场景中会发生什么 通过运行 git revert abcdef 我成功地恢复了提交(步骤1)。然后(步骤2),我做了一些更改,并通过运行 touch a.txt && git commit -a -m 'test commit 现在(步骤3),我正在尝试再次恢复在步骤1中已恢复的提交 git revert abcdef 第3步会发生什么?git revert手册页对命令进行了如下描述: 给定一个或多个现有提交,还原相关修补程序引入的更改

我试图理解在下面的
git revert
场景中会发生什么

通过运行

git revert abcdef
我成功地恢复了提交(步骤1)。然后(步骤2),我做了一些更改,并通过运行

touch a.txt && git commit -a -m 'test commit
现在(步骤3),我正在尝试再次恢复在步骤1中已恢复的提交

git revert abcdef

第3步会发生什么?

git revert手册页对命令进行了如下描述:

给定一个或多个现有提交,还原相关修补程序引入的更改,并记录一些记录这些更改的新提交

当对给定命令的作用有疑问时,您总是可以在玩具库中进行一些实验来修正想法。在下面的(公认是简单的)示例中,恢复已恢复的提交是不可操作的;不会创建新的提交

$cd~/桌面
$mkdir测试
$cd测试
$git init
$touch自述文件
$git添加自述文件
$git commit-m“添加自述”
$git还原主机
#保存提交消息
$touch a.txt
$git add a.txt
$git commit-m“添加a.txt”
$git日志--一行
c1e798b添加a.txt
a94219e回复“添加自述文件”
27aba0d添加自述文件
$git还原主机~2
论分行行长
没有要提交的内容,正在清理目录
$git日志--一行
c1e798b添加a.txt
a94219e回复“添加自述文件”
27aba0d添加自述文件

附录(基于附录) 还有一个问题。
git revert
是否可能导致合并冲突

对。归根结底,
git revert
包括应用补丁,这样的操作可能会导致冲突。下面的玩具示例生成一个:

$cd~/Desktop&&mkdir-fruit&&cd-fruit
$git init
#写一行并提交
$printf“apples\n”>fruit.txt
$git add fruit.txt
$git commit-m“add fruit.txt”
#写第二行并进行提交
$printf“oranges\n”>>fruit.txt
$git commit-am“将桔子添加到列表”
#实际上,替换第二行并进行提交
$printf“苹果\n香蕉\n”>fruit.txt
$git commit-am“用香蕉代替橘子”
#检查日志
$git日志--一行
16e76af用香蕉代替橘子
7736641将橙子添加到列表中
5c0257b add fruit.txt
#尝试还原引入第二行(“橙色”)的提交
$7736641吉特
错误:无法还原7736641。。。将橙子添加到列表中
提示:解决冲突后,标记更正的路径
提示:使用“git add”或“git rm”
提示:并使用“git commit”提交结果

注意,
touch a.txt&&git commit-a-m'test commit
不会创建提交;您需要在创建a.txt(假设它不存在)之后准备
a.txt(假设它不存在)。您的命令序列应该类似于,触摸a.txt&&git add-u&&git commit-a-m'test commit。这将消除您第三步的疑问,git revert只创建一个新的commit——您可以使用git reset--hard HEAD^来“删除”它(不过要更加小心!)更具体地说,“revert”的意思是“查看此提交更改的内容,并做出与此完全相反的更改”。在这种特殊情况下,提交添加了
自述文件
,因此相反的是删除
自述文件
。在这里,您要求git再次删除
自述文件
,但它已经不存在了,所以什么也没有发生。如果您还原还原本身,则还原将删除
自述文件
,因此还原将重新添加
自述文件
。Tha回答是nks。还有一个问题。
git revert
是否可能导致合并冲突?