Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 回购协议之间的转换_Git_Bitbucket - Fatal编程技术网

Git 回购协议之间的转换

Git 回购协议之间的转换,git,bitbucket,Git,Bitbucket,近3年来,我们一直在开发托管在ssh://me@foo.com:40000/myproject.git。现在我必须将文件传输到我的客户git repo,即ssh://git@bitbucket.bar.com:7999/w3/myproject.git 然后开发人员需要开始工作转移回购,即比特桶回购 所以我有两个问题,在回购协议之间传递代码的最佳方式是什么 那么,开发人员开始开发新回购协议的最佳方式是什么?是否可以只更改远程url?该项目是巨大的,我希望避免开发人员花一整天的时间来构建项目、配置

近3年来,我们一直在开发托管在
ssh://me@foo.com:40000/myproject.git
。现在我必须将文件传输到我的客户git repo,即
ssh://git@bitbucket.bar.com:7999/w3/myproject.git

然后开发人员需要开始工作转移回购,即比特桶回购

所以我有两个问题,在回购协议之间传递代码的最佳方式是什么

那么,开发人员开始开发新回购协议的最佳方式是什么?是否可以只更改远程url?该项目是巨大的,我希望避免开发人员花一整天的时间来构建项目、配置等


多谢各位

由于git通常会克隆整个存储库,因此除了克隆之外,您真的不需要做很多事情。
开发人员只需更改其“源”的URL或用不同的名称克隆新URL,并记住将其推送到那里。

就我个人而言,我会删除远程来源,然后添加远程来源。

是的,可以编辑远程URL。这取决于您的git客户端,但在裸GUI少git的层上,只要查看
.git/config
文件,您就会在那里找到所有远程设备的定义

[core]
    bare = false
    (.....)
[user]
    name = you
    email = your@email.com
[remote "origin"]                                #<---- here ya go '1
    url = ssh://me@foo.com:40000/myproject.git   #<--- here ya go '2
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
在那之后。。推一下

git push newrepo master

在此之后,新的回购协议将包含源回购协议中的“所有内容”(=取决于您推送的内容),新开发人员只需从新回购协议中
克隆/拉取
,而忽略旧回购协议

由于您正在进行正常推送,新回购协议也将获得完整历史记录。如果您不想这样做,则需要先对其进行修剪(挤压等)。

$git remote add

这是命令。在这里,新的_origin _name可以是一些名称,而不是您为旧的远程回购提供的名称。然后强制推送至新回购协议:

$ git push --force <new_origin_name>
$git推送--force
如果--force太强,可以将--force与lease一起使用。您的其他开发人员也需要这样做(当然除了使用--force选项!)


对于Bitbucket(在Windows/Mac上),每个人都使用Atlassian软件可能不是一个坏主意,它可以帮助人们在GUI上完成所有这一切。

非常感谢。语法是什么?我现在就可以试试。如果我不能执行git remote add newrepo(git remote add newrepo,git remote add newrepo,git remote add newrepo,git remote add newrepo,git remote add newrepo,git remote add newrepo,git remote add newrepo,git remote add newrepo,git remote add newrepo)怎么办?因为它已经存在?有点奇怪,不是吗?无论如何,假设您想删除旧代码并用最新的代码替换它-首先清理新的repo:删除除
master
之外的所有分支(因为您可能无法删除
master
b因为它可能是服务器裸repo上的默认分支),然后强制将孤立的空提交推送到
master
分支。在此之后,您的新回购协议将完全为空,并准备接收从实际源回购协议推送的内容。
git push --all
git push --tags
... etc
$ git push --force <new_origin_name>