我在git存储库中更改了几个文件,但还没有提交它们.
我可以通过调用获得更改列表git status.但除了文件名之外,我如何获得我已更改的行或内容列表?
我最初想过使用git diff,但它似乎只对比较已经提交的更改.
通常我只是这样做meld .,但在这种情况下,我通过ssh连接到外部服务器.
我一直在从返回的信息中收集数据
git diff <commitId>..<commitId>
Run Code Online (Sandbox Code Playgroud)
然后我遇到了 @@ -1 +1 @@
我无法弄清楚那是什么告诉我的.我在Google上搜索了一下,但无济于事.
如何确定给定变更集中更改的所有文件?
在这种情况下,我不是在寻找差异,只是添加/删除/修改列表.
hg log -vprX 做一个差异列表,但我只想要文件.
如何比较两个.jar文件?它们都有编译的.class文件.
我希望在方法变化等方面有所不同.
我已经打开了两个文件.它们以垂直模式打开,旁边是下一个.我可以在不离开或关闭Vim的情况下立即区分这两个文件吗?
我想${SHA}通过Web界面从GitHub 获得一次提交(让我们称之为).
例如,类似于:
$ git clone http://github.com/foo/bar
$ cd bar
$ git format-patch -o .. ${SHA}~1..${SHA}
$ cd ..
$ rm -rf bar
Run Code Online (Sandbox Code Playgroud)
...但无需克隆整个存储库(问题中的repo很大).
显然GitHub可以通过web接口显示给定提交的差异,但是我如何将其提取到(统一)差异文件中(理想情况下,提交消息完好无损)?
如何将unix diff命令的结果左右绘制而不是一个差异?请参阅下面的示例:
diff /tmp/test1 /tmp/test2
1,4c1,2
< asfdsadf
< asdfsad
< fsaf
< fdsadf
---
> asdfsafdsf
> saf
6,8d3
< sadf
< asdf
< sadf
10d4
< fasd
12,13c6,14
< sadfa
< fd
---
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> safa
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西:
diff /tmp/test1 /tmp/test2
1,4c1,2
< asfdsadf > asdfsafdsf
< asdfsad > saf
< fsaf
< fdsadf
---
6,8d3
< sadf
< asdf
< sadf
10d4
< …Run Code Online (Sandbox Code Playgroud) 我可以使用类似的东西在两个版本之间获得差异
svn diff -r 100:200 > file.diff
Run Code Online (Sandbox Code Playgroud)
但问题是由于空白的变化,有很多行出现.有没有办法只编写实际以显着方式而不仅仅是在空白中改变的那些行?
我没有看到'git format-patch'和'git diff'的输出有什么区别,有没有?并且我不能使用'git diff'生成补丁然后使用git apply应用它吗?
我的问题是我对索引添加了更改,但显然git format-patch只接受提交,所以如果我可以使用diff的输出,那么我可以使用此命令为索引中的更改生成一个补丁:
git diff --cached > index.patch
Run Code Online (Sandbox Code Playgroud)