如何为单个文件创建分支?

3
我有一个产品有两个版本,到目前为止我只能使用编译器标志和 #ifdefs 来管理它们之间的差异。现在我想为每个产品单独设置一个图标。其余的代码库,包括引用图标文件的源代码保持不变。我想将这些开发流程保留在 git 分支中(例如,主分支、专业版和精简版),但是希望专业版和精简版分支 (a) 只包含不同的 icon.png 文件,(b) 自动包含任何在主分支中所做的更改。在 Subversion 中,可以通过分支单个文件(icon.png)来实现此目的。在 Git 中是否有类似的方法?
3个回答

2

只需创建一个分支:git checkout -b branchName并更换图标。当然,还需要进行git commit。之后,您可以在父分支(或master分支,如果您喜欢的话)中工作,并使用git rebase将更改拉入branchName。


本地跟踪分支和git rebase的组合是我需要的唯一起作用的方法,感谢! - Sergey Mikhanov

1

在Git中,您不能为单个文件创建分支。当您创建分支时,您会为整个存储库创建分支。(当然,与Subversion不同,分支不会在磁盘上创建实际的文件副本,因此分支是便宜的,不会像Subversion分支那样占用太多额外的空间。)

听起来,这个图标更改的分支将是一个长期运行的分支,即,它将合并自主分支的更改,但它的更改不经常合并回主分支,您几乎会一直保留该分支。在这种情况下,您应该设置分支自动跟踪主分支。您可以通过在创建新分支时向git branch或git checkout传递--track选项来设置此项(有关详细信息,请参见git branch的手册页)。


谢谢提示!分支pro和lite确实是长期存在的,因此我将它们创建为远程分支(git push origin master:refs/heads/pro),并且我有本地副本跟踪每个分支。是否有一种方法可以强制远程pro和lite跟踪远程master? - Sergey Mikhanov
不过,你的本地分支可以像我回答中所述跟踪主分支,当你推送到远程时,这些更改将被推送出去。 - mipadi

0

只需分支和提交图标。在 Git 中应该就可以了。然后,当您想要包括其他分支的更改时,只需合并即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接