我在git仓库做两次提交/文件和他们推到我的git服务器拉承诺从混帐
的两次提交的
- 在第一次提交文件中的承诺
- 在第二次提交的文件B致力于
现在其他开发服务器上我想只拉第一次提交或文件A F rom git服务器。这个怎么做 ?
我在git仓库做两次提交/文件和他们推到我的git服务器拉承诺从混帐
的两次提交的
现在其他开发服务器上我想只拉第一次提交或文件A F rom git服务器。这个怎么做 ?
首先,你的开发服务器上,你需要从这样的混帐服务器上获取提交的名单:
git fetch origin master (or whatever branch you need)
然后有几个选项来实现你想要的:
Cherry挑选第一个提交 - 这只是从另一个分支/回购中“选取”所选提交并将其应用到当前的本地分支。它可能非常有用,但应谨慎使用(见下文)。
git cherry-pick <hash-of-commit-you-want>
在这种特殊情况下,你可以做
git cherry-pick FETCH_HEAD^ (gets commit before the HEAD of what's been fetched)
或者,拉一切,然后做一个硬复位到提交你想(在这种情况下,一个刚HEAD之前)。硬重置有效地将本地分支回退到所选提交,并将所有文件的状态更改为当时的状态(所以在这种情况下,文件B将被删除,或返回到之前的状态承诺,取决于它是否以前存在)。
git pull
git reset --hard HEAD^ (or git reset --hard <hash-of-commit-you-want>)
我宁愿第二种选择,因为樱桃采摘可以有一些敲击效果,如果你不小心。我相信它会为提交创建一个新的哈希,所以选择提交和原始提交并不完全相同。恐怕我现在没有时间来阅读这些内容,确切地确定这些缺陷是什么,但是我强烈建议你自己调查一下,如果你决定使用它的话。
编辑 - 另一种解决方案(考虑到这是一个活生生的服务器和文件B,在任何一点的服务器上出现了它不能接受)是做到以下几点:
git fetch origin master
git checkout FETCH_HEAD^
这将提取所有提交从回购,然后检查您的本地回购提交之前提交的提交。这里唯一的缺点是你将处于“独立头”状态,并且不得不在本地创建一个新的分支,但这不是一个大问题。
创建一个具有第一次提交但不是第二次的新分支,并检出该分支? –
@ThongKuah谢谢,但它不是一个好方法?任何其他方式? – Dau