我已启用$Id:$
通过ident
在.gitattributes
文件扩展。这使我可以在别人检出我的存储库并从那里安装它时快速识别文件是否过期。更新登录后的ident字符串
现在,我还将我自己的Git存储库的内容同步到其他(非开发,即无Git)系统。问题在于关键字扩展只发生在结帐,但我的工作流程是commit - > push - > sync,所以同步副本包含过时的ID。
如何在本地提交后轻松强制更新Ids? (积分为之后的任何承诺自动做这个!)
简单git checkout
不工作(也不能与--force
),可能是因为该文件的内容并没有改变。 git checkout-index --force
也没有。我只设法通过无论是本地的修改来完成这个(繁琐,需要知道修改后的文件):
$ echo "modified" >> file
$ git checkout file
或临时检查出以前的承诺:
$ git checkout HEAD^
$ git checkout [email protected]{1}
你申请什么filepattern此的ident属性?以及包含多少个文件? –
另外,一个提示(虽然这不能回答你的问题):你可以做'git checkout HEAD @ {1}',它会检出HEAD的前一个值(http://git-scm.com/book/ EN /针对Git工具版本选择#引用日志 - 简短名字)。它跟踪分支值在.git/logs –
我会建议在检出文件时不要使用idents。它几乎从来都不是正确的解决方案,并导致比解决问题更多的问题;相反,如果您需要跟踪哪个修订版与结帐相对应,那么我会使用一个单独的文件来跟踪该文件,并且不会将其提交给git。例如,如果你有一个'sync'脚本,让它将当前的commit-id写入一个文件,然后在需要显示的地方读取该文件。 –