我对文件进行了更改,加上一个新文件,并希望在切换到另一个任务时使用git stash将它们删除.但git stash本身只会隐藏对现有文件的更改; 新文件仍然存在于我的工作树中,使我未来的工作变得混乱.如何存放这个未跟踪的文件?
我发现在Git中非常有用的命令之一就是git add -u将除了未跟踪文件之外的所有文件抛出到索引中.那有反过来了吗?在过去的几个月里,我经常发现自己处于这样一个位置:我交互式地为索引添加了一些更新,我希望在提交之前将所有未跟踪的文件添加到该索引中.
有没有办法只将未跟踪的文件添加到索引而不单独识别它们?我在帮助文档中没有看到任何明显的东西,但也许我错过了它?
谢谢.
当我运行git add --intent-to-add .所有未跟踪的文件时,它们的状态从“未跟踪的文件”(git status -s显示??)更改为“未暂存提交的更改”(git status -s现在显示A)。现在,每当我运行时,git diff我也会看到新文件。如何恢复这些状态更改,以便它们再次变得“未跟踪”?
file.txt我在工作树中创建了一个新文件。git status正确显示了这一点:
$ git status
On branch mybranch
Untracked files:
(use "git add <file>..." to include in what will be committed)
file.txt
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)
然而,git diff什么也没显示。
$ git diff
Run Code Online (Sandbox Code Playgroud)
我发现一些相关问题表明寻呼机可能有问题,所以我尝试了
git --no-pager diff file.txt
Run Code Online (Sandbox Code Playgroud)
和
GITPAGER=cat git diff file.txt
Run Code Online (Sandbox Code Playgroud)
具有相同的空结果。
如果我添加文件然后 diff 到 HEAD,我会得到正确的 diff。
$ git add file.txt
$ git diff --cached
diff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..f2d7933
--- …Run Code Online (Sandbox Code Playgroud) 我想提交一个Python模块的__init__.py文件,它在我的磁盘上已经包含了代码.但是,对于当前提交,我想将其添加为空,因为这部分代码尚未测试.因此,我用过
$ git add -N __init__.py
Run Code Online (Sandbox Code Playgroud)
该文件存在于输出中git status,但是如果我发出git commit,则所有其他文件都进入提交,除了__init__.py,依次是依次保留在索引中git status.
该名男子页git-add说的-N那个
Record only the fact that the path will be added later. An entry for the path is placed in the index with no content.
Run Code Online (Sandbox Code Playgroud)
有没有办法绕过这will be added later部分,即添加文件为空而不暂时删除其内容?
编辑:当前(2.2.0)Git会发生这种情况.使用1.7.1和一个小的测试仓库,我收到一个错误:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new …Run Code Online (Sandbox Code Playgroud) 我有一个旧的提交 A。我现在处于提交 B=HEAD!=A,并且想将我的工作目录的状态(包括未跟踪的文件)与 A 进行比较。
原因是当前未跟踪的文件是 commit 的一部分A,因此它们不会出现在我想要的差异中,因此不会混乱。
作为一种解决方法,我可以git add <all the untracked files>在差异之前和git reset <all the untracked files>之后手动进行。但是,有许多未跟踪的文件,我想以最大程度的原子性和健壮性的方式执行此操作,因为我正在脚本中执行所有这些操作。
编辑:这个问题还涉及与未跟踪文件的差异。但是,那里的答案需要手动添加并稍后删除未跟踪的文件,我更喜欢一种更自动且以原子方式执行此操作的解决方案,该解决方案可以防止脚本上下文中的中断发生错误。接受的答案正是这样做的,并且确实与链接问题的答案不同。
我希望 git status 也列出更改的行数,\n就像那些+和:-git pull
例子)
\n\xe2\x9d\xaf LANG=c git status\nOn branch develop\nYour branch is up to date with \'upstream/develop\'.\n\nChanges not staged for commit:\n (use "git add <file>..." to update what will be committed)\n (use "git restore <file>..." to discard changes in working directory)\n modified: package-lock.json | 1093 ++++++++---\n modified: package.json | 26 +++---\nRun Code Online (Sandbox Code Playgroud)\n因为我在文档中找不到这样的选项,所以我尝试使用diffstat,因为它用于git pull。
\xe2\x9d\xaf git diff | diffstat -C\n package-lock.json | 1093 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------\n package.json | …Run Code Online (Sandbox Code Playgroud) 使用git diff它时只显示已被跟踪的文件.有没有办法显示未跟踪的文件以及差异?目标是获得一个也包含它的git补丁,即我有一个脚本,该脚本git diff以其开头并最终将其传递给它git apply