git push但不添加或更改文件

时间:2017-09-28 01:59:19

标签: git

我想使用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中的文件没有变化吗?如何将所有存储库中的文件保持不变?

谢谢。

2 个答案:

答案 0 :(得分:2)

裸存储库没有工作树(目录中没有源文件)仅供参考:http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/ 如果要在ds上存储源文件,请不要使用裸存储库。

答案 1 :(得分:1)

你必须

git pull

在ds上。您的本地副本将不知道遥控器上是否有任何新内容,除非您命令它(使用git fetch)。