在 Git 中,如何在合并时忽略文件但仍将其推送到远程?

3
我正在处理一个包含许多sass文件的项目,这些文件会被编译成一个大的style.css文件。
问题在于,当合并时,这个style.css总是会引起问题,但我们仍然希望将其最新版本推送到服务器。我最终所做的是,在与主分支合并时删除本地的style.css文件,然后重新编译sass,再将所有内容推送到远程。
那么,当我推送主分支时,如何忽略特定的文件,但仍然将它推送到远程?
编辑: 基本上,我希望我的文件版本始终覆盖主分支上的版本,而不会引起冲突,并且其他文件像往常一样被合并。

你将代码合并到主分支(master),但你要将其推送(push)到主分支。 - rogelio
我认为YemSalat想说“拉取时”。 - Creasixtine
你不能通过Sass文件在服务器上生成style.css吗? - Sascha Wolf
2个回答

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 推送您的 public/ 目录而不是 Git。在这种情况下,您将不必跟踪此 style.css
  3. 针对 style.css 进行单独提交,并在合并之前使用 git cherry pick 来合并和覆盖特定文件。
  4. 你需要让 style.css 存在于主分支吗?如果不需要,在维护一个单独的分支来管理你的 style.css,忽略 master 中的 CSS,并且 style.css 的分支将包含一个特定的 .gitignore 文件,其中包含 !style.css。因此,这个特定的分支将只有 2 个文件,并且您可以自动将 master 合并进去。

1
据我所知,我们不能强制推送单个文件。
目前你可以这样做:
1)在运行sass后,将style.css分别保存并检查到当前版本(只有style.css),然后推送代码。
2)现在复制保存的style.css,然后提交,使用git force命令将其强制推送到远程。
git push -f <remote> <branch>

(或)

使用git ignore style.css,一旦忽略它,它将不再被跟踪,但每次您都需要复制最新的style.css到服务器上。


我猜问题出现在“拉取”而不是推送(因为这是合并问题)。对吗? - Creasixtine

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