标签: rebase

我可以默认在git中关闭快进吗?

我真的不能没有想过的时候,我会用git merge,而不是git rebase希望有一个承诺现身.有没有办法配置git默认快速关闭?事实上,有一个--ff选项似乎意味着有一种方法,但我似乎无法在文档中找到它.

git merge branch rebase fast-forward

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

在Git中提交根提交之前插入一个提交?

我之前已经问过如何在git存储库中压缩前两个提交.

虽然这些解决方案非常有趣,而且并不像git中的其他一些东西那样令人惊讶,但如果你需要在项目开发过程中多次重复这个过程,它们仍然是一个众所周知的伤害.

所以,我宁愿只经历一次痛苦,然后能够永远使用标准的交互式rebase.

那么,我想做的是拥有一个空的初始提交,仅仅是为了成为第一个提交.没有代码,没有任何东西.只是占用空间,因此它可以作为rebase的基础.

我的问题是,拥有一个现有的存储库,如何在第一个存储库之前插入一个新的空提交,并将其他所有人转移?

git version-control rebase git-rebase

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

Hg:如何像git的rebase那样做一个rebase

在Git我可以这样做:

1. Start working on new feature:
$ git co -b newfeature-123  # (a local feature development branch)
do a few commits (M, N, O)

master A---B---C
                \
newfeature-123   M---N---O

2. Pull new changes from upstream master:
$ git pull
(master updated with ff-commits)

master A---B---C---D---E---F
                \
newfeature-123   M---N---O

3. Rebase off master so that my new feature 
can be developed against the latest upstream changes:
(from newfeature-123)
$ git rebase master

master A---B---C---D---E---F
                            \
newfeature-123               M---N---O


我想知道如何在Mercurial中做同样的事情,我已经在网上搜索了答案,但我能找到的最好的是:git rebase …

git mercurial dvcs rebase

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

结合Git存储库的前两个提交?

假设您有一个包含三个提交A,BC的历史记录:

A-B-C
Run Code Online (Sandbox Code Playgroud)

我想将两个提交AB组合到一个提交AB:

AB-C
Run Code Online (Sandbox Code Playgroud)

我试过了

git rebase -i A
Run Code Online (Sandbox Code Playgroud)

这打开了我的编辑器,其中包含以下内容:

pick e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)

我改成这个

squash e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)

然后Git 1.6.0.4说:

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

有办法还是不可能?

git rebase git-rebase git-rewrite-history

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

重新绑定Git合并提交

采取以下案例:

我在主题分支中有一些工作,现在我已准备好合并回主人:

* eb3b733 3     [master] [origin/master]
| * b62cae6 2   [topic]
|/  
* 38abeae 1
Run Code Online (Sandbox Code Playgroud)

我从master执行合并,解决冲突,现在我有:

*   8101fe3 Merge branch 'topic'  [master]
|\  
| * b62cae6 2                     [topic]
* | eb3b733 3                     [origin/master]
|/  
* 38abeae 1
Run Code Online (Sandbox Code Playgroud)

现在,合并花了我一些时间,所以我再做一次提取并注意到远程主分支有新的变化:

*   8101fe3 Merge branch 'topic'  [master]
|\  
| * b62cae6 2                     [topic]
| | * e7affba 4                   [origin/master]
| |/  
|/|   
* | eb3b733 3
|/  
* 38abeae 1
Run Code Online (Sandbox Code Playgroud)

如果我从master中尝试'git rebase origin/master',我将被迫再次解决所有冲突,并且我也失去了合并提交:

* d4de423 2       [master]
* e7affba 4       [origin/master]
* …
Run Code Online (Sandbox Code Playgroud)

git merge rebase git-rebase git-rewrite-history

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

git rebase,跟踪'本地'和'远程'

在进行git rebase时,我常常难以解决在解决冲突时"本地"和"远程"发生的事情.我有时会产生这样的印象:他们将一方提交交换到另一方提交.

这可能(肯定)因为我还没有正确理解.

变基础时,谁是'本地',谁是'偏远'?

(我使用P4Merge解决冲突)

git conflict rebase

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

git rebase致命:需要单一版本

我有一个公共存储库的分支,我正在尝试使用原始存储库中的当前提交更新我的分支:

$ git fetch <remote>
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 20 (delta 12), reused 0 (delta 0)
Unpacking objects: 100% (20/20), done.
From git://github.com/path_to/repo
  9b70165..22127d0  master     -> $/master
$ git rebase <remote>
fatal: Needed a single revision
invalid upstream <remote>
Run Code Online (Sandbox Code Playgroud)

<remote>取代了我的远程名称,实际上并不是我的远程名称.关于这个错误的文档似乎有点松散.

git github rebase

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

如何在合并的更改之上重新定义当前分支的更改?

好的.如果我在一个分支上(比方说working),并且我希望合并来自另一个分支的更改(比方说master),那么我git-merge masterworking分支上运行命令,并且更改将合并而不会重新定义历史记录.如果我运行git-rebase master,那么更改master将被重新放置在我的working分支的顶部.但是,如果我想合并更改master但是将我的更改working重新组合在一起,该怎么办?我怎么做?可以吗?

我可以git-rebase working在我的master分支上运行以将我的更改放在master分支的顶部,但我希望能够在我的working分支中执行此操作,而我不知道如何.我能想到的最接近的是创建一个新的分支master,然后working在其上更改rebase 的变化,但之后我会有一个新的分支而不是改变working分支.

git merge rebase git-rebase

131
推荐指数
3
解决办法
15万
查看次数

Git:如何重新定义特定的提交?

我想重新定义一个特定的提交,而不是另一个分支的HEAD:

A --- B --- C          master
 \
  \-- D                topic
Run Code Online (Sandbox Code Playgroud)

A --- B --- C          master
       \
        \-- D          topic
Run Code Online (Sandbox Code Playgroud)

代替

A --- B --- C          master
             \
              \-- D    topic
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

git version-control rebase git-rebase

131
推荐指数
8
解决办法
16万
查看次数

在git中解决'两者都添加'的合并冲突?

我在git中变基础,我得到的一个冲突是"两个都添加" - 也就是说,在我的分支中已经独立添加了完全相同的文件名,并且在分支中我正在重新定位. git status告诉我:

# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both added:         src/MyFile.cs
Run Code Online (Sandbox Code Playgroud)

我的问题是,我该如何解决这个问题?我必须使用合并工具还是只能从命令行执行此操作?如果我git rm src/MyFile.cs,git如何知道我要删除哪个文件版本以及我想保留哪个文件?

git merge rebase

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