我们的工作流程就是这样。我们有一个名为dev的分支,我可以在源代码处找到它。当我们进行更改时,我们会创建一个分支:
git checkout -b FixForBug origin/dev
现在,我有了一个名为FixForBug的分支,它正在跟踪(我认为这是一个正确的词)origin/dev。因此,如果我做一个git拉取,它将从源代码/开发代码带来新的变化,这很好。现在,当我完成修复后,我推到一个远程分支,名为相同的东西。
首先,我从源代码/开发代码中提取所有更改,并重新建立基础:
git pull --rebase
然后我将更改推送到同名的远程分支:
git push origin FixForBug
现在,远程服务器上有一个分支,我可以创建一个拉取请求以批准该更改并合并回开发分支。我自己从来没有将任何东西推送到
源/dev
。我猜这是非常常见的工作流程。
我第一次执行
git推送
时,它工作正常并创建了远程分支。但是,如果我第二次推送(比如说在代码审查期间,有人指出了一个问题),我会得到以下错误:
错误:无法将某些引用推送到'https://github.mydomain.info/Product/product.git“
提示:更新被拒绝,因为当前分支的尖端位于远程分支的后面。在再次按下之前,集成远程更改(例如提示:“git pull…”)
有关详细信息,请参阅“git推送-帮助”中的“关于快进的说明”。
然而,如果我执行一个git状态,它会说我比原始/开发领先1个提交(这很有意义),如果我按照提示运行git pull,它会说一切都是最新的。我想这是因为我正在推动一个不同于上游分支的分支。我可以通过运行以下命令修复此问题:
git推送-f源FixForBug
在这种情况下,它会将更改推送到远程分支,说(强制更新)并且远程分支上的一切似乎都很好。
我的问题:
为什么在这种情况下需要f?通常,当你强迫别人做某事时,是因为你做了错事,或者至少违反了标准惯例。我这样做可以吗,还是会把远程分支中的某些东西搞砸,或者给最终必须将我的东西合并到dev中的人带来麻烦?
要确保本地分支修复程序不在远程分支修复程序之前,请在推送之前拉并合并更改。
git pull origin FixForBug
git push origin FixForBug
“当前分支的尖端在其远程对应分支的后面”*表示远程分支上发生了本地没有的更改。Git告诉您从远程导入新的更改,并将其与您的代码合并,然后将其推送到远程。
您可以使用此命令强制更改具有本地存储库()的服务器。远程回购代码将替换为本地回购代码。
git push -f origin master
使用-f
标记,您将使用本地存储库代码覆盖远程分支代码。
由于重新基准,实际上需要f。无论何时进行重基,都需要进行强制推送,因为远程分支无法快速转发到提交。您总是希望确保在推送之前进行拉送,但如果您不想为此而强制推送到master或dev,您可以创建一个新的分支来推送,然后合并或创建一个PR。
我试图将django项目保存到github,但在运行git push命令后出现错误
远程引用是对远程仓库的引用(指针),包括分支、标签等等。 你可以通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支。 远程跟踪分支是远程分支状态的引用。 它们是你不能移动的本地引用,当你做任何网络通信操作时,它们会自动移动。 远程跟踪分支像
远程引用是对远程仓库的引用(指针),包括分支、标签等等。 你可以通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支 {#2}。 远程跟踪分支 {#2}是远程分支状态的引用。 它们是你不能移动的本地引用,当你做任何网络通信操作时,它们会自动移
我在一个分支“测试”中工作,并进行了拉操作,现在我按照原点进行更新。 我签出分支“开发”,它位于源/开发后面,我复制了一些代码更改。现在我运行: 当我在分支“测试”中工作时,我得到了许多未跟踪的文件,而不是暂存的文件。现在我只想签回测试分支并推动我的更改。我的更改很少,所以我可以还原并重做它们。但如何切换分支,因为我遇到了错误: 错误:签出将覆盖以下未跟踪的工作树文件: 所有未标记和未跟踪的文件
我创建了一个新的repo,克隆了它,将文件添加到目录中,用添加、提交的更改添加了它们,当我尝试使用git push推送时 提示:更新被拒绝,因为远程包含您在本地没有的工作。这通常是由另一个存储库推送到同一个引用引起的。您可能希望在再次推送之前,首先合并远程更改(例如提示:“git pull”)。 这似乎没有意义,因为这是一个新的回购协议,只包含一个自述文件。
背景: 我们日常开发中,比如在dev分支开发之后,提交到远程分支,然后再合并到主分支master,在合并之前可能会希望看两个分支的差异,比如比较dev和master两个远程分支的差异。 通过gitlab或者github网站上可以比较,但是有的时候可能网络受限,访问不了网站, 请问下有什么方法可以直观地比较两个分支的差异?目前项目中用的是TortoiseGit代码版本管理工具。