相关疑难解决方法(0)

功能分支rebase后Git推送被拒绝

好吧,我认为这是一个简单的git场景,我错过了什么?

我有一个master分支和一个feature分支.我做了一些工作master,一些工作,feature然后再做一些工作master.我最终得到这样的东西(词典顺序暗示了提交的顺序):

A--B--C------F--G  (master)
       \    
        D--E  (feature)
Run Code Online (Sandbox Code Playgroud)

我没有问题要git push origin master保持远程master更新,也没有git push origin feature(当打开时feature)为我的feature工作维护远程备份.到目前为止,我们很好.

但现在我想在主人featureF--G提交之上重新定义,所以我git checkout featuregit rebase master.还好.现在我们有:

A--B--C------F--G  (master)
                 \
                  D'--E'  (feature)
Run Code Online (Sandbox Code Playgroud)

问题:当我想要备份新的rebased feature分支时git push origin feature,推送被拒绝,因为树由于变基而发生了变化.这只能通过解决git push --force origin feature.

我讨厌使用--force而不确定我是否需要它.那么,我需要它吗?重新定位是否必然意味着下一个push应该是--force完美的?

这个功能分支不与任何其他开发者共享,所以我事实上 …

git

848
推荐指数
10
解决办法
19万
查看次数

git push --force-with-lease vs. --force

我试图了解它们之间的区别

git push -f
Run Code Online (Sandbox Code Playgroud)

git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)

我的猜测是,如果遥控器没有本地分支没有的提交,后者只会推送到遥控

如果有更好的方式来表达问题,lmk,但希望它很清楚.

git git-push

87
推荐指数
4
解决办法
2万
查看次数

当它说当前分支是最新的(即使不是最新的)时,如何重新计算呢?

我重新设置了分支的基础,该分支的效果是在我自己的基础上添加了一些提交。然后意识到我忘记了压缩一些提交,所以很难重新设置并压缩。现在,我需要把那些提交带回来。但是重新调配告诉我当前分支是最新的,即使不是。有没有办法解决这个问题?

编辑:

有两个分支:a和b。两者都是从master分支出来的。两者都是最新的大师。分支a有一些更改。我也希望分支b也有这些更改。我将分支a重新定位到b。最新的提交来自分支a。我的意图是在提交之前压扁这三个提交。我在最近一次提交之前硬重置为。然后我挤了。现在,我想以一种在将分支b合并到master时不会引起头痛的方式找回最新提交。

我已经尝试过refloggit reset --hard HEAD@{n}但存在相同的问题:当前分支是最新的。

git rebase

5
推荐指数
2
解决办法
3110
查看次数

有没有办法从我的分支中提取主更改?

我正在从事一个 3 分支项目。

我在 branch1 上,并且有 master 分支。

当我需要从 master 拉取和合并某些东西时:

git checkout master
git pull origin master
git checkout branch1
git merge master
Run Code Online (Sandbox Code Playgroud)

有没有办法从我的分支中提取主更改,这样我就不需要合并了?

就像是:

git pull origin master
Run Code Online (Sandbox Code Playgroud)

但是从 branch1 没有切换到 master 分支。

编辑

恢复:

我有 3 个分支:每次 master 有新东西时,我都不想切换到分支 master。我想要的只是将 master 新功能拉入我的分支,而无需转到 master 分支。

git

4
推荐指数
1
解决办法
179
查看次数

标签 统计

git ×4

git-push ×1

rebase ×1