在这里需要一些帮助:理想情况下我会创建一个新的回购,但我的团队中没有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
这样的事情,并有一个很好的新分支,脚本可以存在。
这是正确的路径吗?现在我该怎么做?
答案 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)分支中的所有提交,而不是本地分支中的提交,只有在您确定这是正确的事情时才应该使用。