在提交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)'