相关疑难解决方法(0)

在git中,merge --squash和rebase之间有什么区别?

我是git的新手,我正在努力理解壁球和篮板之间的区别.根据我的理解,你做一个篮板时做一个壁球.

git merge rebase git-rebase squash

336
推荐指数
5
解决办法
13万
查看次数

在没有Rebase的情况下重做GIT中的提交历史记录

自从我的最后一个问题被证实是关于GIT的变基,我已经决定我根本不想变基.相反,我想:

  1. 工作工作,随时检查和推动
  2. 抛弃所有这些提交并假装它们从未发生过(所以在工作结束时一个干净的提交)

我目前通过将文件复制到新目录然后将它们复制回新分支(与我的工作分支在同一点分支),然后将其合并到master任何地方.

这只是简单的坏事,为什么?更重要的是:有没有更好的/ GIT方式来做到这一点? git rebase -i迫使我合并(并挑选和压缩).

git rebase

21
推荐指数
2
解决办法
7234
查看次数

壁球合并后的重新定位?

我有一个'主'分支和几个主题分支.假设主分支主要用作发布候选者,并且在该分支上不进行任何开发工作.

主题分支是多个,由团队共享.一些分支机构有多个开发人员在开发它们.所有主题分支都定期从主分支重新定位.

为了清理'master'分支中的历史记录,我在将代码从主题分支到主分支时进行了'git merge --squash'.这非常好.

现在 - 当主题分支被重新定位时 - 提交正在重复.有没有办法在'git merge --squash'成功后清理主题分支上的提交?

git git-rebase

12
推荐指数
1
解决办法
2923
查看次数

Git在合并时忽略已删除的文件

我有两个存储库.不时,我要的内容合并othermain.但是,合并会忽略已删除的文件.让我通过一个例子解释一下:

mkdir -p test/main test/other

cd test/other/
git init
touch one two three
git add .
git commit -m "Add one, two and three."

cd ../main/
git init
touch four
git add .
git commit -m "Add four."
Run Code Online (Sandbox Code Playgroud)

添加othermain远程.

git remote add other ../other/
git fetch other
Run Code Online (Sandbox Code Playgroud)

合并其内容.

git merge --squash other/master
git commit -m "Merge other."
Run Code Online (Sandbox Code Playgroud)

它正确添加文件.现在,删除一个文件other.

cd ../other/
git rm two
git commit -m "Remove two."
Run Code Online (Sandbox Code Playgroud)

合并更改为main …

git

9
推荐指数
1
解决办法
3052
查看次数

GIT:我可以在合并到 master 的同时维护一个正在进行的开发分支吗?

这看起来应该是一个简单的问题,但我整个早上都在寻找答案,但我就是找不到令我满意的答案。我能找到的最接近的东西是这个问题,Git merge squashrepeated,但这个问题是 11 年前的问题,所以希望“除非你创建临时分支,否则你根本无法做到这一点”的共识已经改变。

我正在从事一个长期项目,我基本上是唯一的贡献者。理想情况下,我希望有一个长期持续的development分支,我可以继续一点一点地修补和工作,并master在我达到稳定的可发布状态时定期对分支进行压缩合并。我不想让完整的提交历史记录可用/可见master,因为我希望能够轻松地向后浏览稳定的官方版本的历史记录。但是,我确实希望完整的提交历史记录可以在某个地方可用,以便它变得相关。

问题是,如果我尝试以直觉上认为应该有效的方式做到这一点,那就行不通。南瓜合并提交创建了一个与master中的任何内容都不匹配的提交development,因此下次我尝试执行南瓜合并时,它会说存在冲突,我需要从合并masterdevelopment...并且当我越来越多地重复这个过程,这个问题不断增长,我有六个提交在两个分支之间来回跳动,这些提交实际上并没有更改任何文件,但我似乎无法摆脱。

我想要制作的图形看起来像这样,如果这有意义的话:

      B-------------------G-----------J master
     /                   /           /
a---b---c---d---e---f---g---h---i---j development
Run Code Online (Sandbox Code Playgroud)

到目前为止我一直在使用的解决方案非常丑陋:我使用版本号创建一个新分支,例如development_601,然后当我再次稳定时,我从该分支向 master 发出拉取请求,并压缩合并提交,然后我在挤压合并后创建另一个新development_602分支masterdevelopment_601被封存。这看起来很混乱、烦人,而且是错误的,特别是因为 Git 似乎暗示我应该在合并拉取请求后删除我的分支,但就像我说的,我想在某个地方记录我完整的混乱历史,我只是不这样做不希望它(轻易)从外部可见。

我一直在使用 Github Desktop 应用程序和 Github 网站;我一直试图避免将控制台命令放入我的工作流程中。

这是一种奇怪的行为吗?development我觉得“拥有一个带有master/分支的长期release分支,定期但不完全地反映它”是一种非常常见的系统,但不知何故,我找不到任何地方可以解释如何实现它。

git merge branch github squash

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

标签 统计

git ×5

git-rebase ×2

merge ×2

rebase ×2

squash ×2

branch ×1

github ×1