Git 如何将本地回购添加到新的远程分支

Git 如何将本地回购添加到新的远程分支,git,bitbucket,git-remote,Git,Bitbucket,Git Remote,这里需要一些帮助:理想情况下,我只需要创建一个新的回购,但我的团队中没有对它的Bitbucket权限,而负责创建的高级工程师正在休假几周 我在我的回购协议中有一个主分支,带有遗留代码——我不想改变它,太多的关键系统都是从那里得到的 我在我的网络上找到了部署服务器,其中包含许多有用的脚本,我希望这些脚本处于版本控制之下 我的解决方案是从主分支创建一个新分支,使用来自该新分支上部署服务器的脚本—与主分支完全不同的代码。(这是高级工程师以前做过的。) 我已经初始化了一个本地git回购 我添加了远程原点

这里需要一些帮助:理想情况下,我只需要创建一个新的回购,但我的团队中没有对它的Bitbucket权限,而负责创建的高级工程师正在休假几周

我在我的回购协议中有一个主分支,带有遗留代码——我不想改变它,太多的关键系统都是从那里得到的

我在我的网络上找到了部署服务器,其中包含许多有用的脚本,我希望这些脚本处于版本控制之下

我的解决方案是从主分支创建一个新分支,使用来自该新分支上部署服务器的脚本—与主分支完全不同的代码。(这是高级工程师以前做过的。)

我已经初始化了一个本地git回购

我添加了远程原点:

git remote add origin https://my.username@bitbucket.site.com/scm/dev.repo.git
我已经通过bitbucket的站点添加了一个分支,我将调用部署脚本

我已经在本地创建了分支
部署脚本
。(但我已在master中签出。)

我害怕做
git fetch
并覆盖关键脚本和所有内容。
(或者fetch不这样做吗?)我希望做一些类似于
git push origin部署脚本的事情
,并拥有一个不错的新分支,在那里脚本可以存活

这条路对吗?我现在该怎么办

git fetch
不会覆盖任何内容
git fetch
只需将本地存储库中的引用更新(并创建)到远程存储库。在您的情况下,这将创建一个名为
源代码/部署脚本的引用。初始提取将如下所示:

$ git fetch
From https://my.username@bitbucket.site.com/scm/dev.repo.git
 * [new branch]      deployment-scripts        -> origin/deployment-scripts
这意味着信息是从给定的url获取的,其中创建了名为
部署脚本
的新分支,并在本地存储库中为其创建了名为
源代码/部署脚本
的引用

未来的
git fetch
可能与此类似:

$ git fetch
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://my.username@bitbucket.site.com/scm/dev.repo.git
   fa09a74..03350ff  deployment-scripts        -> origin/deployment-scripts
输出的前三行包含有关获取数据的一些统计信息,接下来是从中获取数据的URL,然后您可以看到,自上次获取和本地引用分别更新以来,分支部署脚本已从
fa09a74
更改为
03350ff

你的
git推送
可能无法工作 我假设您在bitbucket中创建的分支
部署脚本
是从其他分支分支分支出来的,因此包含该分支的提交(至少在bitbucket服务器中不可能创建空分支)。在这种情况下,推送将失败,因为远程分支和本地分支都有更改,而另一个分支没有:

$ git push origin deployment-scripts
To https://my.username@bitbucket.site.com/scm/dev.repo.git
 ! [rejected]        deployment-scripts -> deployment-scripts (non-fast-forward)
error: failed to push some refs to 'https://my.username@bitbucket.site.com/scm/dev.repo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
在这种情况下,合并两个版本需要一个合并,这在推送过程中永远不会发生。无论如何,这不是您想要实现的,因为结果将是一个分支,其中包含来自本地
部署脚本
分支和作为在Bitbucket中创建
部署脚本
基础的分支的文件

你怎么能解决它 删除分支并通过按创建它 您只需删除Bitbucket中的分支
部署脚本
,并将其从本地存储库中推送,然后将在Bitbucket中创建分支(至少在允许您的用户创建分支的情况下):

用力推树枝 或者,您可以执行一个
git push--force
,它覆盖Bitbucket上的提交,从而强制推送工作

$ git push --force origin deployment-scripts
Counting objects: 3, done.
Writing objects: 100% (3/3), 250 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://my.username@bitbucket.site.com/scm/dev.repo.git
 + 524095e...87e6bd7 deployment-scripts -> deployment-scripts (forced update)
注意:正如我所说的,这将删除远程(Bitbucket)分支中的所有提交,而不是本地分支中的所有提交,并且只有在您确实确定这样做是正确的情况下才应该使用

$ git push --force origin deployment-scripts
Counting objects: 3, done.
Writing objects: 100% (3/3), 250 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://my.username@bitbucket.site.com/scm/dev.repo.git
 + 524095e...87e6bd7 deployment-scripts -> deployment-scripts (forced update)