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