這個問題可能是愚蠢的,但我一直在想它。這是關於git存儲庫,但我認爲對於其他DVCS的本地存儲庫是一樣的。搬家git倉庫
比方說我的項目是這樣的,當它開始:
- 項目
- git的
- 所有其他文件夾中的項目
所以這是怎麼它會工作,當你設置它的權利?
可以說我把項目文件夾移到其他地方,我是否需要改變任何東西?或者.git文件夾中的所有存儲庫內容僅與Project文件夾相關,而忽略了Project上的整個文件樹。
我很確定移動項目並不重要,但我只是想確保。
這個問題可能是愚蠢的,但我一直在想它。這是關於git存儲庫,但我認爲對於其他DVCS的本地存儲庫是一樣的。搬家git倉庫
比方說我的項目是這樣的,當它開始:
所以這是怎麼它會工作,當你設置它的權利?
可以說我把項目文件夾移到其他地方,我是否需要改變任何東西?或者.git文件夾中的所有存儲庫內容僅與Project文件夾相關,而忽略了Project上的整個文件樹。
我很確定移動項目並不重要,但我只是想確保。
是的,.git
中的所有內容都是相對的。如果您已將存儲庫作爲另一個存儲庫的命名遠程名稱添加,則必須更改該存儲庫中的遠程URL。
不,這是錯誤的。請參閱下面有關子模塊的答案。 – erikkallen
@erikkallen查看我對該答案的評論,解釋我無法驗證這些語句。 (如果我可以深入瞭解發生了什麼,我將相應地編輯我的答案。) –
不,你不需要改變任何東西。也就是說
你有指向該副本
沒有外部倉庫,如果你這樣做,你必須通過使用
git remote set-url [--push] origin [email protected]:/home/user/newlocation/Project
(原點應該是遠程的名稱;起源是從遠程回購點克隆時的默認名稱)
這個!當你只使用'remote set-url'時,就不會出現設置本地分支上游的問題。 –
我發現子模塊在git中不是相對的。
所以,如果你想移動包含子模塊的一個項目,你必須編輯.git
文件中的子模塊,以及輔助模塊配置文件中的「worktree」屬性,它被保存在父母的.git/modules/MODULENAME/config
文件。
我還必須編輯'MODULENAME/.git',其中包含'gitdir'的鍵值對' –
這應該是接受的答案。 – erikkallen
我實際上已經將這些值更改爲相對路徑,使用../ ..(但是需要多少)返回到項目的根目錄。 – Uilleann
你可以將git目錄從一臺機器移動到另一臺機器,或者說,你想遷移你的項目文件夾。
所有關於原點的信息都存儲在'.git'文件夾中,該文件夾在初始化系統目錄下的git存儲庫時創建。
程序
顯示當前的遠程(這是當然的可選步驟):
$ git remote show origin
* remote origin
URL: [email protected]:project.git
Remote branch(es) merged with 'git pull' while on branch master
master
Tracked remote branches
master
我們需要做的是刪除當前的原點並添加新的原點:
$ git remote rm origin
$ git remote add origin [email protected]:project.git
$ git remote show origin
* remote origin
URL: [email protected]:project.git
Remote branch(es) merged with 'git pull' while on branch master
master
error: refs/remotes/origin/HEAD points nowhere!
New remote branches (next fetch will store in remotes/origin)
master
不要擔心最後一條命令顯示的錯誤。從源頭上拉頭將修復它:
$ git pull
From [email protected]:project.git
* [new branch] master -> origin/master
Already up-to-date.
$ git remote show origin
* remote origin
URL: [email protected]:project.git
Remote branch(es) merged with 'git pull' while on branch master
master
Tracked remote branches
master
我仍然使用Git新鮮,所以也許THRE是一個更好的方式來做到這一點,但是這爲我工作。
偉大的建議。但是,本地分支不會將其上游設置爲新「原點」的遠程跟蹤分支。但是,有消息:「當前分支沒有跟蹤信息。 請指定你想合併哪個分支.'和一個建議:'如果你想爲這個分支設置跟蹤信息,你可以這樣做: git branch --set-upstream-to = origin/
只要你移動.git文件夾你就OK –