我是Git的新手.我想知道什么是跟踪和未跟踪的文件?我读过"Pro Git",但仍然不太明白.
有人可以通过提供一个例子向我解释两者之间的区别吗?
谢谢,Nayan
是否有可能跳过暂存区域并且(也)在单个内置的命令行命令中将未经跟踪的新文件提交到git?如果没有,有哪些替代方案?
http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository
为git commit命令提供-a选项使得Git会在执行提交之前自动暂存已经跟踪的每个文件,让您跳过git add部分:
$ git commit -a -m 'added new benchmarks'
谢谢.
我的git状态显示以下目录(例如,smaller_fc)未跟踪.但是,我想确切地看到该目录中的哪个文件(例如,smaller_fc)未被跟踪.
我知道如果git说目录未被跟踪,则意味着目录中的所有文件都没有跟踪.但我写了一些.gitignore文件所以现在我想看看它是否确实忽略了某个目录中的某个子目录.
这是终端输出.
$ git status在分支主数据上你的分支在1个提交之前超过'origin/master'.(使用"git push"发布您的本地提交)
没有为commit提交的更改:(使用"git add ..."来更新将要提交的内容)(使用"git checkout - ..."来放弃工作目录中的更改)
modified: .gitignore
Run Code Online (Sandbox Code Playgroud)
未跟踪文件:(使用"git add ..."包含将要提交的内容)
nets/models/500K_iterations/500K_iteration_eval.txt
nets/models/from_solverstate_150K/
nets/models/pretrained_model/
nets/models/smaller_fc/
Run Code Online (Sandbox Code Playgroud)
也许更广泛的观点我在我的根文件夹中有.gitignore
.cproject
.project
.pydevproject
build
*~
*.pyc
*.caffemodel
*/solverstate/*
Run Code Online (Sandbox Code Playgroud)
这就是我的根目录的样子
root
models
model1
solverstate
somefiles.txt
model2
solverstate
anotherfiles.txt
.gitignore
Run Code Online (Sandbox Code Playgroud)
可以在谷歌上找到它.
当我这样做时git status,既有跟踪文件也有未跟踪文件。当天早些时候,我刚刚了解到这git stash --include-untracked会隐藏未跟踪的文件。当时它对我有用。所以我认为git stash --include-untracked会保存跟踪和未跟踪文件的更改。但是当我这样做时git stash apply,只剩下未跟踪的文件的更改。跟踪的文件的更改将丢失。
所以我正在学习的乐趣git add -p。我曾经使用 Sourcetree 或类似的 GUI 工具来检查更改,作为 的一部分git add,但现在我在命令行上使用它变得更好。
但是,令我感到沮丧的是,我无法在同一命令中添加未跟踪的文件。如果有像这样的选项,我希望git add -p --include-untracked它可以像其他部分一样将它们视为补丁。
有没有更好的方法可以通过单个命令来完成此操作?
我在个人电脑上有一个大约70GB的存储库,当我将它复制(不是克隆,只是简单的复制)到我的mac时,它表明有些文件在跟踪时没有跟踪.
当我添加它们时,它们似乎在repo对象信息中重复,但当然不在工作树中.所以我对最后一次提交进行了硬重置,但文件再次显示为未跟踪.
我怎么解决这个问题?(知道电脑上的回购工作正常)
我运行了“ git reset”命令,但是我的未暂存更改已放入文件夹中。运行git status后,我得到如下内容:
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: file1
modified: file2
modified: file3
modified: file4
modified: file5
Untracked files:
(use "git add <file>..." to include in what will be committed)
folder1
folder2
folder3
folder4
Run Code Online (Sandbox Code Playgroud)
每个文件夹都包含我修改过的多个文件,但是由于某种原因被归类到这些文件夹中。
我需要将这些更改分成多个拉取请求,因此“ git commit -a”将不会执行。
我看到的最佳解决方案是“ git add -all”,复制“ git status”,然后再次“ git reset”,但这似乎很费劲。
有更好的解决方案吗?