是否可以设置自定义工具以在Git中合并具有特定扩展名的文件?
感谢您的任何指示!
更新
我无法找到比定义自定义difftool更好的解决方案,并且像@jarodeells建议的那样手动调用它:
[diff]
tool = mydiff
[difftool "mydiff"]
cmd="script.sh \"$LOCAL\" \"$REMOTE\""
Run Code Online (Sandbox Code Playgroud)
然后明确地调用它:
$ git difftool -t mydiff someFileWith.ext
Run Code Online (Sandbox Code Playgroud) 我在github上有一个本地仓库和一个远程仓库.出于商业原因,它们不同步.我在当地做了很多工作,现在我正在手动将新的东西添加到我的本地.没有分支.
当我使用命令时,
git diff --color master..origin/master
Run Code Online (Sandbox Code Playgroud)
我得到了很好的结果,显示了改变了......我添加到本地仓库的东西标有 - 符号,并以红色显示; 而遥控器上的内容以绿色显示+符号.
有没有办法只显示遥控器上的新功能而不是本地功能?也就是说,向我展示遥控器上的任何新文件,并向我显示遥控器上的文件中的任何新行或修改行(显示所有绿色+)
谢谢.
有没有办法让Git indent/美化/漂亮打印两个版本的C++源文件,然后再进行区分?
我不希望Git向我展示在有人自动格式化代码之后引入的无数更改.
示例用法:在缩进git difftool --indent-before-diffing path/to/file原始版本path/to/file和修改版本后,我点击并获取更改path/to/file.
我知道的主要功能是gist和github能够提供更不是所有的命令进行了深入的控制.
现在我需要在我的git存储库中维护一些历史性的更改,我正在寻找的是,是否有任何自动方式(命令)将某个分支中的git更改作为.diff推送到gist文件中?假设我想在gist文件中发送拉取请求.
实际上我可以获得一些提交的.diff并将内容复制粘贴到手工创建的gist文件中.
任何建议都会受到高度赞赏.
BR.
我正在使用git 1.9.4 for windows(http://git-scm.com/download/win).
$ git difftool branchA branchBvsdiffmerge为diff中的所有文件一次
打开一个文件.
$ git difftool --no-prompt branchA branchB 尝试一次打开所有文件(我想要发生的事情),但vsdiffmerge无法正常处理任何发生的事情.
如何配置我的difftool所以行为是vsdiffmerge的一个实例,所有差异的多个选项卡?
gitconfig:
[diff "astextplain"]
textconv = astextplain
[rebase]
autosquash = true
[diff]
tool = vsdiffmerge
[difftool]
prompt = true
[difftool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
keepbackup = false
trustexistcode = true
[merge]
tool = vsdiffmerge
[mergetool]
prompt = true
[mergetool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$REMOTE\" …Run Code Online (Sandbox Code Playgroud) 我一直在研究一个项目,并在一个文件夹中编辑了一堆文件.此文件夹驻留在我的本地,而不是由GIT监视.我通常会将整个文件夹复制到GIT观看的另一台计算机中,然后将其推送到回购站.现在的问题是,由于行结尾和空格被显示,一堆文件被显示为已更改,因为它正从windows复制到linux盒子.
我执行了以下命令:git diff --stat显示所有更改的行/字符更改的文件.
正如您所看到的,这些文件中的许多文件都没有进行任何更改.但是,它们仍然显示在我的git状态修改部分.
我如何删除或恢复这些恢复正常,因为我从未改变这些文件的任何内容?
假设如下:
HEAD/master
|
A<--B<--C<--D<--E<--F<--G<--J
^
official
Run Code Online (Sandbox Code Playgroud)
哪里official有分店。
我想挑选 2 个提交到official分支,例如E,J
这两个提交都是影响相同 3 个文件的修复。
当我这样做时git cherry-pick E一切顺利,但当我这样做时,git cherry-pick J我遇到了一些冲突。
查看差异,我意识到我还需要挑选提交 F,它在这 3 个文件中的两个文件中进行了更改,这些更改基本上是方法定义更改,并且J是在此基础上完成的。
因此,只需执行git cherry-pick F && git cherry-pick J
问题即可轻松解决:
如果我不知道在这些文件中所做的更改并且提交 F 是更改许多文件的大提交:是否有另一种方法可以确定我们尝试选择的提交取决于哪个提交而无需手动执行 git 日志在文件上并通过提交提交?
我在代码库中递归替换了许多单字模式.在提交之前,我需要检查每个是否有错误的替换.这将帮助我很多有git add -p使用什么样的格式--word-diff与使用git diff,其中只有改变的话被标记,而不是整条生产线.
有人在这里问了同样的问题,但也许从那时起就实施了? https://groups.google.com/forum/#!topic/git-users/7uO2OUJGvP0
我有一个名为branch的分支0726b,我希望将当前工作副本与该分支区分开来.显然,还有一个提交,它具有从该序列开始的哈希,因为我得到了
$ git diff 0726b
warning: refname '0726b' is ambiguous.
Run Code Online (Sandbox Code Playgroud)
我如何告诉git它应该将参数作为分支名称?
我通过命令创建了一个差异文件:
git --no-pager diff --no-index --stat pathA pathB >\diff.log
接下来,我执行了一个命令:
git apply --index --ignore-space-change --ignore-whitespace \diff.log
在执行过程中,我遇到了一个错误:
错误:删除 1 个前导路径名组件时,git diff 头缺少文件名信息(第 2138 行)
第 2138 行导致:
第 2136 章
2137 新文件模式 100644
2138 索引 0000000000000000000000000000000000000000..e69de...
第 2139 章
我试过一个命令“git apply --reject ...”但它也没有用。我还添加了忽略 chmod 更改的配置(git config core.fileMode false)并且没有任何更改。
git ×10
git-diff ×10
git-branch ×2
c++ ×1
diff ×1
gist ×1
git-apply ×1
git-config ×1
git-log ×1
git-merge ×1
git-patch ×1
github ×1
indentation ×1
pretty-print ×1