- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在使用 git revert
命令时遇到问题。我使用 Ubuntu 12.04 Linux 和 Git 版本 1.7.9.5。
b_test_repo
,并从远程 origin b_test_repo
对其进行了跟踪。A
),并且仅在本地 master
分支中成功提交了它。为了尝试 git revert
,我又生成了 3 个提交,每个提交都添加了一行文本。所以我的 master
提交历史看起来像:
A - B - C - D
在哪里
A
- 包含第 1 行和第 2 行的新文件B
- 添加一行C
- 添加一行D
- 添加一行在所有这些提交之后,文件包含 5 行:
line1
line2
line3
line4
line5
然后,我想还原提交 B
,这将呈现没有 line3
的文件,这是由提交 B
添加的:
git status
# On branch master
nothing to commit (working directory clean)
我输入:
git revert -n master~2
在不提交更改的情况下恢复提交 B
的效果,但得到以下内容:
error: could not revert 1a13ad6... Adding one line
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'
我很困惑为什么我会遇到冲突,即为什么 Git 无法确定文件中需要更改的内容。
我在这里错过了什么?请赐教!
最佳答案
删除该行将与更高版本发生冲突,这将更改相同行。
因此如“What should I do when git revert aborts with an error message?”中所述,您需要解决 merge 、添加和提交。
一种更简单的还原提交的方法是交互式 rebase :
git rebase -i <SHA1 commit a>
然后你放弃提交 b
.
但这仅在您尚未将分支推送到 upstream repo 时才有效。 ,因为它确实重写了提交历史。
如果你已经推送了,那么 git revert
是正确的方法,以生成一个新的提交取消 b
(并将新提交推送到上游仓库)。
详细信息:您的示例生成以下 merge 冲突:
C:\Users\VonC\prog\git\tests\18779372\r1>git lg
* 10b9953 - (HEAD)
* 07fff99 - c
* 3d888c4 - b
* 8c7155f - a
( git lg
是一个 alias for a fancy git log
)
如果有冲突,我更喜欢在 merge 或还原之前同时查看源(他们的)、目标(我们的)和原始部分:
git config merge.conflictstyle diff3
然后还原:
git revert -n master~2
那会给出:
line1
line2
<<<<<<< HEAD
line3
line4
line5
||||||| 3d888c4... b
line3
=======
>>>>>>> parent of 3d888c4... b
那样的话,你会看到什么git revert
做:一个 merge 在:
b
(显然不包含 b
修饰)HEAD
merge 无法决定对从第三行开始的部分做什么:
a
中不存在该部分(=== >>>>
部分:“他们的”一方)b
(||||
和 ====
之间的原始部分,与之前的 revert
一样,只有 line3
)HEAD
中被修改(<<<< ||||
部分,添加了 line4
和 line5
,尽管 line3
看起来没有变化)如果您从提交 a
开始, merge 冲突会更加清晰作为:
line1
line2
line3
line4
line5
最后提交 d
作为:
line1
line2
line3b
line4c
line5d
(提交 b
添加“d
”到第 3 行,提交 c
添加“c
”到第 4 行,提交 d
添加“d
”到第 5 行)
然后还原会给你:
git config merge.conflictstyle diff3
git revert -n master~2
cat afile.txt
line1
line2
<<<<<<< HEAD
line3b
line4c
line5d
||||||| 4ddccc1... b
line3b
line4
line5
=======
line3
line4
line5
>>>>>>> parent of 4ddccc1... b
这里是从第 3 行开始的部分:
line3 -line4 -line5
在“他们的”=== >>>
,它是 b
的父级,或提交 a
)line3b-line4 -line5
在提交 b
(原始部分 ||| ===
,在 merge/还原之前)line3b-line4c-line5d
在 HEAD
'我们的' <<< |||
三个不同的内容,merge没办法知道要做什么。
关于Git revert 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18778539/
我对java有点陌生,所以如果我犯了一个简单的错误,请原谅我,但我不确定我哪里出错了,我收到的错误是“预期的.class,预期的标识符,而不是声明, ';'预期的。”我尝试了不同的方法,并从这些方法中
This question already has answers here: chai test array equality doesn't work as expected (3个答案) 3年前
我正在学习 Java(对不起,我的英语很差,这不是我的母语),当我在 Eclipse (JavaSE-1.7) 中在我输入的每个“try”中执行“try-finally” block 时,会出现以下消
我收到两个错误,指出 token 上的语法错误,ConstructorHeaderName expected instead & token “(”上的语法错误,< expected 在线: mTM.
我找不到错误。 Eclipse 给我这个错误。每个 { } 都是匹配的。请帮忙。 Multiple markers at this line - Syntax error on token “)”,
代码: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class DoubleIt extends
我正在用 python(Vs 代码)编写代码,但出现此错误: Expected ")" Pylance 错误发生在:def main() 我试着运行我的 main 并将它打印到我的屏幕上。我用谷歌搜
我正在尝试按照 documentation 中的建议使用异步函数。但我收到此错误 意外的 token ,预期 ( async function getMoviesFromApi() { try
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
第一行包含一个表示数组长度的整数p。第二行包含用空格分隔的整数,这些整数描述数组中的每个元素。第三行打印一个整数,指示负数组的数量。 package asgn3; import java.util.*
好的,我是初学者,我必须修复此 java 表达式语言代码才能在我的系统 (Windchill) 中工作,但看起来我在语法中遗漏了一些内容: LWCNormalizedObject lwc =
我无法编译我的程序! 我想我缺少一个花括号,但我怎么也看不出在哪里! import javax.swing.*; import java.awt.*;
我的 jQuery 代码有问题,我的 Firebug 向我发出警告:需要选择器。 这是代码: $("img[id$='_tick']").each(function() { $(this).c
我的新类(class) Fountainofyouth 遇到了问题。尝试构建整个项目后,调试器显示 warning: extended initializer lists only available
我已经从 Java 转向 CPP,并且正在努力围绕构造构造函数链进行思考,我认为这是我的问题的根源。 我的头文件如下: public: GuidedTour(); GuidedTour(string
鉴于以下 for(var i=0; i< data.cats.length; i++) list += buildCategories(data.cats[i]); jsLint 告诉我 Expect
我有这个 json,但 Visual Studio Code 在标题中给了我警告。 [ { "title": "Book A", "imageUrl": "https:
我正在尝试编写一个有条件地禁用四个特殊成员函数(复制构造、移动构造、复制赋值和移动赋值)的包装类,下面是我用于测试目的的快速草稿: enum class special_member : uint8_
所以我用 F# 编写了一个非常简单的程序,它应该对 1000 以下的所有 3 和 5 的倍数求和: [1..999] |> List.filter (fun x -> x % 3 = 0 || x %
我是一名优秀的程序员,十分优秀!