搬家git仓库
这个问题可能是愚蠢的,但我一直在想它。这是关于git存储库,但我认为对于其他DVCS的本地存储库是一样的。搬家git仓库
比方说我的项目是这样的,当它开始:
- 项目
- git的
- 所有其他文件夹中的项目
所以这是怎么它会工作,当你设置它的权利?
可以说我把项目文件夹移到其他地方,我是否需要改变任何东西?或者.git文件夹中的所有存储库内容仅与Project文件夹相关,而忽略了Project上的整个文件树。
我很确定移动项目并不重要,但我只是想确保。
是的,.git
中的所有内容都是相对的。如果您已将存储库作为另一个存储库的命名远程名称添加,则必须更改该存储库中的远程URL。
不,这是错误的。请参阅下面有关子模块的答案。 – erikkallen
@erikkallen查看我对该答案的评论,解释我无法验证这些语句。 (如果我可以深入了解发生了什么,我将相应地编辑我的答案。) –
不,你不需要改变任何东西。也就是说
- 假设没有脚本设置GIT_DIR,GIT_WORKTREE或GIT_INDEX直接(不太可能)
-
你有指向该副本
-
没有外部仓库,如果你这样做,你必须通过使用
git remote set-url [--push] origin [email protected]:/home/user/newlocation/Project
012重新指向他们
-
(原点应该是远程的名称;起源是从远程回购点克隆时的默认名称)
这个!当你只使用'remote set-url'时,就不会出现设置本地分支上游的问题。 –
我发现子模块在git中不是相对的。
所以,如果你想移动包含子模块的一个项目,你必须编辑.git
文件中的子模块,以及辅助模块配置文件中的“worktree”属性,它被保存在父母的.git/modules/MODULENAME/config
文件。
我还必须编辑'MODULENAME/.git',其中包含'gitdir'的键值对' –
这应该是接受的答案。 – erikkallen
我实际上已经将这些值更改为相对路径,使用../ ..(但是需要多少)返回到项目的根目录。 – Uilleann
你可以将git目录从一台机器移动到另一台机器,或者说,你想迁移你的项目文件夹。
所有关于原点的信息都存储在'.git'文件夹中,该文件夹在初始化系统目录下的git存储库时创建。
程序
- :将项目文件夹到其他位置。
- :如果项目文件夹正在移动到新机器上,则创建相应的SSH密钥对。
- :让Git使用的是谁:混帐配置--global user.email “your_git_email_id @ youremail”
显示当前的远程(这是当然的可选步骤):
$ 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 –