我正在寻找一个简单的git命令,它提供了一个格式良好的所有文件列表,这些文件是散列(SHA1)给出的提交的一部分,没有任何无关的信息.
我试过了:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Run Code Online (Sandbox Code Playgroud)
虽然它列出了文件,但它还包含每个文件的不需要的差异信息.
是否有另一个git命令只提供我想要的列表,以便我可以避免从git show输出中解析它?
我有两个分支与完全相同的文件(如果你想知道它是一个.sql文件),我想以交互方式合并它.
我想要在出现冲突(或命令行)时像我一样打开一个差异程序,并准确选择哪些行去哪里.
反正有没有这样做?
我在git中删除了几次文件,但随着其他分支的合并,它会再次出现; 我猜是这样的:
o-- a topic --o
/ \
o-- [create file] --o-- [delete file] --o-- [file exists again]
Run Code Online (Sandbox Code Playgroud)
由于我们使用"内部版本"使用git,因此我特别难以掌握正在发生的事情,即我创建了我推出的发布分支,我们的发布经理将其拉出并合并到master并且我拉动他的主人.
如何找到我(或其他人)删除文件的位置以及重新引入文件的合并?谢谢!
我有树枝feature1和master.
然后feature1我将文件重命名dir/file.txt为dir2/file2.txt.
之后我改变了文件,master一周之后也改变了文件feature1.
我在整个项目中改变了40个文件.
当我尝试合并master到feature1我使用低重命名阈值时.大多数文件都是正确自动合并的.提供了一些文件用于手动解决冲突.
但是一些具体文件既不会出现在merge自动合并的响应中,
也不会正确合并.在正确的情况下,我期待我可以解决的两个结果中的一个:
1.它不会检测重命名,只是将另一个添加dir/file.txt到feature1分支中.
它会检测重命名并让我手动解决冲突.
我查看时有很多变化
git difftool master:dir/file.txt feature1:dir2/file2.txt
因此我假设git识别重命名并决定保留我的版本而不通知我发生了什么.我该如何解决/调试呢?
这是我使用的命令
git config merge.renameLimit 9999999999
git merge --no-ff -Xrename-threshold=20 -Xignore-space-change master
Run Code Online (Sandbox Code Playgroud)
在使用feature1分支时,我已删除了dir/file.txt.
也许git假定这个文件应该删除,因此忽略它的存在master.
重命名检测失败,尽管文件的相似性保持不变(levenshtein距离小于内容长度的2%)
另一个讨论建议"手动合并"将文件从分支复制到分支.
正确解析了其他一些文件正确解析
CONFLICT (rename/delete): images/ab.gif deleted in master and renamed in HEAD. …