在repos之间切换

时间:2017-07-31 21:25:33

标签: git bitbucket

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

然后开发人员需要开始工作转移回购,这是bitbucket。

所以我有两个问题,在回购之间转移代码的最佳方法是什么?

那么开发人员开始处理新回购的最佳方式是什么?是否可以只更改remote-url?该项目非常庞大,我希望避免开发人员花一整天时间来构建项目,配置等等。

谢谢。

3 个答案:

答案 0 :(得分:1)

是的,可以编辑远程URL。这取决于你的git-client,但是在没有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,把它交给另一个开发者,然后他就可以了。呸。不要这样做,除非你是空白。

那是因为手动完成这一切并没有多大意义。 Git可以轻松处理多个遥控器,您可以push为您初始化新的远程仓库,clone可以让开发人员工作。可能会更多方便您(至少暂时)保持两个遥控器配置。

假设您已经拥有传统的origin,只需使用新名称添加新文件:

git remote add newrepo ssh://git@bitbucket.bar.com:7999/w3/myproject.git

之后..只需按

git push newrepo master

git push --all
git push --tags
... etc

之后,新回购将包含&#34;所有内容&#34; (=取决于您推送的内容),新开发人员可以简单clone/pull来自新的开发人员,忽略旧版本。

由于您正在进行正常推送,因此new-repo也会获得完整历史记录。如果你不想要那个,你需要先修剪它(壁球等)。

答案 1 :(得分:0)

由于通常git克隆整个存储库,除了克隆之外,你真的不需要做太多事情 开发人员只需更改其“来源”的URL或以不同的名称克隆新URL,并记得推送到那里 我个人会删除远程原点,然后添加远程原点。

答案 2 :(得分:0)

$ git remote add <new_origin_name> <new_origin_url>

是命令。在这里,new_origin_name可以是除了您给旧远程仓库提供的名称之外的其他名称。然后强制推送到新的仓库:

$ git push --force <new_origin_name>

如果--force太强,您可以使用--force-with-lease。您的其他开发人员需要完全相同(当然,除了使用--force选项之外!)。

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