2013-06-04 69 views
0

我是GIT的新手,學過很少的教程,並且我創建了主分支和其他工作分支,我正在處理任務。git如何從2個分公司存檔不同的文件

我在我的本地機器上創建了這個。我的客戶沒有git或任何東西。所以當我不得不更新服務器時。我創建一個包含所有更新文件的rar文件並上傳它們。

我正在處理任務(分支A)並將其上載到服務器。後來客戶要求我回滾(這是主分支)。假設已更改的文件是新分支(我已上傳)中的a,b,c,d,並且master上有A到Z文件。我切換回主分支。現在我需要獲取舊的a,b,c,d文件,以便我可以將它們上傳到服務器。

我已經安裝了Tortoise GIT和GIT GUI。我檢查了Tortoise GIT的比較分支選項,它顯示了我修改的文件。當我輸出它只保存文件名

我的問題是。我如何從2個分支中獲取不同的文件,在zip/rar壓縮文件中保持文件夾結構不變。

回答

1

您可以使用git diff --name-only master working_branch來獲取已更改的文件的名稱,並通過您喜愛的歸檔程序進行管道傳輸。

還有一個問題,你不能輕易從遠端刪除文件。選項--diff-filter可能對此有幫助,即git diff --name-only --diff-filter=D master working_branch會列出working_branch中已被刪除的文件。

編輯:這取決於你想要使用什麼存檔。下面似乎對Cygwin的zip package工作:

git diff --name-only --diff-filter=AM master working_branch | zip patch.zip [email protected] 

該補丁將包含添加和修改的文件。

+0

謝謝你的命令,你能否也請告訴我如何將它們添加到完整目錄結構的存檔中。 –

+0

你的編輯是好的,但我怎樣才能得到在ZIP中修改後的文件的舊版本:)主有A到Z文件,分支有A,B,C更新。我需要Master,A,B,C來恢復備份或回滾文件 –

+0

if old == master然後簽出master並使用各種'--diff-filter'選項(可能是'--diff-filter = M')。 – devconsole

0
git archive --format=zip -o diff_archive.zip HEAD `git diff --name-only master..HEAD` 
相關問題