【问题标题】:What's the difference between working directory and local repository?工作目录和本地存储库有什么区别?
【发布时间】:2014-03-08 15:59:58
【问题描述】:

我创建了一个新的 GitHub 存储库。 我对工作目录和本地存储库感到很困惑。 当我自己工作时,我的东西都驻留在工作目录中。 但是当使用 repo 时,我应该在那里检查我的东西。 但它们是同一回事吗?或者他们应该分开。 然后如何将我在工作目录中的东西提交到我的本地仓库。 如何将我的本地仓库提交到远程仓库。 Git Bash 如何做到这一点? 谢谢!

【问题讨论】:

    标签: git github repository working-directory


    【解决方案1】:

    工作目录是您的源文件在 git 控制下的目录(在所有受控制的 .git 文件的根目录中)。 Git 正在跟踪您的工作目录和本地存储库之间以及您的本地存储库和(其中一个)远程存储库之间的差异。

    要查看更改的内容,请使用$ git status

    要将您的更改(编辑和/或新文件)提交到本地存储库,请使用$ git add,然后使用$ git commit

    要查看已提交的内容,请使用 $ git log

    然后,如果您想将更改提交到远程存储库,请使用$ git push

    注意打印的 git 命令,它通常包含要做什么的建议。

    如果您使用 GitHub,他们的帮助也很有用:pushing to a remote

    好的基本信息也是in atlassian site


    例如:

    假设,您在 JavaRepo 目录中使用 $ git init 启动了您的 git 存储库,并使用 $ git pull$ git clone 在该项目中签出。然后 JavaRepo 应该包含 .git 文件(以及其他 git dotted 文件) - 您可以使用 $ ls -a 检查它。 这些文件本身就是local git repository不需要区分“工作目录”和“本地存储库”目录。

    所以,开始使用 JavaRepo 中的文件:假设您更改了文件 example.java 并创建了新文件 example2.java。在 JavaRepo(或其任何子目录)中执行 $ git status。它应该显示:'已修改:example.java''未跟踪文件:example2.java'

    使用包含这些文件的目录中的 $ git add example.java$ git add example2.java 命令将您的文件添加到暂存区。 (请注意,$ git add 既适用于更改文件,也适用于新文件。)

    最后通过 $ git commit -m "example changes" 提交您的文件(-m 保留消息 - cmets 提交)。

    $ git log 应该显示这个提交。

    【讨论】:

    • 谢谢,亚历克斯!你能更具体一点吗?例如,我有一个工作目录,JAVA,一个本地 repo,JavaRepo,.git 应该在哪里以及如何通过 Git Bash 将 JAVA 中的文件提交到 JavaRepo?谢谢!
    • 添加了 FOR 示例段落。
    • 数以百万计的感谢,亚历克斯!我正在做你说的。当我使用 eclipse 时,我也在 JavaRepo 中设置了我的工作目录,然后出现了一个文件夹 .meta。每次我试图检查我的项目时,它也在那里......我做错了什么吗?
    • 我在 JavaRepo 中创建了两个项目,但是当推送到 GitHub 时,只有一个。另一个只存在于 .meta...
    • 我想 .meta 是 Eclipse 保存其“工作区”的目录?尝试设置.gitignore列表。
    【解决方案2】:

    工作目录和本地存储库之间有一层。它被称为暂存区。 当您使用 'git add' 添加更改的文件时,更改首先存储在暂存区以供检查。 然后,您可以使用 'git commit' 进一步将您的更改从暂存区推送到本地仓库。

    【讨论】:

      【解决方案3】:

      project folder 的内容(您在其中找到的文件夹和文件)由 工作目录 表示。

      工作目录有点像工作台,是您处理文件的地方(编辑文件、添加新文件、删除文件等)。

      另一方面,.git folder(隐藏文件夹)代表存储库

      .git 文件夹中有两个“地方”需要提及,暂存区(由索引文件表示)和提交历史记录(由对象文件夹)。

      staging area 有点像草稿空间。每当您处理完工作目录中的一个(或多个文件)后,您都希望将它们复制到暂存区(使用git add 命令)。

      一旦您在暂存区的项目的下一个版本中拥有了所有要更新的文件,您就可以将它们保存在项目的下一个版本中,这称为 提交。您可以使用git commit 命令执行此操作。

      commit 基本上是您项目的一个版本,每个提交都有一个 40 个字符的散列(40 个字母和数字),这个散列就像提交的名称一样,它是一种参考它。

      提交位于提交历史(对象文件夹)中。

      所以为了向我们的存储库添加一个文件:

      This video ?以直观的方式非常简单地解释事情(也有帮助之前和之后的视频!)??

      【讨论】:

      • 外部资源应该补充文本答案,因此它应该在文本之后进行 - 否则很好的答案
      • @KostiaMololkin 非常感谢您的编辑(我批准了)并让我知道! (-:我是一个堆栈溢出新手,所以很高兴向更多知识渊博的人学习。??
      猜你喜欢
      • 2013-08-05
      • 2020-12-21
      • 2013-07-21
      • 1970-01-01
      • 2018-04-20
      • 2011-10-01
      • 2014-03-25
      • 1970-01-01
      • 2015-09-15
      相关资源
      最近更新 更多