我的目标是创建一个新的github存储库,其中包含我已分叉的存储库中的一些文件(然后使用http://deanmalone.net/post/how-to-fork-your-own-repo-on-github/
在我自己的github中有效地分叉了)我发现在我的仓库中,如果我移动文件以使它们像我想要的那样结束,则git历史记录将被删除(嗯,通常,即使不是,github也不会显示历史记录,直到您返回到父提交为止-这样,所有实际完成工作的人员都不会被列为贡献者-我真的很想避免)。
所以,我尝试进行稀疏签出
git init
<set remote>
git fetch
git checkout origin/master -- python/file.py
但这会创建python/file.py
,而不是file.py
,这正是我需要的。我显然无法播放该文件,因为它与我一开始就发现了同样的问题。
我看到了两种选择,但都没有找到实现方法
python/demo.py
或其他未找到的方式将git checkout
保存到当前目录中? (git archive
无效)python
,然后设置遥控器,以便仅将file.py
提交到我的仓库中?答案 0 :(得分:1)
在Git中,历史记录是提交;提交历史记录。没有“文件历史记录”之类的东西。
git log -- somefile.py
确实向您显示了影响somefile.py
的历史记录。但是方法这样做是为了查看 all 所有提交,从当前提交开始,一次回退一个提交。在每次提交时,它会将 parent 提交与该提交进行比较。 somefile.py
在父母与孩子之间有变化吗?如果是这样,请打印提交。如果没有,则不打印任何内容。无论哪种情况,都继续执行父提交。
(在合并提交时会遇到一些棘手的问题,根据定义,该提交具有多个父对象。在这里,Git默认遵循以下任何父对象没有更改somefile.py
。)
如果将--follow
添加到git log
,Git会做一件事:当它比较父级和子级时,它会检查父级和子级之间的差异是否表示文件是重命名。如果是这样,则移至父级后,它将立即开始寻找文件的 old 名称。但是,在所有情况下,您仍在查看 commit 历史记录的某些子集。如果有提交,Git将查看它们并打印其中一些。如果没有提交,则没有任何历史记录。