保留两个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