假设我有一个版本号为 A 的存储库。我想将其更新为版本 B,而最新版本为 C。(版本 A 早于 B,B 早于 C)。我是 git 的新手,所以我做了一些研究,发现 this ,这启发了我一个解决方案:
git pull # update from A to the latest revision C
git reset --hard B
确实有效。但是由于我不能直接从 A 中 git reset --hard B
,所以更新到最新的先例仍然太重,我想知道是否有一些单行命令可以满足我的需要。有什么提示吗?
最佳答案
没有“将存储库更新到特定版本”。您的存储库拥有所有版本,这就是 git fetch
/git pull
所做的。
如果您想在本地当前工作树中放置一个特定版本的 repo 协议(protocol),有几种方法可以做到这一点。最接近您的问题是:
更新您的本地存储库:
git fetch origin
创建一个新分支(从你当前所在的任何分支,我们稍后会重新设置,所以这无关紧要):
git branch yourbranchname
git checkout yourbranchname
以上2个操作可以简写为一个(假设当前HEAD为分支源):
git checkout -b yourbranchname
然后将该分支的指针指向您需要的提交 (B
):
git reset --hard sha1-of-B
git reset --hard 将始终有效,它不依赖于你的分支历史,它起作用的唯一条件是提交 B 在你的本地对象库中(即 B 必须存在并且必须已经从远程仓库不是你的工作)。
正如@Hasturkun 指出的那样,您还可以使用额外的参数直接从任意哈希分支:
git checkout -b yourbranchname SHA-1
关于Git:将存储库更新到特定版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17942396/