假设我有两个分支A和B
(A)--------(A+B)--------------(A+B+R)
\ / merge \ revert /
\ / \ /
(B)----(B+) (R)----
Run Code Online (Sandbox Code Playgroud)
首先,我将分支合并B到A,然后我使用 GitHub 的恢复功能恢复了合并请求。
现在,当我在分支上修复一些代码B并需要A再次合并时,几乎所有更改(我修复的新更改除外)都将被忽略。我怎样才能再次获得更改?
我创建了一个分支来开发新功能。由于这个新功能完全是作为一个新项目开发的,唯一可能的冲突来源是解决方案文件。
随着功能的开发,主分支更新了几次。当我完成开发和测试时,我做了:
git checkout master
git fetch
git pull
git checkout myFeature
git rebase master
Run Code Online (Sandbox Code Playgroud)
变基(和所有其他命令)运行良好,没有报告任何冲突/错误/问题。我的下一步是,git status结果是:
在分支 myFeature
你的分支和 'origin/myFeature' 有分歧,分别有 7 和 5 个不同的提交。(使用“git pull”将远程分支合并到你的分支中)
当我git pull打开合并并查看历史记录时,我的提交被重复了。在我看来,这种重复是不应该发生的。我期待我的提交应该在最后一次(当前)提交后重新应用。
我做错了什么还是我的期望是错误的?
我有一个本地项目(我是唯一一个从事该项目的人)。我开始使用本地 Git 存储库,但希望使用 GitHub 在云中拥有备份副本,以防止我的 PC 发生故障和/或让其他人处理代码。
我一直在“主”分支上工作,但后来决定我需要一个“开发”分支,因此“主”是一个安全的最新版本(“开发”上开发的新功能除外)。
我曾尝试单独为 main 创建存储库,但遇到了很多错误;“git Push origin master”返回时出现错误 - 通常(或最经常)警告我我的提示领先于“master”上的提示。然而,可能运气好(或盲目遵循说明)让“develop”分支存在于远程存储库上,并且能够将最新版本的“develop”推送到 GitHub。
但是,我无法让主人以同样的方式工作。
如何强制覆盖远程仓库?我希望它显示的是远程完整的提交历史记录,并不断更新两个分支。
万一重要的话,GitHub 强迫我去 2FA...我必须生成一个 SSH 密钥并将其用作我的密码,但它工作得很好。
所以我正在寻找一种 git 方法,它的伪代码(我知道这是错误的)看起来像这样:
git push origin master --override
Run Code Online (Sandbox Code Playgroud)
如何将 master 分支的远程存储库清零,然后重新启动它以便调出 master 分支中的所有提交和文件?
我已经开始使用git push --force-with-lease而不是--force在大多数情况下用于额外的分支保护:
我什至可以尝试将此选项设置为默认选项,如下所述:
但使用时的主要烦恼--force-with-lease是输入该标志的尴尬措辞和冗长语法。
Git--force和-f标志更短并且更容易键入,但不提供额外的安全性。
是否有缩写形式--force-with-lease,例如--fwl?
如果默认情况下不存在这样的标志,我如何在自己的计算机上创建这样的标志或别名?
假设我有 2 个分支,develop并且p3(生产 3)。
无论 上的任何提交历史如何p3,我都想让p3 的整个提交历史现在与 develop 的提交历史完全匹配。
p3试图与 保持同步develop,但人们不断地将测试分支合并到.p3develop
我如何制作p3match的整个提交历史,develop以便我可以调用以下内容?
git push --force-with-lease origin p3
Run Code Online (Sandbox Code Playgroud)