提交后将 git 存储库和工作目录复制到另一个位置,在检查状态时给出“未暂存的更改”
Posted
技术标签:
【中文标题】提交后将 git 存储库和工作目录复制到另一个位置,在检查状态时给出“未暂存的更改”【英文标题】:Copying git repository and working directory into another location after a commit, giving "changes not staged for commit" when status is checked 【发布时间】:2019-12-10 21:10:18 【问题描述】:我有一个奇怪的问题。我对我的项目进行了更改并提交了所有更改。在此提交之后,我立即将 git 存储库(.git folder
)和工作目录(我的项目)复制到另一个位置。然后我在原始项目上运行 git status
而不是复制的项目。
虽然我期待working tree clean
,但我得到了changes not staged for commit
,为什么我会得到这个?
git status
输出
在分支 master 上未暂存提交的更改:(使用“git add ...”更新将提交的内容)(使用“git checkout -- ...”丢弃工作目录中的更改)
modified: kS_Solutions/My Project/PublishProfiles/mlkfilesys.pubxml.user modified: kS_Solutions/bin/FAMS_Solutions.dll
预期输出
Nothing to commit, working tree clean
【问题讨论】:
您是否尝试接受建议并对这些文件执行git add
?
如果您显示了重现问题的确切命令序列,它可能会(或可能不会)有帮助。特别是,你是如何复制的?
啊,所以您使用的是某种 GUI 界面,而不是命令行 Git。我一直对 GUI 持怀疑态度:它们喜欢在你背后改变事物。
您应该已经复制了封闭目录。我的猜测是你没有复制目录根目录下隐藏的 .gitignore 文件。
您是否正在使用 IDE 处理您的项目? FAMS_Solutions/bin/FAMS_Solutions.dll
是构建工件吗?您是在git commit
之后保存项目还是构建?
【参考方案1】:
真的很奇怪!根据您的操作系统,我建议使用几种方法之一来确定外部应用程序或进程是否正在更改文件。我认为您至少应该排除这种可能性,因为您描述的行为似乎不太可能在没有外部影响的情况下发生。
OSX:See what process is using a file in Mac OS X
Linux/Unix:https://unix.stackexchange.com/questions/13776/how-to-determine-which-process-is-creating-a-file
Windows:https://superuser.com/questions/521476/detect-what-process-is-changing-a-file-on-windows
正如其他人所提到的,我认为如果没有获得更多信息就很难提出更多建议,但我祝你一切顺利解开这个谜团。
【讨论】:
以上是关于提交后将 git 存储库和工作目录复制到另一个位置,在检查状态时给出“未暂存的更改”的主要内容,如果未能解决你的问题,请参考以下文章
Git:如何使外部存储库和嵌入式存储库作为通用/独立存储库工作?
Git远程仓库 复制到另一个远程仓库 并保留commit信息。关于Git代码提交到远程仓库怎么撤回。.gitignore。git pull 时提示为何需要merge操作如何退出
Git远程仓库 复制到另一个远程仓库 并保留commit信息。关于Git代码提交到远程仓库怎么撤回。.gitignore。git pull 时提示为何需要merge操作如何退出
Git远程仓库 复制到另一个远程仓库 并保留commit信息。关于Git代码提交到远程仓库怎么撤回。.gitignore