如何在Git推送中修改文件?
我想获取上次推送中修改的所有文件 推送可以有多个提交 目前我可以通过以下命令获取上次提交的修改文件:如何在Git推送中修改文件?,git,gitlab,Git,Gitlab,我想获取上次推送中修改的所有文件 推送可以有多个提交 目前我可以通过以下命令获取上次提交的修改文件: git diff-tree --no-commit-id --name-only -r HEAD 你就快到了。 可以通过将当前磁头与原点分支进行比较来实现这一点。 git-diff-tree--无提交id--仅名称-r头..源代码/主代码 例子 最后一个命令显示输出: addnewfile.txt addexistingfile.txt git push不会修改任何文件 git push添加
git diff-tree --no-commit-id --name-only -r HEAD
你就快到了。
可以通过将当前磁头与原点分支进行比较来实现这一点。
git-diff-tree--无提交id--仅名称-r头..源代码/主代码
例子
最后一个命令显示输出:
addnewfile.txt
addexistingfile.txt
git push
不会修改任何文件
git push
添加或删除提交。提交具有文件的快照。提交没有更改,它们只有文件
以下是一个文件:
$ cat name-of-file
I am the contents of file name-of-file.
我对此文件做了哪些更改?我给了你一个快照,我的问题是:有什么变化?我在问题中遗漏了哪些关键信息
想一想,然后继续阅读:给定两个快照,您将如何找到更改?git diff
有帮助吗
您希望使用哪两个快照?
git diff
命令可以显示任意两个快照之间的更改:
git diff <hash#1> <hash#2>
然后查看哪个提交散列出现。然后运行git log master
。git rev parse的输出与git log的第一行之间有什么共同之处
在中生成Git哈希ID的方法有一个完整的列表(如果有压倒性的话),但日常工作中最有用的方法是分支名称,如master
,标记名称,如v2.1
,以及远程跟踪名称,如origin/master
。名称HEAD
表示当前提交,1如果您愿意,可以将其缩写为@
1名称HEAD
也指当前分行名称。Git决定您是使用HEAD
谈论提交哈希ID还是谈论分支名称的方式是,一些命令需要分支名称,而另一些命令需要提交哈希ID。Git rev parse
命令可以问任何一个问题,但是默认情况是查找散列ID。您可以使用git rev parse--symbolic full name HEAD
来询问分支名称,或者,如果您非常认真,您可以在这种情况下使用git symbolic ref HEAD
git diff tree
是两次提交的git diff
的管道版本
您识别的命令,git diff tree
,是从另一个计算机程序运行git diff
的一种方法。如果您自己在自己的计算机屏幕上运行git diff
来查看差异,您通常会使用git称之为“瓷器”的命令,该命令以浴室中更为精致、面向用户的部分(如水槽)命名。如果您正在运行git diff
以获取差异以提供给另一个计算机程序,您可能需要在此过程中拆解和重新组装各种设备,执行git称之为管道的操作,在这里您将使用git diff tree
来比较两个特定的提交
git-diff-tree
命令有一个特殊的额外特性:如果您仅使用一个提交哈希ID或解析为此类哈希ID的名称(如HEAD
),git将从该提交中提取父提交列表。然后Git将区分提交的父级和该提交。这就是运行git diff tree options HEAD
时所看到的
要选择两个要比较的提交,只需在命令行上使用两个哈希ID或它们的名称
普通git diff
也可以比较其他东西
使用git-diff
命令可以调用git-diff-index
或git-diff-files
管道命令,而不是git-diff-tree
。这些允许您将提交的内容与索引的内容、工作树的提交或工作树的索引进行比较
提交、索引和工作树
请记住,Git在任何时候都有每个文件的三个活动副本:
HEAD
提交中的冻结副本可通过git show HEAD:path
获得
- 工作树副本是可以查看和编辑的普通文件。Git并没有真正使用这个文件李>
- 在这两个副本之间,Git保留它将放入下一次提交的文件的副本。此副本位于Git所调用的索引、暂存区域或缓存中。您可以使用git show:path查看此副本
当您运行git commit
时,git会立即打包索引中的内容,并冻结这些内容以生成新的提交快照。这就是为什么您必须经常运行git add
。git add
命令将某些工作树文件的内容复制到索引中,更新甚至创建索引版本
文件的索引版本对Git很重要。提交的版本已冻结为提交,无法更改。只要承诺持续,它们就会持续。每个文件的工作树版本都是您可以查看和使用的版本,但Git并不关心它。每个文件的索引版本都是Git需要的,为了进行新的提交,Git存在的原因是进行新的提交,所以Git关心提交和索引
工作树是给你的。Git什么都不想要也不需要它;这是Git进行新提交所需要的,供您使用、使用和复制以更新索引
摘要:提交是快照;差异比较快照
所有这些都是Git制作快照的方式和原因。Git不处理更改。它制作快照。您可以随时比较两个快照,看看它们之间有什么不同。您看到的内容将取决于您选择的两个快照
您还可以将快照(提交)与建议的快照(提交)进行比较
git diff <hash#1> <hash#2>
git rev-parse master
git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT