2011-04-08 130 views
1

我有一個在我的筆記本電腦上設置的git存儲庫,我在我的拇指驅動器上創建了一個克隆(用作備份)。我已經設置了遠程回購(拇指驅動器)來忽略推送錯誤。我可以根據需要將存儲庫的內容推送到驅動器(即,git日誌顯示在筆記本電腦上進行的提交),但是我想將這些文件與回購更改一起推送。有誰知道如何做到這一點?將文件推送到遠程git存儲庫

這是在Linux中使用。如果您需要任何其他信息,請詢問。

+0

我不太明白:你能夠將文件推送到拇指驅動器,並且你問如何將文件推送到拇指驅動器? – Darhuuk 2011-04-08 20:51:39

+0

爲什麼不直接拉到拇指驅動? – 2011-04-08 21:30:45

回答

2

但我想推文件 自己與回購一起改變

不知道你的意思在這裏。

您最終是否在您的拇指驅動器上創建了bare repository? 如果是這樣,它是由設計,沒有檢出文件。

但是,您可以使用git archive來導出文件,或者簡單地在您的拇指驅動器上創建另一個非光面克隆。

也許檢查有關working directory的文檔。

0

git checkout master如果您不使用裸倉庫。

根據您的需要,裸倉可能不是您想要的。

我打算假設,因爲創建一個裸存儲庫需要git clone somePath --bare您可能正在使用一個標準的git存儲庫而沒有檢出任何文件。

這裏是用例:

  • 只備份:純倉庫可能是 更好,因爲你只會有 由庫所佔用的空間, 壓縮,而不是-also-的空間 從工作副本。

  • 副本具有完全訪問文件,不必是最新 所有的時間:簡單的克隆 倉庫,使用git reset origin/master擦無論是在工作拷貝贊成推變化。

  • 複製文件不斷更新:這是最棘手的情況,因爲默認情況下,git不會在推送時更新工作副本。有一個快速搜索,並提到一個方法是使用後更新鉤:http://jennyandlih.com/pushing-remote-git-working-copy。請注意,這可能不會允許在該副本上進行編輯並在推送時進行替換,除非您深入瞭解可以自行計算出來的存儲流行事物。

我的建議,(我做這一切的時候),手動更新克隆當你需要:

創建一個簡單的克隆(非裸)。然後git branch staginggit checkout staging。您現在有一份工作副本,但您需要通過git rebase origin/master手動自行更新,以便獲取更改。你可以推動從分期到主人的變化。請注意,該存儲庫中的任何「主」分支可能會被推到它的變化扭曲,並且不應該被使用或依賴。

0

您似乎在說,當您推送文件時,您希望文件本身出現在遠程回購站中?這不是git的常用用法,但你當然可以做到;許多人使用它來讓網站使用git作爲傳輸來自動部署。

要實現此目的,您需要在目標存儲庫(.git/hooks/post-update)中設置更新後的掛鉤。像這樣的應該做的伎倆:

#!/bin/sh 
git checkout -f 

請記住,以確保它是可執行的。

+1

這個想法很有道理,但是你的實現有一個嚴重的錯誤。參見[SO 5531309](http://stackoverflow.com/questions/5531309/reset-hard-on-git-push/5534486#5534486)。在編寫使用使用工作樹的GIt命令的鉤子時,需要將GIT_DIR和chdir設置爲工作樹本身。在非裸倉庫中,使用'GIT_DIR = .'運行的鉤子和cwd設置爲'.git'目錄。這將導致使用工作樹的Git命令將'.git'本身視爲工作樹。這絕對不是你想要的(它可能會損壞你的倉庫)。 – 2011-04-09 03:35:28

+0

@Chris謝謝,如果我最終需要這個,我會盡力記住這一點! – crazyscot 2011-04-09 17:40:12

相關問題