【问题标题】:GIT : tracking untracked filesGIT:跟踪未跟踪的文件
【发布时间】:2019-02-01 12:19:46
【问题描述】:

对现有文件进行更改时,使用以下命令。

> git checkout myBranch
---Make code changes to myFile1.c and myFile2.c
> git add src/myFile1.c
> git add src/myFile2.c
> git commit -m "My Sample" 
> git push

----Go to server
> Pull....

以上内容将对 2 个文件所做的更改拉到远程存储库。

“未跟踪”文件

我经常在本地存储库中看到“未跟踪”的文件。 据我了解,“未跟踪”文件是新插入远程存储库(并在那里被跟踪)但现在下载到我的本地存储库但尚未正式跟踪的文件。这是正确的吗?

根据研究,将“未跟踪”文件添加到本地存储库的方法似乎是执行“git add ...”。

将“git add ...”合并到上面的示例中,我得到以下内容:

> git checkout myBranch
> git add --all     <-------Adding the "untracked" files. 
---Make code changes to myFile1.c and myFile2.c
> git add src/myFile1.c
> git add src/myFile2.c
> git commit -m "My Sample" 
> git push

----Go to server
> Pull

在最顶部的示例中,提交、推送和拉取导致 2 个修改后的文件最终被拉到远程存储库。现在在这个例子中,这不会导致我对两个文件的更改以及所有“未跟踪”文件最终都被拉到服务器上吗?

【问题讨论】:

  • git add --all 添加所有包含跟踪或未跟踪的更改的文件(未暂存文件)。
  • 是的,但是“添加”、“提交”、“推送”然后“拉取”不会导致所有有和没有更改的文件都被发送回远程存储库吗?
  • add 将文件添加到暂存中,这是一种过滤需要提交的文件的状态。 commit 基本上将这些更改保存到您的本地存储库。 push 也将这些更改推送到远程存储库。另一方面,pull 将这些更改从远程存储库拉到本地存储库。
  • 所以,“add”有两个目的,一是添加未跟踪的文件,二是添加修改过的文件。如果我理解的话,“提交”足够聪明,可以知道两者之间的区别???
  • 两者的用途基本相同,只是用于将待处理的文件(可以是未跟踪的文件或已修改的文件)添加到暂存文件中,稍后提交。

标签: git add


【解决方案1】:

您的问题让我想知道您的分支中是否有相同的 .gitignore 文件?

因为如果你不这样做,当你从一个分支切换到另一个分支时,不同的文件集将被忽略。这意味着如果某些文件在一个分支中被忽略,git 在切换到myBranch 时不会关心它们,它会使它们在磁盘上保持不变。但是,一旦您的分支发生更改,来自该分支的新 .gitignore 就会传递到该文件夹​​,从而应用不同的忽略规则集。

因此,一些文件可能会被忽略并显示为untracked

我建议转到https://www.gitignore.io/ 并生成最适合您的项目技术的.gitignore 文件。并确保您已将 .gitignore 发送到您的所有分支机构。

【讨论】:

  • 我想忽略这些文件吗?如果我最终需要修改其中一个文件怎么办?
猜你喜欢
  • 2017-03-15
  • 2017-12-30
  • 2017-01-16
  • 2017-08-04
  • 2018-07-21
  • 2015-01-11
  • 2012-01-18
  • 2022-01-01
  • 2021-02-13
相关资源
最近更新 更多