在进行"简单"合并(一个没有冲突)后,git show通常只显示类似的内容
commit 0e1329e551a5700614a2a34d8101e92fd9f2cad6 (HEAD, master)
Merge: fc17405 ee2de56
Author: Tilman Vogel <email@email>
Date: Tue Feb 22 00:27:17 2011 +0100
Merge branch 'testing' into master
Run Code Online (Sandbox Code Playgroud)
这是因为,对于合并,git show使用组合的diff格式,该格式省略了与任一父版本一致的文件.
有没有办法强制git仍然显示组合差异模式的所有差异?
做git show -m将显示差异(分别使用新版本和所有父版本之间的成对差异),但我更愿意在相应的列中使用+/-标记的差异,如组合模式.
我知道如何使用vimdiff合并修改,但是,假设我只知道整个文件可以保留或丢弃,我该怎么做?
我不想为每个人打开vimdiff,我改变了想要一个"保持本地"或"保持远程"的命令.
EG:我与标记为已更改的文件合并,因为有人在Windows下打开它,更改EOL,然后提交.合并时,我想保留自己的版本并丢弃他的版本.
我也对此感兴趣:我搞砸了很长时间并希望接受远程文件,丢弃我的更改.
val map1 = Map(1 -> 9 , 2 -> 20)
val map2 = Map(1 -> 100, 3 -> 300)
Run Code Online (Sandbox Code Playgroud)
我想合并它们,并将相同键的值相加.结果将是:
Map(2->20, 1->109, 3->300)
Run Code Online (Sandbox Code Playgroud)
现在我有2个解决方案:
val list = map1.toList ++ map2.toList
val merged = list.groupBy ( _._1) .map { case (k,v) => k -> v.map(_._2).sum }
Run Code Online (Sandbox Code Playgroud)
和
val merged = (map1 /: map2) { case (map, (k,v)) =>
map + ( k -> (v + map.getOrElse(k, 0)) )
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的解决方案.
我们的源代码库中有很多电子表格(xls).这些通常使用gnumeric或openoffice.org进行编辑,主要用于使用dbUnit填充数据库进行单元测试.在我知道的xls文件上没有简单的方法来做差异,这使得合并非常繁琐且容易出错.
我试图将电子表格转换为xml并进行常规差异,但它确实感觉它应该是最后的手段.
我想像git处理文本文件一样执行diffing(和合并).我怎么做,例如发行时git diff?
采取以下案例:
我在主题分支中有一些工作,现在我已准备好合并回主人:
* eb3b733 3 [master] [origin/master]
| * b62cae6 2 [topic]
|/
* 38abeae 1
Run Code Online (Sandbox Code Playgroud)
我从master执行合并,解决冲突,现在我有:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | eb3b733 3 [origin/master]
|/
* 38abeae 1
Run Code Online (Sandbox Code Playgroud)
现在,合并花了我一些时间,所以我再做一次提取并注意到远程主分支有新的变化:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
| | * e7affba 4 [origin/master]
| |/
|/|
* | eb3b733 3
|/
* 38abeae 1
Run Code Online (Sandbox Code Playgroud)
如果我从master中尝试'git rebase origin/master',我将被迫再次解决所有冲突,并且我也失去了合并提交:
* d4de423 2 [master]
* e7affba 4 [origin/master]
* …Run Code Online (Sandbox Code Playgroud) 我有3个CSV文件.每个都有第一列作为人的(字符串)名称,而每个数据框中的所有其他列都是该人的属性.
如何将所有三个CSV文档"连接"在一起以创建单个CSV,每行具有该人员字符串名称的每个唯一值的所有属性?
join()pandas中的函数指定我需要一个多索引,但我对层次索引方案与基于单个索引进行连接有什么关系感到困惑.
有没有办法模拟git merge两个分支,当前工作分支和主分支,但没有做任何更改?
当我不得不做一个时,我经常会有冲突git merge.有没有办法先模拟合并?
我有以下2个data.frames:
a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])
Run Code Online (Sandbox Code Playgroud)
我想找到a1没有的行a1.
这种类型的操作是否有内置功能?
(ps:我确实为它编写了一个解决方案,如果有人已经制作了更加精心设计的代码,我感到很好奇)
这是我的解决方案:
a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])
rows.in.a1.that.are.not.in.a2 <- function(a1,a2)
{
a1.vec <- apply(a1, 1, paste, collapse = "")
a2.vec <- apply(a2, 1, paste, collapse = "")
a1.without.a2.rows <- a1[!a1.vec %in% a2.vec,]
return(a1.without.a2.rows)
}
rows.in.a1.that.are.not.in.a2(a1,a2)
Run Code Online (Sandbox Code Playgroud) 维基百科称3向合并不像双向合并那样容易出错,而且通常不需要用户干预.为什么会这样?
3向合并成功并且双向合并失败的示例将是有帮助的.