我有一个正在处理的项目,我已经在 git repo 中设置了该项目。
自从我发布了我的最新版本以来,网站所有者通过直接覆盖它对工作/内容进行了一些更改。
显然,这些更改是在版本控制之外进行的。我想我可以覆盖我的回购的全部内容,然后提交。那应该可行...但我真的不喜欢这样做的想法,尤其是如果用不正确或不良做法的东西替换了正确的代码/ html结构。
我想做的是将网站从现场转储到另一个目录并进行递归差异,所以我只能覆盖那些已更改的文件(如果有任何问题,请纠正任何问题)
我有一个正在处理的项目,我已经在 git repo 中设置了该项目。
自从我发布了我的最新版本以来,网站所有者通过直接覆盖它对工作/内容进行了一些更改。
显然,这些更改是在版本控制之外进行的。我想我可以覆盖我的回购的全部内容,然后提交。那应该可行...但我真的不喜欢这样做的想法,尤其是如果用不正确或不良做法的东西替换了正确的代码/ html结构。
我想做的是将网站从现场转储到另一个目录并进行递归差异,所以我只能覆盖那些已更改的文件(如果有任何问题,请纠正任何问题)
就好像我只是覆盖了我的 git repo 中的内容,然后运行 git status?
不,您不必覆盖任何内容。
你可以做一个差异:
然后你可以做(使用git
选项):
git diff --git-dir=/path/to/repo/.git --work-tree=/path/to/dump .
您实际上可以从任何文件夹执行该命令:它将查找 git 索引和正确的工作树。
OP Tom Busby在评论中补充道:
最后,我通过简单地用
.git
我的 git repo 中的文件夹覆盖我的转储目录中的文件夹并运行git diff
.
VonC 的回答非常好,但我相信您也可以只使用diff
命令(大多数操作系统上的内置命令)。这也将确保“gitignored”文件被区分(尽管 VonC 可能已经这样做了)。
假设你的网站/www/mysite
和一个新的克隆/git/mysite
你可以这样做:
diff /www/mysite /git/mysite
是的,我们可以很容易地比较两个目录
只需在 Shell/Terminal 上使用此命令
git diffdir 任何分支名称 任何其他分支名称