Show both staged & working tree in git diff?

杀马特。学长 韩版系。学妹 提交于 2019-11-26 19:56:30

问题


If I run git diff I see the changes in my working tree, and if I run git diff --staged (alternatively --cached) then I see the changes that are staged (w/ git add) but is there a way with git diff to see all in one go?


回答1:


Is there a way with git diff to see all in one go?

There is, with Git 2.4.0+ (April 2015).

See commit 4055500 from Michael J Gruber mjg:

commit/status: show the index-worktree diff with -v -v (or -vv)

git commit and git status in long format show the diff between HEAD and the index when given -v. This allows previewing a commit to be made.

They also list tracked files with unstaged changes, but without a diff.

Introduce '-v -v' (or -vv) which shows the diff between the index and the worktree in addition to the HEAD index diff. This allows a review of unstaged changes which might be missing from the commit.

In the case of '-v -v' (or -vv), additional header lines

Changes to be committed:

and

Changes not staged for commit:

are inserted before the diffs, which are equal to those in the status part; the latter preceded by 50*- to make it stick out more.

In the OP's case, a simple git status -v -v (or git status -vv) will show both staged and unstaged diffs.




回答2:


If you mean the changes between the working tree and your HEAD commit (i.e. both staged and unstaged changes together) this is just done with:

git diff HEAD



回答3:


The diffuse visual diff tool can do that: It will show three panes if some but not all changes are staged. In the case of conflicts, there will even be four panes.

Invoke it with

diffuse -m

in your Git working copy.

If you ask me, the best visual differ I've seen for a decade.



来源:https://stackoverflow.com/questions/13057457/show-both-staged-working-tree-in-git-diff

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!