Git:将存储库更新到特定版本

标签 git

假设我有一个版本号为 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/

相关文章:

git - 多个 Git 修复提交

ruby-on-rails - 如何撤消 bundle install --deployment?

git - 将旧提交移动到新分支

git - 从 git 存储库获取版本号

在 VSCode 中关闭提交消息文件时,Git 挂起并显示 "hint: Waiting for your editor to close the file..."

git - 如果 HEAD 分离,如何将提交移到 master 之上?

git - 索引有reflog吗?

eclipse - Egit:如何将 git 恢复到干净状态

python - pycharm在两台计算机之间克隆同一项目的github时找不到解释器

git - hg 相当于 git add -p?