我想使用git管理文件(在ubuntu服务器上)。我在本地(mac)上练习,假设目录ds是服务器,d1是user1,d2是user2。
这是我的工作流程:
$ 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 clone:
$ cd ..
$ ls
ds
$ git clone ds d1
$ git clone ds d2
$ ls
d1 d2 ds
更改远程存储设置:
$ cd ds
$ git config core.bare true
$ git status
fatal: This operation must be run in a work tree
现在我尝试在d1中创建文件。
$ 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 <my@mail.com>
Date: Thu Sep 28 10:44:48 2017 +0900
add 2.txt
commit 8eab711880834e9e81e17d02cf6bd958e69fa58a (origin/master, origin/HEAD)
Author: Name <my@mail.com>
Date: Thu Sep 28 10:38:48 2017 +0900
add 1.txt
我尝试检查git remote -v
,我确认没有问题。
现在我尝试了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
只有&#39; 1.txt&#39;。我检查了git日志。
$ git log
commit 22242b885bbc0d2189470dd720eaf0a0a0c97ce6 (HEAD -> master)
Author: Name <my@mail.com>
Date: Thu Sep 28 10:44:48 2017 +0900
add 2.txt
commit 8eab711880834e9e81e17d02cf6bd958e69fa58a
Author: Name <my@mail.com>
Date: Thu Sep 28 10:38:48 2017 +0900
add 1.txt
我很困惑。在github中,我记得当我推送时,文件被更改了.. 我在d2目录上尝试了git pull。
$ 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
哦,天哪,2.txt出现了。
ds中的文件没有变化吗?如何将所有存储库中的文件保持不变?
谢谢。
答案 0 :(得分:2)
裸存储库没有工作树(目录中没有源文件)仅供参考:http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/ 如果要在ds上存储源文件,请不要使用裸存储库。
答案 1 :(得分:1)
你必须
git pull
在ds上。您的本地副本将不知道遥控器上是否有任何新内容,除非您命令它(使用git fetch
)。