4

我有一个正在处理的项目,我已经在 git repo 中设置了该项目。

自从我发布了我的最新版本以来,网站所有者通过直接覆盖它对工作/内容进行了一些更改。

显然,这些更改是在版本控制之外进行的。我想我可以覆盖我的回购的全部内容,然后提交。那应该可行...但我真的不喜欢这样做的想法,尤其是如果用不正确或不良做法的东西替换了正确的代码/ html结构。

我想做的是将网站从现场转储到另一个目录并进行递归差异,所以我只能覆盖那些已更改的文件(如果有任何问题,请纠正任何问题)

4

3 回答 3

5

就好像我只是覆盖了我的 git repo 中的内容,然后运行 ​​git status?

不,您不必覆盖任何内容。

你可以做一个差异:

  • 代表您的站点处于最新版本状态的索引(在 git 存储库中)
  • 当前活动站点的转储(在不同文件夹中完成的副本,不受版本控制)

然后你可以做(​​使用git选项):

git diff --git-dir=/path/to/repo/.git --work-tree=/path/to/dump .

您实际上可以从任何文件夹执行该命令:它将查找 git 索引和正确的工作树。


OP Tom Busby在评论中补充道:

最后,我通过简单地用.git我的 git repo 中的文件夹覆盖我的转储目录中的文件夹并运行git diff.

于 2014-05-24T18:32:49.037 回答
2

VonC 的回答非常好,但我相信您也可以只使用diff命令(大多数操作系统上的内置命令)。这也将确保“gitignored”文件被区分(尽管 VonC 可能已经这样做了)。

假设你的网站/www/mysite和一个新的克隆/git/mysite你可以这样做:

diff /www/mysite /git/mysite

于 2014-05-24T19:20:21.833 回答
-1

是的,我们可以很容易地比较两个目录

只需在 Shell/Terminal 上使用此命令

git diffdir 任何分支名称 任何其他分支名称

于 2017-07-21T07:55:04.300 回答