我在Github上有一个项目,我在上传更改之前在本地开发。然后,我在生产服务器上下载更改。方法很简单:
我的电脑:
git add .
git commit -m ""
git push -u origin master
服务器:
git pull
问题在于,在我的Django项目中,有一对文件夹的内容在上传到服务器时会产生影响:迁移文件夹和媒体文件夹。第一个导致当我在服务器上执行makemigrations时,它告诉我没有要做的更改,并且媒体文件夹添加了不需要的文件。我通常必须在服务器上下载时手动删除这些文件夹上的所有更改。
有没有办法,当我执行git add .
时,这些2个文件夹从未被包含在内?至少在我说他们应该这样做之前。
答案 0 :(得分:0)
令人惊讶的是,我没有找到这个问题的基本答案。
添加名为.gitignore
的文件。该文件可以指定每行要忽略的文件模式。通配符也可以工作。类似的东西:
*.pyc # ignore all pyc files
path/to/your/media*
# etc ...
提交.gitignore文件。
如果文件已提交到您的存储库,您可以使用git rm --cached your/files
删除它们。如果要删除目录,也要添加-r
。它们将保留在磁盘上,但要从git repo中删除。请注意,当您拉动服务器时,它们可能会被删除。在这种情况下,您需要备份它们,然后手动添加它们。由于您提交了.gitignore
,因此它们也应该在服务器上被忽略。
另一种(恕我直言更好)处理此问题的方法是创建一个“生产”分支或标记,让服务器跟踪它。这样,您可以继续在master中工作,然后在测试后将更改合并到生产分支。更容易以这种方式跟踪不同版本的文件。