Cod*_*256 5 git git-stash git-stage
我想取消暂存当前工作副本中的所有内容,但会自动暂存我将来编辑的所有文件和大块。
例如,我使用的 CocoaPods 版本与我正在从事的项目中的大多数其他人不同。我想升级配置文件的配置以与我的 CocoaPods 兼容,而不会破坏他们的。最简单的方法是不在拉取请求中包含新配置,但这意味着我无法构建。隐藏和弹出将不起作用,因为如果我在编辑配置后隐藏然后应用我的更改,弹出将修复配置但撤消我的更改。
我应该如何解决这个问题?
一种方法是以仅您本地可见的方式修改该配置文件。
但在某种程度上,该存储库的其他用户仍然不可见。
如果这些修改定义良好(并且不是到处都是your.config.file),那么您可以考虑使用内容过滤器驱动程序,以便在签出时为该配置文件生成正确的内容:
在声明your.config.file中添加与文件关联的涂抹脚本:.gitattributes
your.config.file filter=filterconfig
Run Code Online (Sandbox Code Playgroud)(在本地存储库的根文件夹中编辑或创建一个.gitattributes文件,然后在其中添加上面的行。您可以添加、提交和推送该文件:它不会对其他用户产生任何影响)。

(图片来自《自定义 Git - Git 属性》,来自《Pro Git book》)
cd /path/to/your/local/cloned/repo
git config filter.filterconfig.smudge 'update_config'
git config filter.filterconfig.clean 'restore_config'
Run Code Online (Sandbox Code Playgroud)
和脚本可以位于本地的任何位置(即使您在 Windows 上,它们也位于 bash 中,因为它们将由 mingw git bash 执行)update_config。restore_config$PATH
该update_config脚本将:
这样,git pull触发工作树更新的 a 将自动重新生成配置文件内容以及所需的本地修改。
restore_config每当 git 调用该脚本时,该脚本都会恢复已保存的文件副本(例如,它将由 agit status或 a触发):git diff
cat saved_copy
Run Code Online (Sandbox Code Playgroud)
这样,就 git 而言,配置文件似乎永远不会改变。
| 归档时间: |
|
| 查看次数: |
1422 次 |
| 最近记录: |