标签: rebase

如果--abort不起作用,如何中止交互式rebase?

我通过一个互动的rebase让自己陷入困境,现在我想放弃它.(即回到我被放入交互式rebase模式之前的点,在我的情况下,通过git pull --rebase.)这样做的方法似乎是通过git rebase --abort,但这不起作用:

$ git rebase --abort
error: Ref refs/heads/master is at 55b388c141b1485b1acd9e050dbeb0eb90ef2ee7 but
expected b918ac16a33881ce00799bea63d9c23bf7022d67
fatal: Cannot lock the ref 'refs/heads/master'.
Could not move back to refs/heads/master
Run Code Online (Sandbox Code Playgroud)

如何退出交互式rebase模式,并清除所有对它的引用?(git reset --hard成功,但不会让我退出rebase模式.)

git rebase exit abort quit

127
推荐指数
1
解决办法
16万
查看次数

在Git中重新定位远程分支

我正在使用一个中间Git存储库镜像远程SVN存储库,人们可以从中进行克隆和处理.中间存储库的主分支从上游SVN每晚重新定位,我们正在开发功能分支.例如:

remote:
  master

local:
  master
  feature
Run Code Online (Sandbox Code Playgroud)

我可以成功地将我的功能分支推回到远程,并最终达到我的期望:

remote:
  master
  feature

local:
  master
  feature
Run Code Online (Sandbox Code Playgroud)

然后我重新设置分支以跟踪远程:

remote:
  master
  feature

local:
  master
  feature -> origin/feature
Run Code Online (Sandbox Code Playgroud)

一切都很好.我想从这里做的是将功能分支重新绑定到远程主分支,但我想从我的本地机器上执行此操作.我希望能够做到:

git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Run Code Online (Sandbox Code Playgroud)

使远程主控分支与远程主服务器保持同步.但是,这种方法导致Git抱怨:

To <remote>
 ! [rejected]        feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' …
Run Code Online (Sandbox Code Playgroud)

git version-control branch rebase feature-branch

127
推荐指数
3
解决办法
12万
查看次数

在Git上更改旧的提交消息

我试图为解释编辑旧提交信息在这里.

问题是,现在,当我试图运行rebase -i HEAD~5时说interactive rebase already started.

所以然后我尝试:git rebase --continue但是得到了这个错误:

error: Ref refs/heads/master is at 7c1645b447a8ea86ee143dd08400710c419b945b but expected c7577b53d05c91026b9906b6d29c1cf44117d6ba
fatal: Cannot lock the ref 'refs/heads/master'.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

git repository rebase git-rebase

126
推荐指数
6
解决办法
10万
查看次数

在rebase之后不能推进分支

我们使用git并拥有一个主分支和开发人员分支.我需要添加一个新功能,然后将提交重新设置为master,然后将master推送到CI服务器.

问题是,如果我在rebase期间遇到冲突,我不能在rebase完成后推送到我的远程开发人员分支(在Github上),直到我拉出我的远程分支.这会导致重复提交.没有冲突时,按预期工作.

问题:在rebase和冲突解决之后,如何在不创建重复提交的情况下同步我的本地和远程开发人员分支

建立:

// master branch is the main branch
git checkout master
git checkout -b myNewFeature

// I will work on this at work and at home
git push origin myNewFeature

// work work work on myNewFeature
// master branch has been updated and will conflict with myNewFeature
git pull --rebase origin master

// we have conflicts
// solve conflict
git rebase --continue

//repeat until rebase is complete
git push origin myNewFeature

//ERROR
error: failed to push some …
Run Code Online (Sandbox Code Playgroud)

git merge rebase git-merge git-rebase

120
推荐指数
3
解决办法
9万
查看次数

Git rebase:冲突不断阻碍进展

我有一个git分支(称为v4),它是昨天由master制作的.掌握了一些变化,我想进入v4.因此,在第4版中,我尝试从master执行rebase,并且一个文件不断搞砸:一行文本文件,其中包含版本号.此文件是app/views/common/version.txt,在变基之前包含此文本:

v1.4-alpha-02
Run Code Online (Sandbox Code Playgroud)

这是我正在做的事情:

> git rebase master
First, rewinding head to replay your work on top of it...
Applying: new version, new branch
error: patch failed: app/views/common/version.txt:1
error: app/views/common/version.txt: patch does not apply
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging app/views/common/version.txt
CONFLICT (content): Merge conflict in app/views/common/version.txt
Failed to merge in the changes.
Patch failed at 0001 new version, new branch

When you have resolved this problem run …
Run Code Online (Sandbox Code Playgroud)

git rebase

118
推荐指数
4
解决办法
9万
查看次数

运行'git gui'时如何跳过"松散对象"弹出窗口

当我运行'git gui'时,我会得到一个弹出窗口

This repository currently has approximately 1500 loose objects.

然后建议压缩数据库.我以前做过这个,它将松散的对象减少到大约250,但这并不会抑制弹出窗口.再次压缩不会改变松散物体的数量.

我们当前的工作流程需要大量使用'rebase',因为我们正在从Perforce过渡,而Perforce仍然是规范的SCM.一旦Git是规范的SCM,我们将定期进行合并,并且应该大大减轻松散的对象问题.

与此同时,我真的想让这个"有用"的弹出窗口消失.

git garbage-collection rebase git-gui git-gc

115
推荐指数
3
解决办法
2万
查看次数

执行rebase后,Git提交在同一分支中重复

我理解Pro Git中关于风险的方案dev.作者基本上告诉你如何避免重复提交:

不要将已推送到公共存储库的提交重新绑定.

我将告诉你我的具体情况,因为我认为它不完全适合Pro Git场景,我仍然最终得到重复的提交.

假设我与当地同行有两个远程分支机构:

origin/master    origin/dev
|                |
master           dev
Run Code Online (Sandbox Code Playgroud)

所有四个分支包含相同的提交,我将开始开发origin/dev:

origin/master : C1 C2 C3 C4
master        : C1 C2 C3 C4

origin/dev    : C1 C2 C3 C4
dev           : C1 C2 C3 C4
Run Code Online (Sandbox Code Playgroud)

经过几次提交后,我将更改推送到master:

origin/master : C1 C2 C3 C4
master        : C1 C2 C3 C4

origin/dev    : C1 C2 C3 C4 C5 C6  # (2) git push
dev           : C1 C2 C3 C4 C5 C6  # (1) git …
Run Code Online (Sandbox Code Playgroud)

git branch rebase

108
推荐指数
3
解决办法
5万
查看次数

有没有办法以非交互方式压缩一些提交?

我正在尝试压缩一系列提交 - HEAD到HEAD~3.有没有快速的方法来做到这一点,还是我需要使用rebase --interactive?

git interactive rebase squash

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

重新定位以及通过rebasing推动提交意味着什么

人们常说,你不应该重新提出你已经推过的提交.这可能意味着什么?

git rebase

105
推荐指数
4
解决办法
7万
查看次数

重新启动单个Git提交

有没有办法将一个提交从一个分支重新绑定到另一个分支?

我有这个分支结构:

-- -- -- -- -- (Master)
            \
              -- -- -- -- -- XX (Feature-branch)
Run Code Online (Sandbox Code Playgroud)

我想要做的就是将最后一次提交改为Feature-branchmaster并回滚Feature-branch一次提交.

-- -- -- -- -- XX (Master)
            \
              -- -- -- -- -- (Feature-branch)
Run Code Online (Sandbox Code Playgroud)

我怎么做?

git rebase

103
推荐指数
3
解决办法
6万
查看次数