Git - 在合并时忽略文件但仍然将其推送到远程

时间:2014-10-22 12:46:30

标签: git merge sass gitignore

我正在开发一个包含大量sass文件的项目,这些文件被编译成一个大的style.css

问题是这个style.css在合并时总是会导致问题,但我们仍然希望将其最新版本推送到服务器。我最终做的是 - 在与master合并时删除我的本地style.css文件,然后再次编译sass,然后将所有内容推送到远程。

我在合并时如何忽略特定文件,但在推送主分支时仍然将其推送到远程?

编辑: 基本上我总是希望我的这个文件版本覆盖master分支上的版本,而不会引起冲突,其他文件照常合并。

2 个答案:

答案 0 :(得分:1)

据我所知,我们无法强行推送单个文件

现在你可以做的是 1)分别运行sass save style.css并签出当前版本(仅限style.css)并推送代码。

2)现在复制保存的style.css然后提交,使用git force命令强制将其推送到远程。

git push -f <remote> <branch>

(或)

使用git ignore style.css,一旦被忽略它就不会被跟踪但你最终会每次都将最新的style.css复制到服务器

答案 1 :(得分:1)

编辑:您可能想要这样做:

[(*) code and commit]
[don't commit your style.css!]
$ git checkout -- public/style.css                # erase your own style.css
$ git pull
[merge if necessary]
[re-generate your style.css]                      # important!
git commit public/style.css -m "your message here"
git push origin                                   # should be OK.
[go to (*) and go on coding]

原帖

我认为有几种方法可以实现这一目标。

  1. style.css可能无法被git跟踪,因为它会再次生成。
  2. 如果您使用的是静态站点生成器,则应使用rsync而不是git推送public/目录。在这种情况下,您无需跟踪此style.css
  3. 对style.css进行单独提交,在合并之前,使用git cherry pick合并和覆盖特定文件。
  4. 你需要style.css存在于主人吗?如果没有,请为style.css维护一个单独的分支,忽略master中的CSS,style.css的分支将在您的公共目录中包含.gitignore,其中包含!style.css 1}}。因此,这个特定的分支只有2个文件,你自动合并内部的主文件。