如何将本地存储库添加到新的远程分支

时间:2017-07-13 21:19:01

标签: git bitbucket git-remote

在这里需要一些帮助:理想情况下我会创建一个新的回购,但我的团队中没有Bitbucket权限,而且这位高级工程师正在度假再过几个星期。

我在我的仓库中有一个带有遗留代码的主分支 - 我不想改变它,太多的关键系统从那里开始。

我在网络上找到了部署服务器,其中有许多有用的脚本,我想在版本控制下使用它。

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

我已经初始化了一个本地git仓库。

我添加了远程原点:

git remote add origin https://my.username@bitbucket.site.com/scm/dev.repo.git

我已经通过bitbucket的网站添加了一个分支,我将致电deployment-scripts

我在本地创建了分支deployment-scripts。 (但是我在主人那里检查了。)

我害怕做git fetch并覆盖关键脚本和所有内容。 (或者提取不是吗?)我&#39 ;我希望做一些像git push origin deployment-scripts这样的事情,并有一个很好的新分支,脚本可以存在。

这是正确的路径吗?现在我该怎么做?

1 个答案:

答案 0 :(得分:0)

git fetch不会覆盖任何内容

git fetch只是将本地存储库中的引用更新(并创建)到远程存储库。在您的情况下,这将创建一个名为origin/deployment-scripts的引用。初始提取将如下所示:

$ git fetch
From https://my.username@bitbucket.site.com/scm/dev.repo.git
 * [new branch]      deployment-scripts        -> origin/deployment-scripts

意味着从给定的URL获取信息,其中创建了一个名为deployment-scripts的新分支,在本地存储库中创建了一个名为origin/deployment-scripts的引用。

未来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更改为{{1}因为你的上次提取和本地引用分别更新了。

您的03350ff可能无效

我假设您在bitbucket中创建的分支git push从其他分支分支出来,因此包含该分支的提交(至少在Bitbucket服务器中,不可能创建一个空分支)。在这种情况下,由于远程分支和本地分支都具有另一个没有的更改,因此推送将失败:

deployment-scripts

在这种情况下,需要合并将两个版本合并在一起,这在推送时永远不会发生。无论如何,这不是你想要实现的,因为结果将是一个分支,其中包含来自本地$ 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中创建deployment-scripts的基础。

你如何解决它

删除分支并按

创建分支

您可以删除Bitbucket中的分支deployment-scripts并将其从本地存储库中推出,然后将在Bitbucket中创建分支(至少如果允许您的用户创建分支):

deployment-scripts

强制推动分支

或者你可以做一个$ git push 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 * [new branch] deployment-scripts -> deployment-scripts ,它会覆盖Bitbucket上的提交,从而迫使你的推动工作。

git push --force

注意:正如我所说,这将删除远程(Bitbucket)分支中的所有提交,而不是本地分支中的提交,只有在您确定这是正确的事情时才应该使用。