0

我已经在远程机器上以用户 bob 的身份克隆了一个 git 目录(在转发了本地密钥之后)。当我克隆 repo 时,repo 看起来很好,并且所有内容都显示出来,包括一个 .git 文件夹。

现在,我想将此文件夹复制到另一个位置,该位置恰好是一个文件夹的链接。当我执行 acp -r /tmp/tmp.kk3a8xemvr/* /home/staging/myapp时,所有内容都会被复制,但 .git 文件夹不会。当我在命令中明确调出 .git 文件夹时cp,它会被复制。我还注意到 .gitignore 也没有被复制。

另一个奇怪的行为是,当我转到 时/home/staging/myapp,我做了一个rm -rf ./*.git 文件夹不会被删除,除非我特别指出它。

.git 目录的简单 unix 命令如何表现不同?它的权限没有什么特别之处。难道是文件前面的句号引起了一些问题?

drwxr-xr-x 8 staging staging 4096 Oct 12 03:42 .git/

我的操作系统是 Ubuntu 12.04 LTS。

 Linux myapp 3.2.0-54-virtual #82-Ubuntu SMP Tue Sep 10 20:31:18 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

编辑 为 Jonathan 提供更多信息:我已更新文件夹名称以匹配以下命令:

# cd /tmp/tmp.kk3a8xemvr <- source, everything is good here.
root@myapp1:/tmp/tmp.kk3a8xemvr; ls -la
total 48
drwx------  9 bob bob 4096 Oct 13 03:08 .
drwxrwxrwt  7 root    root    4096 Oct 13 14:55 ..
drwxrwxr-x  3 bob bob 4096 Oct 13 03:08 ansible
drwxrwxr-x  4 bob bob 4096 Oct 13 03:08 backend
drwxrwxr-x  3 bob bob 4096 Oct 13 03:08 clientdb
drwxrwxr-x 15 bob bob 4096 Oct 13 03:08 dapi
drwxrwxr-x  3 bob bob 4096 Oct 13 03:08 docs
drwxrwxr-x  3 bob bob 4096 Oct 13 03:08 fabfile
drwxrwxr-x  8 bob bob 4096 Oct 13 03:08 .git
-rw-rw-r--  1 bob bob   44 Oct 13 03:08 .gitignore
-rw-rw-r--  1 bob bob   68 Oct 13 03:08 README.md
-rw-rw-r--  1 bob bob  450 Oct 13 03:08 requirements.txt

# cd /home/staging; ls  
lrwxrwxrwx 1 staging staging   62 Oct 13 03:06 myapp -> /srv/www/staging.myapp.com/public_html/myapp/

# command I use:
sudo cp -r /tmp/tmp.kk3a8xemvr/* /home/staging/myapp

# cd /home/staging/myapp; ls -la; # <- this is the intended destination; 
# .git and .gitignore are missing after applying the cp command.
drwxr-xr-x  9 staging staging 4096 Oct 13 14:59 .
drwxr-xr-x  3 staging staging 4096 Oct 13 03:06 ..
drwxr-xr-x  3 staging staging 4096 Oct 13 03:08 ansible
drwxr-xr-x  4 staging staging 4096 Oct 13 03:08 backend
drwxrwxr-x  2 staging staging 4096 Oct 13 14:59 clientdb
drwxr-xr-x 15 staging staging 4096 Oct 13 03:09 dapi
drwxr-xr-x  3 staging staging 4096 Oct 13 03:08 docs
drwxr-xr-x  3 staging staging 4096 Oct 13 03:08 fabfile
-rw-r--r--  1 staging staging   68 Oct 13 03:08 README.md
-rw-r--r--  1 staging staging  450 Oct 13 03:08 requirements.txt
4

1 回答 1

2

如果你这样做:

sudo cp -r /tmp/tmp.kk3a8xemvr/* /home/staging/myapp

shell 将*' 所有不以.' 开头的文件或目录名扩展(因此省略.git等)。

如果你这样做:

sudo cp -r /tmp/tmp.kk3a8xemvr /home/staging/myapp

你会得到一个tmp.kk3a8xemvr在 中创建的子目录/home/staging/myapp,我认为这不是你想要的。

但是,如果您这样做:

sudo cp -r /tmp/tmp.kk3a8xemvr/. /home/staging/myapp

你应该会发现你把所有东西都复制到了你想要的地方。

于 2013-10-13T15:30:42.647 回答