【发布时间】:2011-05-26 06:52:01
【问题描述】:
我注意到,在处理一两张票时,如果我离开,我不确定自己做了什么,发生了什么变化等等。
有没有办法在 git add 然后 git commit 之前查看对给定文件所做的更改?
【问题讨论】:
标签: git
我注意到,在处理一两张票时,如果我离开,我不确定自己做了什么,发生了什么变化等等。
有没有办法在 git add 然后 git commit 之前查看对给定文件所做的更改?
【问题讨论】:
标签: git
使用git-diff:
git diff -- yourfile
【讨论】:
git diff filename
【讨论】:
显示工作树和索引或树之间的更改、索引和树之间的更改、两棵树之间的更改或磁盘上两个文件之间的更改。
【讨论】:
你在寻找
git diff --staged根据您的具体情况,有三种有用的方法可以使用git diff:
git diff [filename]
--staged 做的完全一样,使用你喜欢的):git diff --cached [filename]
git diff HEAD [filename]
git diff 在目录上递归工作,如果没有给出路径,它会显示所有更改。
【讨论】:
[filename] 上的括号表示一个可选参数。)使用*,您可以让 shell 列出所有文件,因此如果您在子目录中,您只能在该子目录中获取内容(而不是整个repo),您将错过隐藏文件中的更改。
git add -p 是检查所有文件的替代方法。
git diff --staged [filename],因为这是更经常需要的情况。
记住,您提交的是更改,而不是文件。
因此,我很少使用 git add -p(或 magit 等效项)来添加我的更改。
【讨论】:
对我来说git add -p 是最有用的方式(我认为是 git 开发人员的意图?)来审查所有未暂存的更改(它显示每个文件的差异),选择一组应该与提交,然后当你完成所有这些时,然后使用git commit,并重复下一次提交。然后,您可以使每个提交成为一组有用或有意义的更改,即使它们发生在不同的文件中。我还建议为每个票证或类似活动创建一个新分支,并使用checkout 在它们之间切换(如果您不想在切换之前提交,可能使用git stash),但如果您正在做很多快速更改,这可能是一种痛苦。不要忘记经常合并。
【讨论】:
您还可以使用 git 友好的文本编辑器。它们在已修改的线条上显示颜色,为添加的线条显示另一种颜色,为删除的线条显示另一种颜色,等等。
一个很好的文本编辑器是GitHub's Atom 1.0。
【讨论】:
git diff <path>/filename
路径可以是完整的系统路径,直到文件或
如果您在项目中,您还可以粘贴修改后的文件路径
对于带有路径的修改文件使用:git status
【讨论】:
好吧,我的情况是您不想关心文件列表。把它们都展示出来。
当您已经使用文件列表运行 git add 时:
$ git diff --cached $(git diff --cached --name-only)
在git 的更新版本中,您也可以使用--staged,它是--cached 的同义词。
同样可以用于没有添加文件但没有--cached选项。
$ git diff $(git diff --name-only)
“缓存”选项的 Git 命令别名:
$ git config --global alias.diff-cached '!git diff --cached $(git diff --cached --name-only)'
【讨论】:
转到您各自的 git repo,然后运行以下命令:
git diff 文件名
它将打开标记有更改的文件,按回车键向下滚动文件。
附:文件名应包含文件的完整路径,否则您可以通过进入文件的相应目录/文件夹来运行没有完整文件路径的运行
【讨论】:
对于某些路径,其他答案将返回 fatal: ambiguous argument 形式的错误。
在这些情况下,diff 需要一个分隔符来区分文件名参数和提交字符串。例如,要回答您需要执行的问题:
$ git diff --cached -- <path-to-file>
这将显示修改后的文件和上次提交之间的更改。
另一方面:
git diff --cached HEAD~3 <path-to-file>
将显示本地版本与第三次提交前的版本之间的更改。
【讨论】: