1

我很好奇 git 是否会执行以下操作。

我有一个已提交的项目,其中包含 Mt.Rushmore 的 JPG a、b、c。

我现在创建项目的一个新分支 (2) 并将文件 a、b、c 替换为具有相同名称但属于黄石公园的新文件并提交。

我的意图是让两个项目相互独立,即使它们本质上是相同的(除了与每个项目相关联的创意 JPG 文件之外,它们很可能永远不会改变)。

我是否正确假设在切换分支时我可以期望文件来回切换?如果是这样,当我在分支之间移动时,从 repo 中删除/下载相关文件的 git 特定命令是什么?

如果这不是处理这个问题的正确方法,那是什么?

具体来说,我有一个 Android 项目,其中 java 代码库可能永远不会改变,但布局将根据各种标准有不同的艺术,我不希望将它们分成两个单独的项目,因为它们具有相同的包名称和所有这一切,它会变得非常混乱。

4

2 回答 2

2

分支可能是管理此问题的好方法。

Git 将根据您所在的分支为您更改图像。前提是它们的名字相同。

你要做的就是:

git checkout <branch-name>

如果底层封装相同,只是部分不同。我认为使用子模块会更好。

http://git-scm.com/book/en/Git-Tools-Submodules

这样,当您对底层包进行更改时,将更容易在两个项目之间共享该共同更改。不必解析您正在进行的布局更改。

于 2013-01-29T22:52:56.197 回答
1

您需要的工作流程如下所示:

$ git checkout -b rushmore
$ git add a.jpg b.jpg c.jpg
$ git commit -m "Mt.Rushmore"

$ git checkout -b yellowstone"
$ git add a.jpg b.jpg c.jpg  //modified files
$ git commit -m "Yellowstone Park"

到目前为止,您已经拥有rushmore包含 Mt.Rushmore 照片的yellowstone分支和用黄石公园照片覆盖这些照片的分支。您可以随时使用checkout -b rushmore来回切换。

此解决方案有一个缺点:如果您对分支进行了一些其他更改rushmore,您可以将它们合并到yellowstone分支,只需说:

$ git checkout yellowstone
$ git merge rushmore

然而,反向操作将失败,因为黄石照片将覆盖拉什莫尔山。因此,我相信更好的方法是将这些照片外部化或将两组照片提交到单独的目录中。只有一个分支,在运行时(可能使用一些配置选项)决定应该使用哪个照片集。

于 2013-01-29T22:59:02.097 回答