我有一个git repo,如下:
[root@localhost www]# tree
.
├── admin.php
├── api
├── index.htm
└── remote
└── mod
├── index.htm
├── mod_cron.php
└── mod_index.php
3 directories, 5 files
很容易获得git跟踪的文件夹和文件的列表。
[root@localhost www]# git ls-files >a.txt
[root@localhost www]# cat a.txt
.gitattributes
.gitignore
admin.php
api/index.htm
api/remote/mod/index.htm
api/remote/mod/mod_cron.php
api/remote/mod/mod_index.php
但是在工作目录中,有些文件夹和文件没有被git跟踪。整个工作目录如下:
[root@localhost www]# tree
.
├── admin.php
├── api
│ ├── index.htm
│ └── remote
│ ├── index.htm
│ ├── index.php
│ └── mod
│ ├── index.htm
│ ├── mod_cron.php
│ └── mod_index.php
├── archiver
└── index.php
4 directories, 8 files
如何获取未由git跟踪的文件夹和文件列表,如下所示::
archiver/
archiver/index.php
api/remote/index.htm
api/remote/index.php
我想在rsync -av --files-from=/path/to/not_tracked_files_lsit
中使用此列表。
预先感谢!
答案 0 :(得分:0)
基本上从上面的评论中复制...
find
将为您提供完整的文件列表。
find | grep -v '[.]git/' | grep -vf a.txt
应该从存储库本身和所有跟踪的文件中消除废话。
另一个选择,可能更好:
git status -s | sed -n '/^[^?]/d; s/^?? //; p;'
这应该做同样的事情,但希望可以做得更干净一点,并且要点更多,管道中的进程更少。