版本化文件声明为无版本

时间:2014-05-08 06:28:33

标签: git

刚开始使用git,所以请不要怪我。

立即使用命令行git。在家用机器上克隆来自Git-Hub的现有仓库后,我遇到了一个问题,即我修改的所有文件都被称为“未跟踪” - 甚至当我从仓库中取出它们时也是如此。

我认为这是因为我的办公室机器上有以下结构:

folder\repo_content_here

在我的家用机器上,我有以下内容:

folder\repo_name_from_git_hub\repo_content_here

如何解决此问题?我实际上只是在推送到GitHub之前一次又一次地添加文件。

更新

当我做git pull时,它看起来像这样:

enter image description here

当我修改我的仓库中的文件时,之后执行“git status”我得到了这个:

enter image description here

我想知道为什么我必须一次又一次地添加文件,即使我已经在我的回购中获得了它。在我更改了已在我的仓库中的文件后,我只想做git commitgit push。我不想再添加它们(正如我所说,它们已经从我的观点中添加了。)。

当我在家用计算机上克隆GitHub存储库时,就会出现此行为。我之前没有遇到过这个问题。我做错了什么?我该如何解决?只是再次克隆?

感谢您的帮助:)

2 个答案:

答案 0 :(得分:2)

首先,git跟踪索引中的每个文件 - 只有文件。换句话说,要对文件进行git版本控制,必须在其索引中。

当前文件可能不在索引中有两个原因,1)它是自上次git-operation以来创建的,因此未被跟踪或2)它已被更改,即git已知(为什么它现在被标记为已修改)但与文件的现有状态不同。

未跟踪文件

未经跟踪的文件总是以某种方式对git来说是新的。它告诉您新的内容出现在您的回购中。您现在可以决定git是否跟踪它(使用git add)或者从现在开始忽略它(将其添加到.gitignore - 文件中)。

  

gitignore通常用于保存临时内容(如构建数据,备份文件等),以防止同事工作目录被不必要的东西污染。

修改过的文件

您修改的文件始终声明为modified:,只要它们未打包到您的存储库中的提交中。

由于你从github“克隆”了你的目录结构存在问题,git通常会在本地机器上准备好一切。并且所有不同客户端和/或服务器上的目录结构完全独立于一个观点:存储库的根目录,它始终包含.git/隐藏的存储库目录。

我认为你可能对基本的git-workflow有错误的看法,即:

  1. 修改您的文件(现在是modified但不是not staged for commit
  2. 为下次提交暂存所有必要文件(包含git add)(现在为modified并列为Changes to be committed
  3. 提交您的更改(使用git commit)。如果所有修改过的文件都成功打包到快照中,git会声明存在nothing to commit, working directory clean
  4. 这些提交驻留在您的本地存储库中,直到您要求git将它们推送到远程。为此,您通常首先从遥控器中提取更改,以检查是否存在冲突,然后将更改推送到遥控器。

    要检查存储库的状态,您可以(并将)在不同步骤之间使用git status

    Pro Git

    中解释的更好(并且更详细)

    另一个有用的资源是互动Git Cheat Sheet

答案 1 :(得分:1)

  

我想知道为什么我必须一次又一次地添加文件,即使我已经在我的回购中了。

git add实际上添加了特定内容。当您更改跟踪文件时,git会注意到该路径上有新内容,如果您希望在下次提交时更改内容,则会提醒您添加该内容。

  

我只是想在我更改已存在于repo中的文件后执行git commit和git push。我不想再添加它们了。

你和我两个。通常。您所追求的是git commit -a,意思是“在跟踪的文件中添加任何已更改的内容然后提交”。