Git - 从头拉取代码,提交后提交
Git - Pull code from the beginning, commit after commit
我在 GitHub 上分叉了一个项目,并且为了了解它是如何工作的(以后为它做出贡献),我想及时回到最初的提交制作,然后一个接一个地拉取它们,只需在每一步浏览回购协议,并查看与上一次提交的差异。
基本上,我需要知道如何做三件事:
- 回到repo的初始状态
- 拉一个提交(我不需要编辑代码,直接查看)
- 查看此次提交与上一次提交之间的差异
我假设我可以为后者做类似 git diff HEAD~1
的事情。但是,我不知道如何做另外两个,尤其是第一个。
如果你只是想比较 git diff
可以用来查看任何提交之间的差异 git diff sha1 sha2
。如果你想让本地回购到一个特定的提交,你所要做的就是 get reset <sha> --hard
并且顶级提交将是你指定的 sha。当你完成后,你可以再次从远程拉取,让你的本地副本与远程主机同步
"pull" 这个词在 Git 中有特殊含义,与你想做的事情无关。 (而且,与你的问题没有任何关系,但我建议根本不要使用 git pull
。使用 git fetch
后跟第二个 Git 命令,这就是 git pull
无论如何都适合你。问题是 right 第二个命令可能取决于你用 git fetch
得到的东西,所以 git pull
运行 有时错一个。)
一旦您有权访问存储库——例如原始存储库;没有必要分叉它,也不是说这真的会造成伤害——您应该 git clone
使用任何合适的 Git 客户端将它连接到您的本地计算机。这会在本地为您提供所有内容的完整副本。现在您可以随意浏览它,使用 git checkout
提取任何给定的提交,并使用 git log
查看提交(或 gitk
或一些 GUI 来查看,有时还 git checkout
, 那些提交).
任何Git GUI——gitk、GitUp, GitKraken, GitHub Desktop等——应该允许你做你想做的事。 Select 主线分支并滚动回开头。然后,依次选择每个提交将显示该提交与前一个提交的差异。
祝你好运!
and 的答案更贴合您的问题。但是,如果您真的想要,您可以轻松地为每次提交生成 diff's/patches。
如果您确实愿意,可以为每次提交生成补丁。
git format-patch $(git rev-list --max-parents=0 HEAD)..HEAD
这将从第二次提交到最后一次提交创建一个 "patch" 文件。然后您可以单独检查每个提交。
我在 GitHub 上分叉了一个项目,并且为了了解它是如何工作的(以后为它做出贡献),我想及时回到最初的提交制作,然后一个接一个地拉取它们,只需在每一步浏览回购协议,并查看与上一次提交的差异。
基本上,我需要知道如何做三件事:
- 回到repo的初始状态
- 拉一个提交(我不需要编辑代码,直接查看)
- 查看此次提交与上一次提交之间的差异
我假设我可以为后者做类似 git diff HEAD~1
的事情。但是,我不知道如何做另外两个,尤其是第一个。
如果你只是想比较 git diff
可以用来查看任何提交之间的差异 git diff sha1 sha2
。如果你想让本地回购到一个特定的提交,你所要做的就是 get reset <sha> --hard
并且顶级提交将是你指定的 sha。当你完成后,你可以再次从远程拉取,让你的本地副本与远程主机同步
"pull" 这个词在 Git 中有特殊含义,与你想做的事情无关。 (而且,与你的问题没有任何关系,但我建议根本不要使用 git pull
。使用 git fetch
后跟第二个 Git 命令,这就是 git pull
无论如何都适合你。问题是 right 第二个命令可能取决于你用 git fetch
得到的东西,所以 git pull
运行 有时错一个。)
一旦您有权访问存储库——例如原始存储库;没有必要分叉它,也不是说这真的会造成伤害——您应该 git clone
使用任何合适的 Git 客户端将它连接到您的本地计算机。这会在本地为您提供所有内容的完整副本。现在您可以随意浏览它,使用 git checkout
提取任何给定的提交,并使用 git log
查看提交(或 gitk
或一些 GUI 来查看,有时还 git checkout
, 那些提交).
任何Git GUI——gitk、GitUp, GitKraken, GitHub Desktop等——应该允许你做你想做的事。 Select 主线分支并滚动回开头。然后,依次选择每个提交将显示该提交与前一个提交的差异。
祝你好运!
如果您确实愿意,可以为每次提交生成补丁。
git format-patch $(git rev-list --max-parents=0 HEAD)..HEAD
这将从第二次提交到最后一次提交创建一个 "patch" 文件。然后您可以单独检查每个提交。