首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git rebase澄清

Git rebase澄清
EN

Stack Overflow用户
提问于 2019-06-20 00:35:34
回答 1查看 54关注 0票数 0

我已经用git做了几个星期的实验了,虽然我对我现在能用它做的事情很满意,但关于rebase,我仍然有一些行为无法解释。

我发现这张图片似乎很好地理解了这个概念:

但我似乎真的不能让它以这种方式工作;以下是我所做的:

我在一个文件夹中创建了一个file.txt,git初始化了它,并提交了它。然后我添加了一行' one ',commit,新行'two‘commit,'three'...

然后我创建了一个新的分支'feature',添加了5个和6个。

现在如果我使用git checkout master,git rebase功能,事情就像上面的图片一样。

但后来我决定重置并做一个交互式的rebase:

git rebase -i特性:在nano中,我只有noop而不是我的提交列表。如果继续使用它,它仍然可以工作,但是为什么我不能决定在这种情况下重新编写/挑选/跳过提交?

现在,如果我重置并执行合并,我看不到任何差异:

--合并

代码语言:javascript
复制
(on master)
git merge feature

$ git log --oneline --all
ec382b3 (HEAD -> master, feature) five
d32ed5c four
1499f19 three
24f93bc two
544c929 one
c78eaba first push

$ git branch -a -v
  feature ec382b3 five
* master  ec382b3 five

- rebase

代码语言:javascript
复制
(on master)
git rebase feature

$ git log --oneline --all
ec382b3 (HEAD -> master, feature) five
d32ed5c four
1499f19 three
24f93bc two
544c929 one
c78eaba first push

$ git branch -a -v
  feature ec382b3 five
* master  ec382b3 five

最后但并非最不重要的一点是,如果我在master上重新设置特征的基址,然后

代码语言:javascript
复制
$git rebase -i HEAD~3

pick 1499f19 three
pick d32ed5c four
pick ec382b3 five

很好,我可以选择我的提交或删除它们来跳过它们,但是,记住每个提交有一行,假设我想跳过第四行/提交:

冲突:

代码语言:javascript
复制
one
two
three
<<<<<<< HEAD
=======
four
five
>>>>>>> ec382b3... five

首先,这怎么会是冲突呢?以前的提交有

代码语言:javascript
复制
one
two
three

所以没有冲突,head实际上什么都没有,但更重要的是,即使4和5是单独的提交,在我删除它的提交后,4仍然显示?我以为git保存了更改而不是整个文件...?

这是我不理解的几种行为,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-06-20 00:50:15

冲突是因为您在每次提交时都要在文件末尾编写内容。这使得git在你精挑细选(rebase的基础)时很棘手。尝试执行相同的操作,但在文件的中间( 20行)。绕过第11行),然后它就不会失败。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56672303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档