标签: rebase

Git互动rebase没有提交选择

我是主人,我做到了 rebase -i <my_branch>

明白啦:

noop

# Rebase c947bec..7e259d3 onto c947bec
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails …
Run Code Online (Sandbox Code Playgroud)

git rebase

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

Git rebase - 即使所有合并冲突都已解决,也会继续抱怨

我正面临一个我不确定如何解决的问题.

我从我的分支机构对主人做了一次反对:

git rebase master
Run Code Online (Sandbox Code Playgroud)

并得到以下错误

 First, rewinding head to replay your work on top of it...
 Applying: checkstyled.
 Using index info to reconstruct a base tree...
 Falling back to patching base and 3-way merge...
 Auto-merging AssetsLoader.java
 CONFLICT (content): Merge conflict in AssetsLoader.java
 Failed to merge in the changes.
 Patch failed at 0001 checkstyled.
Run Code Online (Sandbox Code Playgroud)

所以我去了我最喜欢的编辑器,修复了1行冲突,保存了文件并执行了git状态并获得了以下输出:

 # Not currently on any branch.
 # Changes to be committed:
 #   (use "git reset HEAD <file>..." to unstage)
 #
 #  modified:   PassengerContactHandler.java
 #
 # …
Run Code Online (Sandbox Code Playgroud)

git rebase

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

重新分配包括其所有孩子在内的分支

我有以下Git存储库拓扑:

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

通过重新feature分支我希望改变整个子树(包括子分支):

$ git rebase feature master

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

但是,这是实际结果:

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

我知道我可以通过执行以下方法手动修复它:

$ git rebase --onto feature C feature-a
$ git rebase --onto feature C feature-b
Run Code Online (Sandbox Code Playgroud)

但有没有办法自动重组分支,包括其所有子/后代?

git version-control branch rebase git-rebase

88
推荐指数
3
解决办法
1万
查看次数

在有人推送rebase或重置到已发布的分支后,如何恢复/重新同步?

我们都听过一个人应该重订,从未发表的作品,它的危险,等等.但是,我还没有看到张贴如何处理的情况下衍合情况的任何食谱出版.

现在,请注意,只有存储库仅由已知(并且最好是很小)的人群克隆,这才真正可行,这样无论谁推送rebase或重置,都可以通知其他人他们下次需要注意的时候取(!).

如果你没有本地提交foo并且它被重新定位,我看到的一个明显的解决方案将起作用:

git fetch
git checkout foo
git reset --hard origin/foo
Run Code Online (Sandbox Code Playgroud)

foo根据远程存储库,这将简单地抛弃本地状态以支持其历史记录.

但是,如果一个人在该分支机构进行了大量的本地更改,那么如何处理这种情况呢?

git rebase git-rebase git-reset

84
推荐指数
3
解决办法
1万
查看次数

在之前的git合并之后git rebase

我有以下情况:

  • clone从主存储库(X)创建了一个(Y),因为有许多人在Y上工作,我们没有做任何事情rebase,只有merges.当我们想要将(push)Y 传递给X时,我们想做一rebase件事,以便让事情变得干净整洁

问题在于,当rebase我们被要求进行我们在之前merge步骤中已经完成的所有合并时.有没有解决方案,除了意味着重新进行合并的那个?

我预计它会非常简单,因为我们已经解决了冲突的合并.

git merge rebase git-rebase

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

Git推被拒绝"非快进"

我是一个相当新的人,git目前正在使用它来管理团队环境中的代码.我有一些变基础问题,我用它来修复它们

git checkout --ours filename.txt
git add filename.txt
git rebase --continue
Run Code Online (Sandbox Code Playgroud)

现在我想推送我的更改,然后运行以下命令

$ git push origin feature/my_feature_branch
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

To ssh://git@coderepo.com:7999/repo/myproject.git
 ! [rejected]        feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to push some refs to 'ssh://git@coderepo.com:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能摆脱这个错误?

PS:我--force尽量避免使用该选项.

git push rebase

71
推荐指数
7
解决办法
19万
查看次数

git rebase和git push:非快进,为什么要使用?

我有一个应该可供其他贡献者使用的分支,并且应该始终与主人保持同步.

不幸的是,每当我做'git rebase'然后尝试推动时,它会导致'非快速前进'信息和推动堕胎.推动这里的唯一方法是使用--force.这是否意味着如果我的分支公开并且其他人正在研究它,我应该使用'git merge'而不是rebased?

git merge rebase

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

如何将两个提交合并为一个提交?

我有一个分支'firstproject'有2个提交.我想摆脱这些提交并使它们显示为单个提交.

该命令git merge --squash听起来很有希望,但是当我运行git merge --squash终端时,只会显示该命令的选项.什么是正确的命令?

Commit 1:
Added 'homepage.html'
Added 'contacts.html'

Commit 2:
Added 'homepage.php'
Added 'homepage.php'
Deleted 'homepage.html'
Deleted 'contacts.html'
Run Code Online (Sandbox Code Playgroud)

git merge branch git-svn rebase

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

Git:"不能'压扁'没有先前的提交"错误,而rebase

我在待办事项中有以下内容git rebase -i HEAD~2:

pick 56bcce7 Closes #2774
pick e43ceba Lint.py: Replace deprecated link

# Rebase 684f917..e43ceba onto 684f917 (2 command(s))
#
...
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试压缩第一个(56bcce7)并通过在第一个之前添加"s"来选择第二个时,我得到以下错误:

Cannot 'squash' without a previous commit
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下它的含义,我该怎么做?

我想压缩第一个commit(56bcce7)和"select and reword"第二个(e43ceba)提交

git rebase

67
推荐指数
5
解决办法
6万
查看次数

'git remote add upstream'有助于实现什么?

我正在阅读:https: //wiki.diasporafoundation.org/Git_workflow#Rebase_your_development_branch_on_the_latest_upstream

这是一个摘录:

您的存储库是最新的

为了从开发中继获取最新更新,请执行一次性设置,通过输入以下内容将主GitHub存储库建立为远程:

$ git remote add upstream git://github.com/diaspora/diaspora.git
Run Code Online (Sandbox Code Playgroud)

在最新上游重新启动您的开发部门

要使您的开发分支保持最新,请在上游主服务器的当前状态之上重新定义您的更改.看看什么是git-rebase?以下部分了解有关变基的更多信息.

如果您已经设置了上面详细说明的上游分支,以及一个名为100-retweet-bugfix的开发分支,那么您将更新上游,更新本地主服务器,并从中重新分配您的分支,如下所示:

$ git fetch upstream

$ git checkout master

$ git rebase upstream/master

$ git checkout 100-retweet-bugfix
Run Code Online (Sandbox Code Playgroud)

[确保在分支中根据需要提交所有内容]

$ git rebase master
Run Code Online (Sandbox Code Playgroud)

为什么在这种情况下需要添加"远程上游"?我不是刚才做的:

$ git checkout master

$ git pull origin master

$ git checkout 100-retweet-bugfix
Run Code Online (Sandbox Code Playgroud)

[确保在分支中根据需要提交所有内容]

$ git rebase master
Run Code Online (Sandbox Code Playgroud)

git github rebase

61
推荐指数
3
解决办法
8万
查看次数

标签 统计

git ×10

rebase ×10

git-rebase ×3

merge ×3

branch ×2

git-reset ×1

git-svn ×1

github ×1

push ×1

version-control ×1