标签: squash

合并后的Git壁球历史

我将一个大项目的上游与我当地的git repo合并.在合并之前,我有一些易于阅读的历史,但在合并之后,我的回购中有大量的历史记录.我不需要上游回购的所有历史提交.

在我想保留的上游合并之后还有其他提交.如何在保持上游合并之后的提交的同时,将从上游合并的所有历史记录压缩到一个提交中?

git git-merge squash

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

在sourcetree中压缩两次以上的提交?

我有大量的提交,大约20个,自从我上次推出origin/master以来我已经完成了.我从来没有过多个分支,主,所有提交都是在master上完成的.如何将所有20个提交压缩到一个提交中,最好使用sourcetree?我想这样做,所以我可以将一个提交推送到origin/master.

在sourcetree中,我已经想到在存储库菜单中使用交互式rebase命令.它会显示我想要压缩的确切提交列表.我尝试反复按下壁球按钮,直到它显示一个包含所有这些按钮的提交.但是当我点击OK时,我最终只得到两个最近提交的提交.因此,即使对话框似乎表明它可以在实践中压缩多个,但我无法让它工作.

git squash atlassian-sourcetree

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

压缩提交到一个最佳实践(针对此特定工作流程)?

我有以下git工作流程:

  1. 创建新功能分支
  2. 在功能分支上工作
  3. 经常提交
  4. 功能完成后,合并到master分支
  5. 冲洗并重复

但是,有时候,我需要从master中恢复整个功能.这可能涉及很多revert.(需要恢复功能的原因是我有一个网站可以使用一个仓库.从那里,我们使用一个脚本将网站部署到我们的生产站点或临时站点.两者都是从我们的主分支完成的.Don不要问,这就是我给予的工作.有时候,我正在研究我上演的东西,但是需要立即做出改变,所以我需要一些方法来拉动我的变化以便清理回购.)

我认为最简单的方法是每个功能分支只有一个提交.然后我可以revert提交.很自然地,我想在将一个功能分支的所有提交压缩成一个之前将其压缩为一个master.

所以现在我的工作流程看起来像:

  1. 创建新功能分支
  2. 在功能分支上工作
  3. 经常提交
  4. 一旦功能完成git rebase -i HEAD~number_of_commits(或者如果远程分支可用,origin/feature_branch)

这个逻辑有什么问题吗?它违背了任何最佳做法吗?我自己做了一些测试,整个工作流程似乎运行顺利并解决了我的问题,但我想让其他(更聪明的)Git-ers运行这个想法,看看它是否有任何问题.

谢谢!

git workflow squash git-commit

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

任何gui for git merge(w squash)?

我的工作流程:

  • 来自大师的分支
  • 在我的分支机构工作,经常提交(100+)
  • 当我的分支完成工作时,将master合并到我的分支中,解决所有冲突.
  • 在合并回主人之前的代码审查时间

对于CODE REVIEW,我需要显示两个头之间的差异压缩/组织我的提交(大约5次提交).这项任务的最佳GUI(跨平台?)是什么?

git merge user-interface branch squash

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

在开始和结束SHA时,如何将一系列git提交压缩在一起

我有一个大约20个提交的分支.

分支上的第一个SHA是分支上bc3c488...
的最后一个SHA2c2be6...

如何将所有提交合并在一起?

我想这样做而不使用交互式rebase,因为有很多提交.

我需要这个github Pull Request,我被要求合并我的提交.

需要这样做而不进行git merge --squash因为我需要在本地进行压缩而另一个开发人员进行合并并希望我在合并之前先进行压缩.

git squash

10
推荐指数
2
解决办法
6614
查看次数

组合或重新组合任意大量的提交

让我们说我的本地git log节目:

739b36d3a314483a2d4a14268612cd955c6af9fb a
...
c42fff47a257b72ab3fabaa0bcc2be9cd50d5c89 x
c4149ba120b30955a9285ed721b795cd2b82dd65 y
dce99bcc4b79622d2658208d2371ee490dff7d28 z
Run Code Online (Sandbox Code Playgroud)

我的遥控器git log显示:

c4149ba120b30955a9285ed721b795cd2b82dd65 y
dce99bcc4b79622d2658208d2371ee490dff7d28 z
Run Code Online (Sandbox Code Playgroud)

什么是最简单的方法(假设任意大量的本地提交):

527b5810cfd8f45f18ae807af1fe1e54a0312bce a ... x
c4149ba120b30955a9285ed721b795cd2b82dd65 y
dce99bcc4b79622d2658208d2371ee490dff7d28 z
Run Code Online (Sandbox Code Playgroud)

git git-rebase squash

9
推荐指数
2
解决办法
5791
查看次数

Git - 修正和压缩命令之间的区别

修改和壁球命令有什么区别?我试过这两个,发现两者都在做同样的管理.

git git-amend squash git-squash

9
推荐指数
2
解决办法
2536
查看次数

如何删除所有本地分支,如果合并为主分支将导致无变化?

我知道如何删除已合并的所有本地分支.但是,我相信这是由于Github的新拉动请求压缩和合并功能,我发现自己留下了许多未合并的本地分支,但如果合并到master中将导致没有变化.

如何修剪这些本地分支,即那些未必合并但不会影响主分支(或更一般地说,当前分支)的本地分支?

git branch github squash branching-and-merging

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

git subree push --squash不会挤压

git subtree用来组织我的git存储库.假设我有一个名为的主存储库repo和一个名为的库lib.

lib通过压缩它的历史成功地"导入"了存储库.我现在想lib通过压缩历史来回馈.这似乎不起作用:我指定--squash选项,git subtree push但在查看历史记录时,我仍然发送所有提交.

如何重现

这是一个脚本,显示了重现问题所需的最小命令:

#!/bin/bash
rm -rf lib lib-work repo

# repo is the main repository
git init repo
# lib is the 'subtreed' repository (bare to accept pushes)
git init --bare lib

git clone lib lib-work
cd lib-work
# adding a bunch of commits to lib
echo "v1" > README
git add README
git commit -m 'lib commit 1'
echo "v2" > …
Run Code Online (Sandbox Code Playgroud)

git push git-push squash git-subtree

8
推荐指数
2
解决办法
2737
查看次数

如果多个人在一个功能分支上工作,但它被压缩并合并到 master 中,那么 git 历史记录会发生什么情况?

如果多个人一起在一个功能分支上工作,当你将其压缩并合并到主分支时会发生什么?git Blame 会跟踪谁参与了该功能的哪一部分吗?或者点击压缩和合并的人会被指责为所有 git 的罪魁祸首吗?即使该功能位于同一个 PR 中,如何显示谁负责该功能的哪一部分?

git merge github squash

8
推荐指数
1
解决办法
1082
查看次数