Git diff缓存什么都不做

Pos*_*Guy 2 git github

这是我在的地方:

  1. 在GitHub上创建了一个新的repo
  2. 在我的电脑上本地初始化(git add.)我的工作目录
  3. 提交(git commit -m)所有对阶段的更改
  4. 通过添加新的.png文件进行了另一项更改
  5. 做了另一个git commit -m
  6. 现在我想查看所有暂存文件的列表,这些文件将在我第一次(或实际上在任何时候)将它们推送到远程仓库(https //.../../)之前推送.所以我假设有2个提交完整的更改来显示

如果我试图commit again (#3),它显示nothing to commit, working directory clean.因此,我必须在上次成功做出承诺,这就是为什么它这样说.

当我做的时候,git status我得到了nothing to commit, working directory clean

但是当我尝试在OS X中键入git diff --cached --name-onlygit diff --staged终端时它什么也没做.我再次运行该命令后得到命令提示符.

我在这里错过了什么吗?我在git diff上搜索了一些东西,但我必须是盲目的.

lar*_*sks 5

运行git diff --cached将显示存储库和索引之间的区别(文件git add在提交到存储库之前暂存的位置).它不会查看工作目录中的文件,也不会比较存储库中的修订版本之间的差异.

如果要查看本地存储库与上游存储库的不同之处,请首先确保远程存储库的本地缓存是最新的:

git remote update
Run Code Online (Sandbox Code Playgroud)

然后将您的本地分支与远程存储库中的相应分支进行比较:

git diff --name-only mybranch origin/mybranch
Run Code Online (Sandbox Code Playgroud)

..假设您的遥控器已命名origin,它可能是.

更新

如果您要推送到空的远程存储库,则回答"将推送哪些文件?" 是"所有人",没有什么可以diff反对的.

您可以运行git ls-files以查看存储库中所有文件的列表.

在我之前的示例中,mybranch将是分支的名称,例如masteror bug/1234this-is-a-nifty-feature,并且该示例假定您将本地分支推送到远程存储库中的同名分支.

更新2

您询问:

我的远程分支是一个网址,所以起源是什么... uri/[repo name]?所以起源是uri?我将什么称为我当地分支机构的名称?

git存储库可以与一个或多个远程存储库相关联,称为"远程".如果克隆远程存储库:

$ git clone git@github.com:larsks/sandbox.git
Run Code Online (Sandbox Code Playgroud)

您将最终得到一个名为origin引用此存储库的远程:

$ cd sandbox
$ git remote -v
origin  git@github.com:larsks/sandbox.git (fetch)
origin  git@github.com:larsks/sandbox.git (push)
Run Code Online (Sandbox Code Playgroud)

最初,您的本地分支已命名master,因此您的初始推送将如下所示:

$ git push origin master
Run Code Online (Sandbox Code Playgroud)

这要求git将您的本地master分支推送到master远程存储库的分支,称为origin.

但您可以使用"git checkout -b"或"git branch"命令创建新分支.有很多文档可能会提供比我在这个答案中更好的概述.我会从The Git Book开始.

  • 你还在混合词汇."致力于舞台"并不意味着什么.您可以将暂存区域视为添加要在下次提交中包括的所有更改的位置.通常,对未跟踪文件或修改过的文件执行`git add`会将文件/更改放在舞台上.提交是基于先前提交和暂存区域中的更改来定义新快照.我推荐一本书,例如https://git-scm.com/ (2认同)