在提交git之前,如何查看文件中发生了什么变化?

我注意到,在一两张票上工作的时候,如果我走开,我不知道我的工作是什么,改变了什么,等等。

有没有办法看到在git add之前给定文件所做的更改,然后git commit?

你正在寻找git diff 。 根据您的确切情况,有三种有用的方式来使用它:

 # show differences between index and working tree # that is, changes you haven't staged to commit git diff [filename] # show differences between current commit and index # that is, what you're about to commit git diff --cached [filename] # show differences between current commit and working tree git diff HEAD [filename] 

它将在目录上recursion地工作,如果没有给出path,它将显示所有的改变。

使用git-diff

 git diff yourfile 

git diff filename

git diff

显示工作树与索引或树之间的更改,索引与树之间的更改,两棵树之间的更改或磁盘上两个文件之间的更改。

对我来说, git add -p是最有用的方式(也是我认为由git开发人员devise的),可以查看所有未分离的更改(显示每个文件的差异),select一组应该与提交一致的更改,那么当你完成所有这些操作时,使用git commit ,然后重复下一次提交。 然后,您可以使每个提交是一个有用的或有意义的一组更改,即使它们发生在各种文件中。 我还build议为每张票或类似的活动创build一个新的分支,并使用checkout在它们之间切换(如果你不想在切换之前提交,可以使用git stash ),但是如果你做了很多快速的改变,这可能是疼痛。 不要忘记经常合并。

请记住,您正在提交更改 ,而不是文件。

出于这个原因,我不使用git add -p (或者相当于magit)添加我的更改是非常罕见的。

 git diff <path>/filename 

path可以是你完整的系统path,直到文件或
如果您在项目中,也粘贴修改过的文件path
对于具有path使用的修改文件: git status

你也可以使用友好的文本编辑器。 它们显示已被修改的行上的颜色,添加的行的另一种颜色,删除的行的另一种颜色等。

一个很好的文本编辑器就是GitHub的Atom 1.0 。

那么,我的情况,当你不想关心文件列表。 只显示他们。

当你已经用你的文件列表运行git add

 $ git diff --cached $(git diff --cached --name-only) 

没有--cached选项也可以使用不添加的文件。

 $ git diff $(git diff --name-only) 

Git命令别名为“caching”选项:

 $ git config --global alias.diff-cached '!git diff --cached $(git diff --cached --name-only)'