我有两个简洁的问题:
- 如何跟踪文件但不暂存它们?
- 如何在不取消跟踪的情况下取消暂存文件以进行提交?
NOTE: 我知道我可以进行初始提交来跟踪文件,并从那里开始跟踪我的文件。但可以专门做我上面要求的事情吗?
我尝试使用git add -N <expr>
但它会跟踪该文件并将其添加以进行提交:
PS C:\> git add -N fileA
PS C:\> git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: fileA
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README.md
# modified: composer.lock
# modified: fileA
#
If I do git reset HEAD fileA
or git rm --cached fileA
取消暂存它,但也取消跟踪文件。
这个命令git rm fileA
建议我使用标志 -f 来实际删除文件。
那么,是否可以仅跟踪但不暂存,并且仅取消暂存但不取消跟踪文件?
更新(2015 年 5 月)
我尝试使用git add -N <expr>
但它会跟踪该文件并将其添加以进行提交:
即将推出的 Git 2.5(2015 年第二季度)不再是这种情况。
See "文件使用后没有进入提交git add -N https://stackoverflow.com/a/30341632/6309"
原始答案(2013 年 3 月)
如何在不取消跟踪的情况下取消暂存文件以进行提交?
这是官方方式:
git reset HEAD fileA
但由于它是一个新文件,您也将取消跟踪它(将其从索引中删除,没有任何先前的提交引用它)。
开始跟踪文件意味着将其放入索引(阶段)或提交中。
我建议为这些文件创建一个分支,以便在其中添加/提交它们。
See "GIT 上下文中的跟踪文件和未跟踪文件是什么? https://stackoverflow.com/a/9663590/6309"
-
跟踪的文件是上一个快照中的文件;它们可以是未修改的、修改的或分阶段的。
- 未跟踪的文件是其他所有文件 - 工作目录中不在上一个快照中且不在暂存区域(索引)中的任何文件
这意味着,对于新文件,取消暂存意味着取消跟踪它。
(Source: Pro Git Book https://git-scm.com/book/id/v2/, 2.2 Git Basics - Recording Changes to the Repository https://git-scm.com/book/id/v2/Git-Basics-Recording-Changes-to-the-Repository)
(Thank you, louisfischer https://stackoverflow.com/users/4559927/louisfischer, for the update/fix in the comments https://stackoverflow.com/questions/15653066/how-to-track-but-not-stage-and-how-to-unstage-but-not-untrack/15653161?noredirect=1#comment80562196_15653161)
也可以看看 ”git - 如何判断文件是否被 git 跟踪(通过 shell 退出代码)? https://stackoverflow.com/questions/2405305/git-how-to-tell-if-a-file-is-git-tracked-by-shell-exit-code".
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)