git 忽略更新

130 阅读2分钟

说明

  • thinkphp项目,本地代码修改之后, git提交到master的分支中, 服务器端通过git pull master的分支, 完成代码的更新。
  • 希望忽略.env的提交, 因为本地和服务端的数据库参数不一样,本地和服务端需要两份不一样的.env的文件
  • 需要重新修改.env的时候,可以打开‘某个开关’重新更新.env文件

碰到的问题

    1. .gitignore 文件中添加 /.env没有效果,因为.env 文件有跟踪状态
    1. 使用 git rm --cached .env,git state层的.env文件被删除了,服务端pull后 .env也会被删

解决

如果你不想删除 .env 文件,但希望在未来的更改中忽略它,可以通过修改并避免。相应地,你需要一个解决方案来忽略 .env 文件的更改而不删除它。

示例操作步骤

先要将.env文件内容维持服务端的提交。

  1. 修改 .gitignore 文件: 确保你的 .gitignore 文件包含以下条目:

    *.env   // 或者 /.env
    
  2. 阻止 Git 跟踪 .env 文件的进一步更改: 在项目根目录中运行以下命令:

    git update-index --assume-unchanged .env
    
  3. 提交 .gitignore 文件的更改

    git add .
    git commit -m "Add .env to .gitignore"
    git push
    

恢复对 .env 文件的跟踪

如果你需要恢复对 .env 文件的跟踪,可以使用以下命令:

git update-index --no-assume-unchanged .env

这样,你可以在需要时重新开始跟踪 .env 文件的更改。

检查 .env 文件状态

确认 .env 文件的状态:

git status

你应该看不到 .env 文件的更改出现在未提交的更改中。

总结

通过这种方法,你可以确保 .env 文件在本地保留,并且不会在远程仓库和服务器上的拉取操作中被删除。此方法适用于需要保留 .env 文件但避免其更改被提交到版本控制系统中的情况。