2011-06-19 5 views
6

ここで何か根本的な欠点があると確信していますが、gitリポジトリに格納されたアプリケーションを一滴受け取っています。ブランチ、フック、オブジェクトなどのフォルダがありますが、実際のソースファイルはありません。git BAREからのソースファイルへのアクセス:master

git bashを開き、そのフォルダにcdすると、タイトルに "(BARE:master)"と表示されます。

私は、そのフォルダからローカルのリポジトリを何とか複製する必要があると仮定します。最終的には、リポジトリ内の実際のソースファイルにアクセスする必要がありますが、確かにいくつかのコンセプトがありません。

このセットアップをローカルで行う方法についてのヒントや助けがあれば幸いです。

編集:私は

$ 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

詳細をお知らせください。それはあなたのローカルレポジトリですか?または、あなたの会社のサーバやギブスなどのURLからクローンを作成したことがありますか?あなたがgitで何をしようとしているのかわからないときに、Gitの本の半分を再読み上げせずに役に立つ助言を与えるのは難しいです... –

+0

が理解されていれば、私が新しいです重要な情報を知るのは難しいです。ディレクトリは共有DropBoxフォルダとして私に与えられました。私は何も自分自身をクローンしていない、ちょうど共有Dropboxのフォルダを受け入れ、今はソースファイルにアクセスしようとしている –

+0

それは完全に共有フォルダを裸にしても大丈夫です。私は答えを編集するためにここで何が起こっているのかを一瞬で説明しようとします... –

答えて

13

次のエラーが表示されているディレクトリからクローンを作成しようとすると、それはあなたが持っているもの、裸のリポジトリです。

ソースを取得する最も簡単な方法は、git clone /path/to/your/bare/rep

裸のリポジトリ経由でクローンを作成することですいくつかの開発者から仕事が集まっ取得共有リポジトリ、のようなものです。デベロッパーボックスの場合は、おそらく非裸のものが必要です。

クローニングリポジトリについては、chapterがあります。

EDIT: 私のボックスにはいくつかのgitリポジトリがあります。だから私はあなたの状況をエミュレートしようとします。まず、私は1つのように裸の私のリポジトリをクローンます:

[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 

So.今は私のローカルリポジトリに保存されています。実際には.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あなたはクローンをしたときの標準的な名前のgitが親に与えています。私が裸からクローンしたように、私の変化はちょうどそこに行きました。 そして最後に、あなたがpullコマンドを実行する必要があり、ローカルリポジトリに共有フォルダから更新プログラムを入手するには、次の私の地元の担当者がアップになるよう

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

私は何も変更していないが、他の場所からbare.gitにプッシュ現在まで。そしてgitは私にそう言った。

+0

私はそれを試してみると、私は上記のエラーを受け取ります(質問を編集しました) –

+0

@イワン –

4

のgit bashで使用

git clone /c/some/dir.git 

。 C:型のパスはうまく処理されません。

関連する問題