我正从SVN转到GIT。通常在部署程序包时,工作目录会更新为特定的修订版本< = HEAD,但始终大于工作副本的当前版本。所以在SVN中它很简单,只需更新到特定版本
假设工作目录的当前版本 - 34500和HEAD在34600,并且需要为34576部署packagae。因此,在SVN中只需
svn update -r34576
当需要为更高版本创建新包时,我们只需转到更高版本,例如
svn update -r34589
现在,尝试在GIT中做同样的事情。包需要从master创建。但没有必要提升HEAD。这就是我要做的事情:
git checkout 3ef0d...
或
git pull --rebase origin master
git checkout 3ef0d...
同样,当我想要更高的提交ID / revison
时答案 0 :(得分:1)
听起来不错。您签出版本,然后从中构建您的包。如果您不想要artifcats,我还建议使用archive
命令从提交3ef0d
导出源树,然后从那里构建包。
答案 1 :(得分:1)
假设 - 假设 - 这是您从git log --graph --oneline
获得的输出。
* de65bbf < HEAD
* 189ca83
* 40c918c
* 5497694
|\
| * 5295fe4
* | 7879de1
|/
* 61f5fcb
假设,假设提交5295fe4中的工作是在一个单独的分支上完成的,然后合并到master中。由此产生的合并提交5497694是您要发布到生产中的。
使用git pull
下载存储库后,Git将包含该提交的所有工作以及其他一些工作,这是预期的 - HEAD是对提交图提示的引用。如果可以,我会避免在这里使用rebase标志;变基是强大的,但如果在一个很多人都可以看到它的分支上完成,它可能会引起一些心痛。
如果你真的知道你在使用rebase做什么,那么你就会有更大的力量。我建议等到你对Subversion和Git之间的细微差别感到十分满意。
如果您只想查看 提交,那么git checkout 5497694
就足够了。但是,您处于detached HEAD状态 - 此处完成的提交将创建未被分支引用的提交条目,这使得难以跟踪。当然,您可以创建该提交的分支并在那里对其进行更改。
如果您想正式声明此特定提交是可释放的,那么标记它将是一个更好的主意 - 改为运行git tag version-number 5497694
,这将创建一个更容易引用此特定提交。
但最终,您只想使用git pull
下拉更改。如果您的工作取决于特定的办理登机手续,git pull
会将您排除在外。
顺便说一下,回答一个关于pull vs checkout的早期问题:pull将使用来自远程服务器的更改来更新本地分支; checkout通常用于创建分支。