git - Git: Keep system generated/modifed files unaffected my commits
问题描述
I am working on C# dot net project where recenly introduced git.
While building It will generated many dll files and modifies many tracked js files.
These files anyway I don't need to commit and push. But these files preventing me to pull latest from a branch, switching to different branch etc. I would like to get a simple solution for this problem so that
- It should allow me to switch branch by keeping these files as it is.
- While pulling new changes if any changes are to be applied to these js files from remote It should be applied on but still it should allow me to switch branch and pull new changes.
- I should be able commit other files that I changed easily
Please suggest the steps for this in git commands.
(I made those generated and system modified files as untracked but while pulling new changes it is not going because there are changes to be applied on files that I made untracked)
解决方案
对于您不想放入源代码管理的文件,请使用该.gitignore
文件。由于文件已经在 repo 中,您将需要采取措施删除它们 - 至少通过向每个分支添加提交以删除它们(请参阅git rm --cached
),或者可能通过编辑历史记录(例如使用git filter-branch
)。
您可以在此处搜索每个主题并找到许多解释它们的答案。您也可以参考 git 文档,例如
- https://git-scm.com/docs/gitignore为
.gitignore
- https://git-scm.com/docs/git-rm为
git rm --cached
- https://git-scm.com/docs/git-filter-branch for
git filter-branch
对于您希望能够从远程接收更改但又不想被阻止更改分支的文件......这无法以任何远程安全的方式完成。要么文件处于源代码控制之下,要么共享更改,要么应用有关管理未提交更改的所有规则;或者它不受源代码控制,并且在每个克隆中独立管理。
在最简单的情况下,您将拥有 3 种不同类型的文件: 由构建过程生成的文件,您从不编辑它们并且不存储在源代码管理中;来自 3rd 方源的文件,例如依赖项,您也不会编辑或放入源代码控制中,但在构建期间由依赖项管理软件拉入;和您编辑的文件,它们永远不会通过自动方式修改,并且是源代码控制中唯一的东西,因此您总是希望共享对这些文件的更改,并且永远不会有自动更改会阻止您进行拉取或分支切换。
如果您的流程要求您拥有不符合这些类别的文件,那么我要做的第一件事就是审查您的流程 - 因为源代码控制问题只是第一个(也是最轻微的)问题,来自拥有一个需要从 2 个或更多这些类别中更改。
如果您必须让构建过程修改本地创作和源代码控制的文件,或者是带有依赖项的第 3 方文件,那么构建过程应该复制该文件并对副本进行操作。修改后的副本应该是.gitignore
d 并且原始应该由构建过程单独留下。
如果您必须拥有将本地创作的更改混合到第 3 方文件中的文件,那么您应该为引入此类文件的依赖项的“您的版本”设置一个 repo(如果他们也使用 git 进行源代码控制,则为 fork) ,带有供应商分支,以便您能够在需要时合并他们对文件所做的未来更改。同样,这是一个您可以搜索并找到许多现有答案的主题。
推荐阅读
- android - Firebase UI 无法解决依赖关系
- serialization - 将 PostGIS 中的数据序列化为 JSON
- r - gganimate 根据时间为多条路径设置动画
- android - RecyclerView 适配器不适用于黄油刀
- mysql - 创建过程mysql CRUD时出错
- vim - Vim 在插入模式退出时禁用 make
- java - Java 客户端 SSL 重新协商
- javascript - 将 promise 与 resolve & reject 转换为异步函数的正确方法(puppeteer)
- python - PLY 可以处理输入而不将其全部加载到内存中吗?
- python - 氢包原子编辑器——奇怪的显示