保留两个Git分支的特定文件

我有一个由主分支中的四个文件组成的仓库:两个项目文件(PHP文件btw)加上一个README.md.gitignore 。 我想创建一个额外的分支,它只包含两个相同提交级别的PHP文件。 如果可能的话,让这两个分支保持同步的最佳做法是什么?我想只提交一次,以更新我的PHP文件?

我正在研究这个问题的原因是,我想创建一个名为dist的分支,该分支只附带基本文件。


创建你的dist分支,记录你不想要的文件的删除。

git checkout master
git checkout -b dist
git rm .gitignore
git rm README.md
git commit -m "Remove non-dist files"

然后,你要更新您的每一次dist分支,只需rebase吧:

git checkout dist
git rebase master

这重播您dist提交(当你创建一个分支,它所做,并在您git rm一些文件)之上master ,这意味着它会一直删除多余的文件。

您必须强制将其推送到您的遥控器,但这不是问题,因为没有人应该为该分支做出贡献。


也就是说,发布管理通常不通过分支进行维护,但通过脚本可以从源代码进行打包和发布(这里指的是您执行的master分支中的一个脚本,以便将需要的部分复制到您要部署的位置)。


正如@VonC所说,Git没有成为发布管理或部署工具。 你离第一个注意到它非常接近:-) - 所以很容易让它做你想做的事情。

这就是你如何使用你想要的内容制作一个可执行的树,而​​不需要结账。 把它放在.git/post-commit ,也许从.git/hooks/post-merge链接到它,然后在分支上自动维护。

#!/bin/sh
files="this.php that/other.php"
branch=pub

# build a tree with selected already-committed content
new_tree=$(
  export GIT_INDEX_FILE=.git/sideband-index
  git read-tree --empty
  git ls-tree HEAD --  $files 
  | git update-index --index-info --add
  git write-tree
);

# commit the new tree to the tip of "$branch"
# if it doesn't match what's already there
current=$(git rev-parse -q --verify $branch:)
test $new_tree != "$current" 
&& git update-ref refs/heads/$branch $(
    git commit-tree ${current:+-p $branch} -m new content $new_tree
)

不熟悉的命令(几乎所有这些)都是为脚本程序使用而建立的,它们是为了这个目的而设计的。

链接地址: http://www.djcxy.com/p/49239.html

上一篇: Keep specific files of two Git branches in

下一篇: Git rebase a pushed feature branch