我在这里:
如果我尝试commit again (#3)
,则会显示nothing to commit, working directory clean
。因此,我必须在上次成功做出承诺,这就是为什么它会说这个。
当我执行git status
时,我得到nothing to commit, working directory clean
但是当我尝试在OS X中的终端中键入git diff --cached --name-only
或git diff --staged
时,它什么也没做。我再次运行该命令后得到命令提示符。
我在这里遗漏了什么吗?我已经在git diff上搜索了一些内容,但我必须是盲目的。
答案 0 :(得分:5)
运行git diff --cached
将显示存储库和索引之间的区别(文件在提交到存储库之前由git add
暂存的位置)。它不会查看工作目录中的文件,也不会比较存储库中的修订版本之间的差异。
如果要查看本地存储库与上游存储库的不同之处,请首先确保远程存储库的本地缓存是最新的:
git remote update
然后将您的本地分支与远程存储库中的相应分支进行比较:
git diff --name-only mybranch origin/mybranch
..假设您的遥控器名为origin
,它可能是。
<强>更新强>
如果您要推送到空的远程存储库,那么答案是&#34;将推送哪些文件?&#34;是&#34;所有&#34;,没有任何东西可以运行diff
。
您可以运行git ls-files
查看存储库中所有文件的列表。
在我之前的示例中,mybranch
将是分支的名称,例如master
或bug/1234
或this-is-a-nifty-feature
,并且该示例假定您正在推动本地分支到远程存储库中同名分支。
更新2
你问:
我的远程分支是一个url所以原点是什么... uri / [repo name]?所以 起源是uri?我将什么称为我当地的名字 分支?
git存储库可以与一个或多个远程存储库相关联,称为&#34;遥控器&#34;。如果克隆远程存储库:
$ git clone git@github.com:larsks/sandbox.git
您最终会得到一个名为origin
的遥控器,指的是这个存储库:
$ cd sandbox
$ git remote -v
origin git@github.com:larsks/sandbox.git (fetch)
origin git@github.com:larsks/sandbox.git (push)
您的本地分支最初名为master
,因此您的初始推送看起来像:
$ git push origin master
这要求git将您的本地master
分支推送到远程存储库的master
分支,称为origin
。
但你可以使用&#34; git checkout -b&#34;创建新的分支。或&#34; git branch&#34;命令。有很多文档可能会提供比我在这个答案中更好的概述。我会从The Git Book开始。
答案 1 :(得分:1)
由于图片价值1000字,而且我不想重新发明轮子,请允许我链接https://git-scm.com书中的一个插图,显示文件的生命周期git并显示缓存的作用。我承认有一些我不喜欢这张照片的东西,但是它很适合这个目的。
如果您已经完成了一些修改并处于暂存阶段(“俚语”用于说“添加到缓存”),其中一些修改为git add
且更精细git add -p
,则命令git diff
和git diff --cached
是查看已添加到缓存中的内容以及仍可添加的内容的方法。在这里添加,我的意思是git add
- 明智的,所以添加一个未跟踪的文件,或添加一个修改。
git diff
:显示可以与git add
同步的修改。请注意,这仅适用于“stage the file”箭头,它不会列出未跟踪的文件。git diff --cached
:仅显示 已经上演的内容和之前的提交之间的差异。在您的情况下,git diff --cached
没有显示任何内容,因为您已经提交了暂存区域中的所有内容,并且从那时起未添加任何内容。
调用该选项--cached
的原因是因为git暂存区最初称为cache
。您还会遇到index
一词。
@ larsks的回答是正确的,我只是想对他回答的评论做出反应。