这里是我所在的地方:
- 在 GitHub 上创建了一个新的 repo
- 在我的 PC 上本地初始化 (git add .) 我的工作目录
- 提交(git commit -m)所有更改到阶段
- 通过添加新的 .png 文件进行了另一项更改
- 另一个 git commit -m
- 现在我想查看所有暂存文件的列表,这些文件将在我第一次(或任何时候)实际将它们推送到远程存储库 (https//.../../) 之前推送.所以我假设会有 2 个充满更改的提交要显示
如果我尝试再次提交 (#3)
,它会显示无须提交,工作目录干净
。所以我一定是上次成功提交了,我想这就是为什么要这样说。
当我执行 git status
时,我没有要提交,工作目录干净
但是当我尝试在 OS X 的终端中键入 git diff --cached --name-only
或 git diff --staged
时,它什么也没做。再次运行该命令后,我只是得到命令提示符。
我是不是漏掉了什么?我在 git diff 上搜索过东西,但我一定是瞎了。
最佳答案
运行 git diff --cached
将显示存储库和索引之间的区别(文件在提交到目录之前由 git add
暂存的地方)存储库)。它不会查看您的工作目录中的文件,也不会比较存储库中修订之间的差异。
如果您想查看本地存储库与上游存储库有何不同,请首先确保远程存储库的本地缓存是最新的:
git remote update
然后将本地分支与远程存储库中的相应分支进行比较:
git diff --name-only mybranch origin/mybranch
..假设您的 Remote 名为 origin
,它可能就是这样。
更新
如果您要推送到一个空的远程存储库,那么回答“将推送哪些文件?”是“所有这些”,并且没有什么可以针对 diff
运行。
您可以运行 git ls-files
来查看存储库中所有文件的列表。
在我之前的示例中,mybranch
将是分支的名称,例如 master
或 bug/1234
或 this -is-a-nifty-feature
,该示例假定您将本地分支推送到远程存储库中同名的分支。
更新 2
你问:
my remote branch is a url so what is origin...the uri/[repo name]? so origin is the uri? And what would I refer to as the name of my local branch?
一个 git 仓库可以与一个或多个远程仓库相关联,称为“remotes”。如果您克隆远程存储库:
$ 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
。
但是您可以使用“git checkout -b”或“git branch”命令创建新分支。那里有很多文档可能会提供比我在此答案中更好的概述。我将从 The Git Book 开始.
关于缓存的 Git diff 什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765170/