Bash svn还原发生多次提交的提交
所以我环顾四周,没有看到我的具体例子。希望这是有意义的- 我正在寻找一种方法来删除一个文件中发生的更改,但在一次提交中,并保留之后发生的更改(所有更改都保留到HEAD) 比如说 第一次提交foo.jsBash svn还原发生多次提交的提交,bash,svn,version-control,Bash,Svn,Version Control,所以我环顾四周,没有看到我的具体例子。希望这是有意义的- 我正在寻找一种方法来删除一个文件中发生的更改,但在一次提交中,并保留之后发生的更改(所有更改都保留到HEAD) 比如说 第一次提交foo.js var x = "hello"; console.log(x); var x = "hello"; var y = "blah"; console.log(x); console.log(y); var x = "hello"; var y = "blah"; console.log(x);
var x = "hello";
console.log(x);
var x = "hello";
var y = "blah";
console.log(x);
console.log(y);
var x = "hello";
var y = "blah";
console.log(x);
console.log(y);
var z = "world";
第二次提交foo.js
var x = "hello";
console.log(x);
var x = "hello";
var y = "blah";
console.log(x);
console.log(y);
var x = "hello";
var y = "blah";
console.log(x);
console.log(y);
var z = "world";
第三次提交foo.js
var x = "hello";
console.log(x);
var x = "hello";
var y = "blah";
console.log(x);
console.log(y);
var x = "hello";
var y = "blah";
console.log(x);
console.log(y);
var z = "world";
第四次提交(头)foo.js
现在我想恢复第二次提交,使文件看起来像
var x = "hello";
console.log(x);
var z = "world";
console.log(x + " " + z);
有什么建议给我吗?我希望通过还原来实现这一点,而不是手动(删除文件中的行并提交该行)
我试过()
在提交2之后,它消除了所有的更改
>svn log
------------------------------------------------------------------------
r5 | Badger | 2015-02-01 12:03:39 +0500 (Вс, 01 фев 2015) | 1 line
Change 3
------------------------------------------------------------------------
r4 | Badger | 2015-02-01 12:03:00 +0500 (Вс, 01 фев 2015) | 1 line
Change 2
------------------------------------------------------------------------
r3 | Badger | 2015-02-01 12:02:02 +0500 (Вс, 01 фев 2015) | 1 line
Change 1
------------------------------------------------------------------------
r2 | Badger | 2015-02-01 12:01:22 +0500 (Вс, 01 фев 2015) | 1 line
Initial state
------------------------------------------------------------------------
r1 | Badger | 2015-02-01 12:00:01 +0500 (Вс, 01 фев 2015) | 1 line
Imported folder structure
------------------------------------------------------------------------
您的更改在我的r3中,如您所见
>svn diff -c 3
Index: foo.js
===================================================================
--- foo.js (revision 2)
+++ foo.js (revision 3)
@@ -1,2 +1,4 @@
var x = "hello";
+var y = "blah";
console.log(x);
+console.log(y);
有头国家
>svn cat foo.js
var x = "hello";
var y = "blah";
console.log(x);
console.log(y);
var z = "world";
console.log(x + " " + z);
我不能在没有冲突的情况下反向合并它(diff是上下文感知的)(我的repo是单个文件,因此我可以使用
)
对于这种冲突,最好的策略可能是使用任何预先配置的GUI工具进行合并
或者就地编辑文件(您知道,您希望得到哪个结果)无法有选择地将文件的一部分恢复到以前的版本,而不会丢失以后的更改。SVN如何才能确定你想要保留的每一版本的哪一行以及你想要丢弃的哪一行?是的,我的意思是,这就是为什么我以“希望这是有意义的”开头我觉得这可能是不可能的,但我想知道是否有某种技巧/黑客可以做到这一点,你知道这在git中是否可行吗?不,因为git也不能读懂你的心思。虽然我听说在(遥远的)未来的路线图中,还没有风投可以读心术。这不是真正的“读心术”--我不确定你怎么会认为这是一项不可能完成的任务,我相信有人能解决这个问题