相关疑难解决方法(0)

Git merge --squash和--no-commit之间的差异

正如标题所说,我并不清楚a git merge --squash和a 之间的区别git merge --no-commit.

据我所知的帮助页面git merge,这两个命令都会让我进入一个更新的工作树,在那里它仍然可以编辑然后进行最后的提交(或多次提交).

有人可以澄清这两个选项的差异吗?我什么时候使用一个而不是另一个?

git merge squash

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

Git rebase失去了历史,然后为什么会变质呢?

在过去的几天里,我一直在考虑与Git进行变革.反驳的大多数论据都说它清理历史并使其更加线性.如果您进行简单合并(例如),您将获得一个历史记录,显示历史记录何时分歧以及何时将其重新组合在一起.据我所知,rebasing删除了所有历史记录.问题是:为什么你不希望回购历史反映代码开发的所有方式,包括它在哪里以及如何分歧?

git version-control git-merge git-rebase

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

合并为master时,为什么要删除功能分支?

我见过的大多数git工作流建议branch在合并到master之后删除它.例如,这个gitflow建议如下:

# Incorporating a finished feature on develop 
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop
Run Code Online (Sandbox Code Playgroud)

我为什么要删除分支?我也好奇当以后发现一个由该功能引入的错误时该怎么做 - 我是否应该再创建一个具有相同名称的分支,修复那里的bug,合并到master并再次删除分支?

git git-flow

35
推荐指数
1
解决办法
6540
查看次数

Git:如何维护永久并行分支

我们有项目(PHP应用程序),但每个客户端的安装程序各不相同,有时很少,有时甚至更多.不过,源代码的很大一部分很常见.我们将特定安装作为并行分支管理到主分支,我们需要将更改从主分支传输到其他分支.在Git中解决了相同的情况:如何维护(大部分)并行分支只有一些区别?投票最多的解决方案是以这种方式在分支之间转移变更:

git pull
git checkout local
git rebase master
Run Code Online (Sandbox Code Playgroud)

如解决方案中所提到的,它在变基后创建非快进推送,我发现非常令人不快的并发症.我的问题是 - 为什么不这样做:

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

git merge branch rebase

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

合并后Git分支并提交历史记录

我正在开发一个项目(单独),对于我开发的每个功能,我创建了一个新的分支,处理这个功能,然后将它合并到master.所以通常我一次不会在两个不同的分支上工作,而在分支机构工作时从不接触主人.

当我合并一个分支时,我看到(使用gitxgitk)master分支的历史记录获得了我对合并分支所做的所有提交.我的意思是,如果我有类似的东西:

master a-b-c-d
              \z-x-y--
              |branch name
Run Code Online (Sandbox Code Playgroud)

合并后我得到:

a-b-c-d-z-x-y
            |branch name
Run Code Online (Sandbox Code Playgroud)

是的,我看到合并的分支名称突出显示(使用gitxgitk),但我期待的是显示提交完成的位置(到哪个分支),如:

master a-b-c-d--------M--
              \-z-x-y-/
              |branch name
Run Code Online (Sandbox Code Playgroud)

所以我期待看到提交"M"代表我已经完成的合并,而不是看起来我已经完成了对新分支所做的所有提交.

我的期望是否正确?或者这是正常git行为?

git merge branch

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

git rebase和merge --no-ff之间的区别是什么

两种方法似乎都有相同的目的,以保持清晰的历史:

那么,如果我在功能分支上进行了--no-ff重新定位,那么在合并回主分支时是否还需要?

更新:

在我看来,在这个链接中基本上是图表(图3.28)之间存在混淆,快速前进和非快速合并之间的混乱http://git-scm.com/book/en/Git-Branching-Rebasing 显示正常合并结果与此链接的顶部答案中的merge --no-ff相同为什么默认情况下git快进合并?

git git-rebase

19
推荐指数
2
解决办法
8009
查看次数

Git合并策略:空格使默认显示没有冲突并带来意想不到的结果

经过多次试验,我得到了这个简单的测试案例场景:

a --> b --> c --   (master)
 \              \
  --> d --> b' --> e   (branch)
Run Code Online (Sandbox Code Playgroud)

哪里:

  • b' 是一个樱桃挑选 b
  • e是一个合并来自master.

b'之后完成cc修改了相同的文件b(d可能无关紧要).

e 很容易看起来非常意外.

假设所有'他们正在处理相同的文件" foobar.txt".这是文件在每次提交中的外观:

// ----------- a
foo

delme

bar

// ----------- b
foo

delme

new

bar

// ----------- c
foo

new

bar

// ----------- b'
foo

delme

new

bar

// ------------ e
foo

new

new

bar
Run Code Online (Sandbox Code Playgroud)

现在,这是我刚才的简短测试,具有这种确切的设置.

如果你删除那里的所有空格 …

git merge git-merge

15
推荐指数
1
解决办法
4684
查看次数

合并分支时使用pull和no-ff时快进

我的工作流程中有许多短命分支,我希望它们能够分开.所以,我打算用git config --add merge.ff false.但是,当我正在进行拉(我理解为fetch + merge)时 - 然后我想要一个快进行为,以避免不必要的额外提交.

这是一件好事吗?这可能吗?

git

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

Git提交样式:一次更改所有文件或一次更改一个文件?

我通过一次提交许多文件来保存我的工作.我想知道为每个文件提交是否会更好,但这看起来好多了.

我对现在的方式没有任何问题,但我打算将我的代码放在GitHub上,我希望它易于理解.

我想知道你们其他人使用git是做什么的.如果你能为我拼出来的话.我是Git的新手,我一直在Windows中使用TortoiseGit和gitk.

git version-control git-commit

11
推荐指数
2
解决办法
2297
查看次数

为什么Git不将分支名称存储为提交的一部分?

请注意:我不是要重新启动Mercurial或Git更好的论点,我只是有一个技术问题,我作为Mercurial用户,不明白.我也不确定SO是否是提出这样一个问题的正确位置,但它编程相关.

关于两个版本控制系统Git和Mercurial如何从用户的角度来看彼此不同(例如Mercurial和Git之间有什么区别?http://felipec.wordpress.com/2011/01)/16/mercurial-vs-git-its-all-in-the-branches /),主要区别在于分支机构的处理.我已经阅读了很多这些讨论,但我一直在问自己这个问题:

为什么Git不将分支名称存储为提交的一部分?

我真的没有理由不这样做; 这意味着数据不能简单地消失,因为没有参考(标记,分支,等等).

我认为在提交中存储分支是Mercurial的一大优点,因为这会使丢失数据变得更加困难.

Git人群的主要观点是支持Git的分支模型,你可以简单地删除分支,并不会阻止Git在每次提交时存储分支的名称:如果删除了分支的提交,那么对该分支的引用.它也不会干扰"廉价分支"的论点:分支管理起来不会更昂贵.我不认为所需的额外存储应该是值得关注的:每次提交只需几个字节.

git mercurial branch git-branch

11
推荐指数
2
解决办法
1115
查看次数