工作目录和本地存储库之间有什么区别?

时间:2014-02-11 02:58:21

标签: git github repository working-directory

我已经创建了一个新的GitHub存储库。 工作目录和本地存储库让我很困惑。 在我自己工作时,我的东西都存在于工作目录中。 但是当与回购合作时,我应该检查我的东西。 但他们是一回事吗?或者他们应该分开。 然后如何将我的工作目录中的东西提交到我的本地仓库。 如何将我的本地仓库提交给远程仓库。 如何通过Git Bash做到这一点? 谢谢!

3 个答案:

答案 0 :(得分:19)

工作目录是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点缀文件) - 您可以使用$ ls -a进行检查。 这些文件本身就是local git repository,无需区分'工作目录'和'本地存储库'目录。

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

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

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

$ git log 应该显示此提交。

答案 1 :(得分:4)

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

工作目录有点像工作台,在这里您可以处理文件(编辑文件,添加新文件,删除文件等)。

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

在.git文件夹中,应提及两个“位置”,即临时区域(由索引文件表示)和提交历史记录(由对象文件夹)。

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

一旦您要在暂存区的下一版本的项目中拥有所有要更新的文件,就可以将其保存在项目的下一版本中,称为 commit >。您可以使用git commit命令来完成此操作。

commit 基本上是项目的一个版本,每个提交都有一个40个字符的哈希(40个字母和数字),并且该哈希就像是提交的名称,它是一个引用方式。

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

因此,为了将文件添加到我们的存储库:

This video?以视觉方式非常简单地说明事物(视频前后都有帮助!)??

答案 2 :(得分:1)

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