查看更新的git裸存储库文件的最佳方法是什么? (ls-tree的概念)

时间:2018-07-21 15:01:16

标签: git bare git-ls-tree

我正在寻找一种方法来查看git裸存储库上的文件,这些文件已由其他远程服务器更新,但没有在我的存储库中进行拉取。

我将尝试使用本地示例来描述我的疑问。

我创建一个文件夹,添加两个文件并创建一个新的存储库。

> mkdir stackOF && cd stackOF
> touch file1 file2
> git init

然后我从此仓库创建一个裸仓库。

> cd .. && git clone --bare stackOF stackOF.git

现在,我想创建该裸仓库的两个副本,并模拟太同事的一些动作。

> git clone stackOF.git stackOF.clone1
> git clone stackOF.git stackOF.clone2

首先,clone1将创建一个文件,提交并推送更改。

> cd stackOF.clone1 && touch file_clone1
> git add . && git commit -m "File from clone 1."
> git push

第二,clone2将创建一个文件并仅提交。

> cd ../stackOF.clone2 && touch file_clone2
> git add . && git commit -m "File from clone 2."

在这一点上,我开始对ls-tree概念产生怀疑。执行下一个命令,我希望看到由clone1推送的文件,但是会收到以下消息:

> git ls-tree origin
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5392    file1
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5392    file2

我想在裸仓库目录中收到类似执行ls-tree命令的结果:

> cd ../stackOF.git
> git ls-tree master
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5392    file1
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5392    file2
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5392    file_clone1

在研究这种情况下,我找到了一个命令,该命令向我显示了我想要的内容,但还包含许多其他信息。因此,返回到clone2并执行以下命令:

> cd ../stackOF.clone2
> git archive -v --remote=file:///f/gits/stackOF.git master
pax_global_header00006660000000000000000000000064133246307500014515gustar00rootroot0000000000000052 comment=0085439d6a07481e6a21db545edd3f7960c038e2
file1000066400000000000000000000000001332463075000117720ustar00rootroot00000000000000file2000066400000000000000000000000001332463075000117730ustar00rootroot00000000000000file_clone1000066400000000000000000000000001332463075000131520ustar00rootroot00000000000000remote: file1
remote: file2
remote: file_clone1

总结一下,我位于clone2存储库中,无需进行任何查找即可查找裸存储库中的哪些文件。但是我想要更干净的东西,例如在裸仓库中使用ls_tree

0 个答案:

没有答案