Git 回购协议之间的转换
近3年来,我们一直在开发托管在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?该项目是巨大的,我希望避免开发人员花一整天的时间来构建项目、配置
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>