2011-06-19 44 views
6

我確定我在這裏丟失了一些基本的東西,但我收到了一個存儲在git存儲庫中的應用程序。它有像分支,掛鉤,對象等文件夾,但沒有實際的源文件。從git中訪問源文件BARE:master

當我打開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

您能否給我們提供更多信息?它是否是您的本地存儲庫沒有任何遙控器?或者你已經從你的公司的服務器或github或其他任何網址克隆它?當我們不知道你在用git做什麼時,如果沒有重新講述關於Git的一半書,很難給你提供有用的建議... –

+0

明白了,你必須原諒我,因爲我是新的混淆很難知道什麼是重要的信息。該目錄作爲共享的DropBox文件夾提供給我。我自己沒有克隆任何東西,只是接受共享的保管箱文件夾,現在正在嘗試訪問源文件 –

+0

然後完全可以共享文件夾。我會盡力解釋一下在這裏發生的事情,作爲編輯我的答案... –

回答

13

它是純倉庫你所擁有的。

得到源的最簡單的方法是通過git clone /path/to/your/bare/rep

裸倉庫來複制它是一樣的東西共享資源庫,其中幾個開發人員的工作得到聚集。對於開發人員而言,你最可能需要非裸機。

有關於克隆存儲庫的chapter

編輯: 所以,我的箱子上有一些git倉庫。所以我會盡量模仿你的情況。就像你有你的共享文件夾

[email protected] /d/test 
$ git clone --bare /d/work/gittesting/ bare.git 
Cloning into bare repository bare.git... 
done. 

[email protected] /d/test 
$ cd bare.git/ 

[email protected] /d/test/bare.git (BARE:master) 

所以我在這裏已經bare.git庫:首先,我要克隆我的倉庫裸之一。現在我將複製它有一些工作目錄與實際來源:

[email protected] /d/test/bare.git (BARE:master) 
$ cd .. 

[email protected] /d/test 
$ git clone bare.git/ my-non-bare-dev-rep 
Cloning into my-non-bare-dev-rep... 
done. 

[email protected] /d/test 
$ cd my-non-bare-dev-rep/ 

[email protected] /d/test/my-non-bare-dev-rep (master) 

現在我有文件夾my-non-bare-dev-rep和倉庫中的所有文件都在那裏。這是你的工作副本。字符串(master)是你的暗示,你現在在master分支。

然後我會在我的工作副本中模擬一些工作。

[email protected] /d/test/my-non-bare-dev-rep (master) 
$ echo 'my new text' > text-file.txt 

我想看看在工作拷貝我從共享代表了變化我有一個版本比較:

[email protected] /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) 

現在我會添加這個文本文件中所謂的舞臺區(或者有時稱爲索引)。這是描述當執行git commit命令時將要提交的一組更改的術語。

[email protected] /d/test/my-non-bare-dev-rep (master) 
$ git add text-file.txt 

現在好了text-file.txt在舞臺區域。但它仍然沒有承諾。現在是時候這樣做了:

[email protected] /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

[email protected] /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是一個標準的名稱混帳給予父母,當你做了一個克隆。因此,我從bare.git進行了克隆 - 我的更改只是去了那裏。 終於搞定了從共享文件夾更新到你的本地庫,你必須執行pull命令:

[email protected] /d/test/my-non-bare-dev-rep (master) 
$ git pull 
Already up-to-date. 

我沒有任何變化推從其他地方到bare.git,所以我的本地代表是向上至今。而git告訴了我。

+0

當我嘗試,我得到我上面指出的錯誤(編輯問題) –

+0

@Ivan偉大的努力,解釋到這樣的長度...布拉沃!!! –

4

使用

git clone /c/some/dir.git 

在混帳慶典。 C:類型路徑處理不好。