2014-05-24 24 views
3

我有一個項目,我正在設計一個git倉庫。由於網站所有者進行實時更改,在兩個目錄之間做一個「git diff」

因爲我把我的最新版本直播,網站所有者通過直接覆蓋它的工作/內容做了一些改變。

顯然這些更改是在版本控制之外進行的。我想我可以覆蓋我的回購的全部內容,然後提交。那應該工作......但我真的不喜歡這樣做的想法,尤其是如果有任何正確的代碼/ html結構替換不正確或不正確的做法的東西。

我希望做的是轉儲從活動網站到另一個目錄和執行遞歸差異,所以我只能覆蓋那些已更改的文件(任何糾正任何問題,如果有的話)

+0

難道你不能只需運行'git status'來查看有哪些變化? –

+0

如果我只是覆蓋了我的git倉庫中的內容,那麼運行git status?這不是一個壞主意。 –

回答

4

As in if I just overwrite what's in my git repo, then run git status?

不,你不需要覆蓋任何東西。

你可以做之間的差異:

  • 代表在其最新的版本狀態您的站點(在混帳回購協議)
  • 當前活動站點的轉儲指數(副本在不同的實現文件夾,而不是在版本控制)

然後你可以做(​​使用git options)A:

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

您實際上可以從任何文件夾執行該命令:它將查找git索引和正確的工作樹。


OP Tom Busby增加in the comments

In the end I solved it by simply overwriting the .git folder in my dump directory with the one from my git repo and running git diff .

+0

正是我在找人,歡呼。 –

+0

我得到這個錯誤: 不是一個Git倉庫 要比較一個工作樹外兩條路徑: 用法:git的差異[--no指數]

+1

@TomBusby那是因爲你沒有通過你的repo的'.git'文件夾路徑:'--git-dir'必須引用'/ path/to/your/repo/.git'(最後'/ .git是重要的) – VonC

2

VonC的答案是優秀的,但我相信你也可以只使用diff命令(內置於大多數操作系統的命令)。這也可以確保「gitignored」文件得到了區分(儘管VonC可能已經這樣做了)。

假設在/www/mysite的網站,並在/git/mysite新鮮克隆,你可能只是這樣做:

diff /www/mysite /git/mysite

0

是的,我們可以很容易地比較兩個目錄

只需在程序中使用此命令/終端

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

相關問題