相关疑难解决方法(0)

如何在不需要强制推送的情况下使用git rebase?

为了实现git nirvana,我花了一天时间学习如何在我目前合并的情况下利用rebase.

当我通过我认为是git 101流程(我在下面拼写出来)时,我必须push --force将我的更改推回原点.

我不是唯一的一个-我知道这是覆盖的地面(见图1,2,3,4,5),我理解的技术原因,为什么力是必要的.我的问题是这样的---有歌声底垫的赞美很多(多)发表的博客以及它如何改变他们的生活(见1,2,3,4,列出了几个),但他们没有提到push --force是的一部分他们的流量.然而,几乎现有的stackoverflow问题的每一个答案都说"是的,如果你要改变,你必须使用push --force".

鉴于rebase倡导者的数量和宗教信仰,我不得不相信使用'push -force'并不是rebase流的固有部分,如果经常不得不强迫他们推动,他们就会做错事.

push --force是一件坏事.

所以这是我的流程. 在没有武力的情况下,我能以何种方式获得相同的结果?

简单的例子

两个分支:

  • v1.0 - 发布分支,仅包含补丁
  • 大师 - 下一个主要版本的一切.

我有一些补丁提交和一些提交下一个版本.

premerge

我想将这些补丁合并到我的主人中,以便他们在下一个版本中不会丢失.启蒙前我简单地说:

git checkout master
git merge v1.0
Run Code Online (Sandbox Code Playgroud)

但现在我正在努力

git checkout master
git rebase v1.0
Run Code Online (Sandbox Code Playgroud)

所以现在我在这里:

在此输入图像描述

的时间:

git push
Run Code Online (Sandbox Code Playgroud)

没有骰子.

git git-rebase

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

如何维护(大多数)并行分支只有一些差异

场景:我正在尝试在git下获取我的unix点文件.我必须在(至少)cygwin环境和一些标准的Linux发行版(ubuntu和opensuse)之间工作,并且我有特定于cygwin的文件/代码行.由于我不想检查无用的文件或者不得不处理我的dotfiles中的大量案例,我正在为我的每个环境创建分支.但是我做的大部分编辑对所有环境都是通用的,所以几乎每次我提交时我都需要将该更改传播到我的所有分支.

所以基本上我有几个几乎相同的分支,除了一些提交,并且我需要在所有分支中进行大多数提交.

问题:如果有的话,推荐的git工作流程是什么?或者,对于我的场景,是否有更好的设置(不使用多个分支?)?

[我尝试过采摘樱桃,但这涉及到相当多的工作,更不用说这里的所有重复提交以及保持我的分支同步的噩梦.]

git dotfiles

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

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 ×3

branch ×1

dotfiles ×1

git-rebase ×1

merge ×1

rebase ×1