我刚刚在我的Mac上升级到OSX Lion,我用git repo获得了一个奇怪的问题.我在版本控制下有我的.vim文件,其中一些插件配置为git子模块.升级后,我在git status我的.vim目录中运行了一个命令并得到以下信息:
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain …Run Code Online (Sandbox Code Playgroud) 我想知道如何使git列出所有已更改的文件
我将首先为我的问题列出一个示例情况.
说我更改了以下文件:
未提交的更改
/site/main.php
/site/main.html
/site/includes/lib.php
Run Code Online (Sandbox Code Playgroud)
提交3
提交消息:"Bug xyz:做了一些改动"
/site/main.php
/site/main.html
/site/main.js
/test/test.php
/test/test.html
Run Code Online (Sandbox Code Playgroud)
提交2
提交消息:"Bug xyz:做了一些更改"
/site/main.php
/site/main.html
/site/includes/include.php
Run Code Online (Sandbox Code Playgroud)
提交1
提交消息:"错误abc:请注意,这是另一个错误"
/site/login.php
Run Code Online (Sandbox Code Playgroud)
说我还在研究bug xyz.现在我需要一个列表,列出目前在网站目录中已经更改的所有php文件.所以我需要以下列表作为输出:
/site/main.php
/site/includes/lib.php
/site/includes/include.php
Run Code Online (Sandbox Code Playgroud)
什么命令可以做到这一点?
我们有一个托管在多个同事访问的共享网络驱动器上的git存储库.我将其称为"中央存储库".员工将此仓库克隆到其本地计算机,进行更改,然后将更改推回原位.
我们注意到,如果有人将更改推送到中央存储库,则其他员工的本地git存储库不会表明它们不同步.git status说
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
但它显然不是最新的.遥控器有变化但git没有感应到它们.您可以执行此操作git pull并立即将更改下载到您的本地仓库,即使它声称它已经是最新的.
为什么会这样?是因为中央存储库托管在共享网络驱动器上吗?也许git出于任何原因无法判断它是否不同步?使用像Git Tower这样的GUI也没有什么区别.甚至在GUI中点击"刷新"也没有表明它不同步.此外,本地主分支正在跟踪origin/master.
有什么办法可以解决这个问题吗?
我是git的新手,我想我不小心克隆在根目录中.当我提交一个文件(index.html)时,我注意到我的整个计算机(我的桌面,我的文档等)都在未跟踪的文件中.我删除了存储库,我想删除所有未跟踪的文件,显然不会删除计算机中的所有内容.关于丢失我的文件,我是新手和偏执狂.
git 的相对新手,所以这可能是非常基本的东西。另一方面,我在询问之前搜索了很多这个答案。
在我的 git 存储库中,如果我在特定子目录(比主存储库目录低几级)中创建任何文件并运行git status,git 不会列出该目录中的文件,而只列出其名称。
我原以为这与它向下的级别有关,但是其他子目录中与级别相同(或更多)的其他未跟踪文件被列出而没有任何问题。
任何人都知道某个文件中是否有某些设置或某些条目会导致这种行为?
是否有选项可以git status显示未跟踪的文件?
我尝试了,git status -u no但隐藏了一切,并告诉:
"无需提交,工作目录清洁"
即使你有文件既提交提交而不是提交提交.
我希望它只显示为提交和修改的文件暂存的文件,但跳过未跟踪的文件.
这是我之前提出的另一个问题的后续措施。
正在编辑之前,最初创建的文件something被重命名为somethingelse可观察到这里:
git mv something somethingelse
Run Code Online (Sandbox Code Playgroud)
该文件somethingelse然后得到重命名回至something第二VIM编辑之前:
git mv somethingelse something
Run Code Online (Sandbox Code Playgroud)
git mv something somethingelse
Run Code Online (Sandbox Code Playgroud)
如果在这一点上我添加abc到代码中,我们将最终得到:
First line of code. abc
Run Code Online (Sandbox Code Playgroud)
我认为这是第1行增加了4个字节,而这又将在此结束:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: something
deleted: somethingelse
Run Code Online (Sandbox Code Playgroud)
然后,如果我们添加换行符并在第三行中键入abc(也应为4个字节,如果有错,请更正我):
First line of code.
abc
Run Code Online (Sandbox Code Playgroud)
突然,Git会检测到重命名(包括编辑):
On branch master
Changes to be committed:
(use "git reset HEAD …Run Code Online (Sandbox Code Playgroud) 说我有:
git fetch origin
git status "remotes/origin/master"
Run Code Online (Sandbox Code Playgroud)
我不确定我是否可以检查一个我没有检查过的分支的状态,所以让我说我检查一个分支是这样的:
git branch foo "remotes/origin/master"
git checkout foo
git status
Run Code Online (Sandbox Code Playgroud)
我的问题是2倍:
目前我正在获取最新的,然后运行git status并解析输出,Your branch is up to date with 'origin/master'但这感觉就像一个黑客。
我已经研究过使用,git status --porcelain但这仅包括在系统上所做的文件更改,而不是在远程所做的更改。我不在乎实际进行了哪些更改,我只想知道是否存在任何更改(本地或远程)。
我将如何干净地实现这一目标?
当我使用“git status”时,它会显示所有修改过的文件。但我希望只看到我将提交的具有特定扩展名(例如 .py)的文件。有没有办法做到这一点?
git ×10
git-status ×10
git-diff ×2
github ×2
git-checkout ×1
git-log ×1
git-mv ×1
git-remote ×1
parsing ×1
subdirectory ×1