我确信我在这里缺少一些基本的东西,但是我收到了一个存储在git存储库中的应用程序。它有如下文件夹:分支,钩子,对象等,但没有实际的源文件。
当我打开git bash并cd进入该文件夹时,标题显示为“(BARE:master)”。
我认为我只需要以某种方式克隆该文件夹中的本地存储库。最后,我只需要访问存储库中的实际源文件,但我肯定错过了一些概念,因为我对git有点新鲜。
任何关于如何在本地设置此设置的提示或帮助将不胜感激。
编辑:当我尝试从该目录克隆时,我收到以下错误
$ git clone c:/Users/Joel/Dropbox/TheProjectDirectory.git
Cloning into LocalProjectFolder ...
fatal: 'c:/Users/Joel/Dropbox/TheProjectDirectory.git' does not appear to be a git
repository
fatal: The remote end hung up unexpectedly
答案 0 :(得分:13)
它是裸仓库。
获取来源的最简单方法是通过git clone /path/to/your/bare/rep
裸存储库就像共享存储库,来自几个开发人员的工作得到了收集。对于开发人员框,您最有可能想要非裸露的。
有关于克隆存储库的chapter。
编辑: 所以,我的盒子上有一些git存储库。所以我会试着模仿你的情况。首先,我将克隆我的存储库:
idanilov@IDANILOV-PC /d/test
$ git clone --bare /d/work/gittesting/ bare.git
Cloning into bare repository bare.git...
done.
idanilov@IDANILOV-PC /d/test
$ cd bare.git/
idanilov@IDANILOV-PC /d/test/bare.git (BARE:master)
所以这里我有bare.git存储库,就像你有共享文件夹一样。现在我将克隆它以获得一些具有实际来源的工作目录:
idanilov@IDANILOV-PC /d/test/bare.git (BARE:master)
$ cd ..
idanilov@IDANILOV-PC /d/test
$ git clone bare.git/ my-non-bare-dev-rep
Cloning into my-non-bare-dev-rep...
done.
idanilov@IDANILOV-PC /d/test
$ cd my-non-bare-dev-rep/
idanilov@IDANILOV-PC /d/test/my-non-bare-dev-rep (master)
现在我有文件夹my-non-bare-dev-rep
,存储库中的所有文件都在那里。这是你的工作副本。字符串(master)
是您现在在master
分支中的提示。
然后我会在我的工作副本中模仿一些作品。
idanilov@IDANILOV-PC /d/test/my-non-bare-dev-rep (master)
$ echo 'my new text' > text-file.txt
我希望看到我在工作副本中所做的更改与我从共享代表获得的版本相比:
idanilov@IDANILOV-PC /d/test/my-non-bare-dev-rep (master)
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# text-file.txt
nothing added to commit but untracked files present (use "git add" to track)
现在我将此文本文件添加到所谓的阶段区域(或者有时称为 index )。它是描述在执行git commit
命令时将提交的一组更改的术语。
idanilov@IDANILOV-PC /d/test/my-non-bare-dev-rep (master)
$ git add text-file.txt
现在text-file.txt就在舞台区域。但它仍然没有承诺。是时候这样做了:
idanilov@IDANILOV-PC /d/test/my-non-bare-dev-rep (master)
$ git commit -m 'my commit from dev repo'
[master c0b0bd8] my commit from dev repo
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 text-file.txt
因此。现在它存储在我的本地存储库中。实际上在.git
文件夹中。但它仍然没有去共享回购,以便我的同事也看到它。为此我需要做push
:
idanilov@IDANILOV-PC /d/test/my-non-bare-dev-rep (master)
$ git push origin
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 290 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To d:/test/bare.git/
d01886b..c0b0bd8 master -> master
origin
是git在您进行克隆时为父级提供的标准名称。所以当我从bare.git克隆时 - 我的变化就在那里。
最后,要从共享文件夹获取更新到本地存储库,您必须执行pull
命令:
idanilov@IDANILOV-PC /d/test/my-non-bare-dev-rep (master)
$ git pull
Already up-to-date.
我没有从其他地方推送到bare.git的任何更改,所以我的本地代表是最新的。而git告诉我了。
答案 1 :(得分:4)
使用
git clone /c/some/dir.git
在git bash中。 C:类型路径处理不好。