2017-09-28 4 views
0

git(ubuntuサーバー上)を使用してファイルを管理します。私はlocal(mac)で練習しました。ディレクトリdsがサーバで、d1がuser1、d2がuser2であると仮定しています。 git pushを実行しますが、ファイルを追加または変更しません。

この

は私のワークフローです:

$ mkdir ds 
$ cd ds 
$ git init 
$ echo '1' > 1.txt 
$ git add 1.txt 
$ git commit -m 'add 1.txt' 
[master (root-commit) 8eab711] add 1.txt 
1 file changed, 1 insertion(+) 
create mode 100644 1.txt 

、今私はgitのクローン試してみました:今、私はD1でファイルを作成しようとしました

$ cd ds 
$ git config core.bare true 
$ git status 
fatal: This operation must be run in a work tree 

:リモートストレージの設定を変更する

$ cd .. 
$ ls 
ds 
$ git clone ds d1 
$ git clone ds d2 
$ ls 
d1 d2 ds 

$ cd ../d1 
$ ls 
1.txt 
$ echo '2' > 2.txt 
$ git add 2.txt 
$ git commit -m 'add 2.txt' 
[master 22242b8] add 2.txt 
1 file changed, 1 insertion(+) 
create mode 100644 2.txt 
$ ls 
1.txt 2.txt 
$ git log 
commit 22242b885bbc0d2189470dd720eaf0a0a0c97ce6 (HEAD -> master) 
Author: Name <[email protected]> 
Date: Thu Sep 28 10:44:48 2017 +0900 

    add 2.txt 

commit 8eab711880834e9e81e17d02cf6bd958e69fa58a (origin/master, origin/HEAD) 
Author: Name <[email protected]> 
Date: Thu Sep 28 10:38:48 2017 +0900 

    add 1.txt 

チェックを試みたところ、問題ありませんでした。 今私はpushを試しました!

$ git push 
Counting objects: 3, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (3/3), 257 bytes | 257.00 KiB/s, done. 
Total 3 (delta 0), reused 0 (delta 0) 
To ..(skip)../Code/git/ds 
    8eab711..22242b8 master -> master 

$ls 
1.txt 2.txt 

ここでは、dsディレクトリのファイルをチェックします。ここに問題がありました。

$ cd ../ds 
$ ls 
1.txt 

「1.txt」のみです。私はgitログをチェックしました。

$ git log 
commit 22242b885bbc0d2189470dd720eaf0a0a0c97ce6 (HEAD -> master) 
Author: Name <[email protected]> 
Date: Thu Sep 28 10:44:48 2017 +0900 

    add 2.txt 

commit 8eab711880834e9e81e17d02cf6bd958e69fa58a 
Author: Name <[email protected]> 
Date: Thu Sep 28 10:38:48 2017 +0900 

    add 1.txt 

私は混乱しています。 githubでは、私がプッシュすると、ファイルが変更されることを覚えています.. そして私はg2をd2ディレクトリにプルしようとしました。

$ cd ../d2 
$ ls 
1.txt 
$ git pull 
remote: Counting objects: 3, done. 
remote: Compressing objects: 100% (2/2), done. 
remote: Total 3 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (3/3), done. 
From ..(skip)../Code/git/ds 
    8eab711..22242b8 master  -> origin/master 
Updating 8eab711..22242b8 
Fast-forward 
2.txt | 1 + 
1 file changed, 1 insertion(+) 
create mode 100644 2.txt 
$ ls 
1.txt 2.txt 

Oh my god、2.txtが登場しました。

dsでファイルが変更されていませんか?どのようにすべてのリポジトリのファイルを同じに保つことができますか?

ありがとうございます。

+0

回避できる場合は、手動でcore.bareを設定しないでください。代わりに--bareを使用してクローンします。あなたはそう多くの手動作業を行う必要はありません –

答えて

2

ベアリポジトリに作業ツリーがありません(ディレクトリにソースファイルがありません)FYI:http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/ ソースファイルをdsに保存する場合は、ベアリポジトリを使用しないでください。

+0

ありがとうございます。私は裸のコンセプトを誤解していた! – Centell

1

あなたは、DS上

git pull 

に持っています。あなたがそれを命令しない限り(git fetchと一緒に)あなたのローカルコピーはリモコンに新しいものがあるかどうかを知りません。

+0

あなたの答えをありがとう。私はそれを試しましたが、私は '致命的な:この作業は作業ツリーで実行する必要があります。 ' – Centell

+0

ああ、私は 'fatal:リモートリポジトリが指定されていません。 URLを指定するか、新しいリビジョンを取得するリモート名を に指定してください.'コマンド 'git fetch' – Centell

関連する問題