繁体   English   中英

更新到GIT中的特定提交ID

[英]Updating to a specific commit id in GIT

我正在从SVN迁移到GIT。 通常,在部署程序包时,工作目录会更新为特定版本<= HEAD,但始终大于工作副本的当前版本。 因此在SVN中它很简单,只需更新到特定版本

假设工作目录的当前修订版-34500和HEAD为34600,而packagae需要部署为34576。因此,在SVN中

svn update -r34576

当需要为更高的版本创建新软件包时,我们只需移至更高的版本,例如

svn update -r34589

现在,尝试在GIT中执行相同的操作。 包需要从​​母版创建。 但没有必要直到头。 这是我应该做的吗?

git checkout 3ef0d...

要么

 git pull --rebase origin master
 git checkout 3ef0d...

同样,当我想要更高的提交ID /修订号时

听起来很正确。 您签出一个版本,然后从中构建您的软件包。 如果您不想使用artifcats,我也建议您使用archive命令从3ef0d开始导出源树,然后从那里构建包。

假设地说-这是您从git log --graph --oneline获得的输出。

* de65bbf < HEAD
* 189ca83
* 40c918c
*   5497694
|\  
| * 5295fe4
* | 7879de1
|/  
* 61f5fcb

假设,假设,提交5295fe4中的工作在单独的分支上完成,然后合并到master中。 您想要在生产中发布的5497694上的合并提交。

一旦使用git pull删除了存储库,Git将包括该提交中的所有工作以及其他一些工作,这是可以预期的-HEAD是对提交图提示的引用。 如果可以的话,我会避免在这里使用rebase标志。 重置功能很强大,但是如果在很多人都能看到的分支上执行此操作,则可能会导致某些痛苦。

如果您确实知道要进行基准调整,那将为您带来更多的功能。 我建议您推迟到您完全满意Subversion和Git之间的细微差别。

如果您只想签出那个提交,那么git checkout 5497694就足够了。 但是,您处于分离的HEAD状态-在此处完成的提交将创建分支未引用的提交条目,这使得跟踪变得困难。 当然,您可以根据该提交创建一个分支,并在那里进行更改。

如果您想正式声明此特定提交为可释放,则最好对其进行标记-运行git tag version-number 5497694 ,这样可以更轻松地引用此特定提交。

最终,尽管如此,您只想使用git pull的更改。 如果您的工作依赖于特定的签入位置,则git pull可以将您分类。

顺便说一句,要回答先前有关拉取与签出的问题:拉取将使用来自远程服务器的更改来更新本地分支。 checkout通常用于创建分支。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM