相关疑难解决方法(0)

使用Git将我的最后一次X提交压缩在一起

如何使用Git将我最后的X提交压缩成一个提交?

git squash git-squash

3294
推荐指数
38
解决办法
147万
查看次数

Git log只能获取特定分支的提交

我想列出仅属于特定分支的所有提交.

通过以下内容,它列出了分支中的所有提交,但也列出了父(主)的提交

git log mybranch
Run Code Online (Sandbox Code Playgroud)

我找到的另一个选项是排除master可以访问的提交并给我我想要的东西,但我想避免需要知道其他分支名称.

git log mybranch --not master
Run Code Online (Sandbox Code Playgroud)

我试图使用git for-each-ref,但它也列出了mybranch所以实际上它排除了所有:

git log mybranch --not $(git for-each-ref --format '^%(refname:short)' refs/heads/)
Run Code Online (Sandbox Code Playgroud)

更新:

我正在测试我刚才发现的一个新选项,直到现在看来这可能是我想要的:

git log --walk-reflogs mybranch
Run Code Online (Sandbox Code Playgroud)

更新(2013-02-13T15:08):

--walk-reflogs选项很好,但我检查了reflogs是否到期(默认为90天,gc.reflogExpire).

我想我找到了我想要的答案:

git log mybranch --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v "refs/heads/mybranch")
Run Code Online (Sandbox Code Playgroud)

我只是从可用分支列表中删除当前分支,并使用该列表从日志中排除.这样我只能获得mybranch才能达到的提交.

git

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

Git:"不能'压扁'没有先前的提交"错误,而rebase

我在待办事项中有以下内容git rebase -i HEAD~2:

pick 56bcce7 Closes #2774
pick e43ceba Lint.py: Replace deprecated link

# Rebase 684f917..e43ceba onto 684f917 (2 command(s))
#
...
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试压缩第一个(56bcce7)并通过在第一个之前添加"s"来选择第二个时,我得到以下错误:

Cannot 'squash' without a previous commit
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下它的含义,我该怎么做?

我想压缩第一个commit(56bcce7)和"select and reword"第二个(e43ceba)提交

git rebase

67
推荐指数
5
解决办法
6万
查看次数

在Git上将一组提交合并为一个

我有做大量小提交的习惯,我很好.但我想不时地采取一些线性提交并将它们合并为一个只能提交能力来编写新提交消息的提交.

我查看了文档,但对我来说似乎有点神秘.有谁知道怎么做?

git

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

审核评论后,Github squash在拉取请求中从Web界面提交?

假设我有5个提交的提交历史记录.我知道我可以在制作拉取请求时在本地重新提交我的提交,然后将它们重新绑定到单个提交中.

一个常见的用例是:

  • 进行本地提交,处理功能
  • 壁球提交
  • 提出请求
  • 收到评论意见
  • 适当更新PR

我可以在我的机器上本地执行此操作,然后再次推送我的更改(使用-f,因为rebase使其与远程控制器不同步).这有点烦人.

但是,这要求我每次处理评论评论时都要进行改动- 有什么方法可以通过Web界面进行此操作吗?

或者我的工作流程可能是错误的,我是否应该将我的每个"评论评论"提交直接修改为主PR提交?

git workflow github

6
推荐指数
1
解决办法
2463
查看次数

提交后无法在 git 中压缩提交 - Visual Studio

我正在使用 git 进行一个项目(没有队友,只有我)。我一直在做提交,合并并将它们推送到远程(所有这些都是混乱的,希望我以后学会如何重新定位并修复历史记录)现在我想重新定位已经在远程的所有更改(只有 1 个主分支只有 1 个)用户),通过 rebase 我的意思是我想压缩和重命名一些提交。

我正在使用他们在此链接中建议的命令...如何在推送后压缩 git 中的提交?,但问题是我收到了一些错误并且我不明白它们,以下是显示问题的屏幕截图:

图像 - git cmd 变基错误

图像 - 视觉历史树的一部分

==========================错误为文本==================== ============

使用的命令:

git rebase -i origin/master~2 master
Run Code Online (Sandbox Code Playgroud)

(它应该只显示 2 个提交,但由于某种原因它显示了 2 个以上,比如 40+)

错误信息:

interactive rebase in progress; onto 9bdd944
Last commands done (15 commands done):
   pick 7af3656 "commit message"
   pick 7355eff "another commit message"
Next commands to do (110 remaining commands):
   pick fc10330 "another commit message"
   pick f22d8c0 "another commit message"
You are currently rebasing branch 'master' on '9bdd944'.

nothing to commit, working tree …
Run Code Online (Sandbox Code Playgroud)

git visual-studio-2015

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

如何在git中将7个推送的提交压缩为1比1?

我尝试了多种方法来压缩远程回购提交,但未正确完成。我要把它们全部压扁,然后做成一个。以下是提交列表。以下是我向上游的拉取请求的摘要(列出了7个提交)。我只想列出一个而不是7。

在此处输入图片说明

git git-rebase git-squash

4
推荐指数
2
解决办法
2936
查看次数

远程git rebase如此邪恶的详细原因

所以我来自一个集中的VCS背景,并试图确定我们在Git(新公司,年轻代码库)的工作流程.我无法找到一个简单而详细的答案的一个问题是远程分支上的rebase究竟是做什么的.据我所知,它重写了历史,一般应仅限于本地分支机构.

我目前正在尝试审核的工作流涉及一个远程协作分支,每个开发人员"拥有"一个用于共享代码的目的.(在可预见的未来,有2个开发人员和最多3个开发人员,每个项目和功能请求的功能分支似乎过多,而且开销比获得的收益更多.)

然后我遇到了这个答案并尝试了它并且它完成了我想要的东西 - 一个开发人员承诺并经常推送到他自己的合作分支,当他知道什么被批准发布到分期他可以远程变换(压扁和可能在合并开发之前重组.

输入原始问题 - 如果远程分支是出于协作目的,其他人迟早会被拉出来.如果流程/培训问题是没有"访客开发者"对该协作分支的提交,那么分支所有者实际上会对该远程分支进行重新绑定?

git git-rebase

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

当我尝试压制时,为什么我会"丢失"Git提交?

我的git log命令产生以下内容:

commit 568a9783f75b0c1ab12499beb32b518e19ab60c0 (HEAD -> master, origin/master)
Merge: 7428e09 e7c1537
...

commit 7428e0947bb47a3fdc46a1ea053bd86aa87934c8
...

commit e7c15371f39f4183c5f8c0645051a022851902f2
Merge: e715e8a ae7d067
...

commit ae7d06745891c215cc2980df520656509e4e36ef
...
Run Code Online (Sandbox Code Playgroud)

在提交7428e0947bb47a3fdc46a1ea053bd86aa87934c8(上面第二个)时,一些敏感信息被意外地检入存储库,因此我想用之前的提交来压缩它.

我想按照这里的说明操作:

如何在推送后压缩git中的提交?

首先,我删除了敏感信息,然后提交了更改:

git add .
git commit -a -m "Remove sensitive info"
Run Code Online (Sandbox Code Playgroud)

Git日志现在看起来像:

commit d6d1954c10bd71cc33f24222d1e36b3116eb7775 (HEAD -> master)
...

    Remove sensitive info

commit 568a9783f75b0c1ab12499beb32b518e19ab60c0 (origin/master)
Merge: 7428e09 e7c1537

commit 7428e0947bb47a3fdc46a1ea053bd86aa87934c8

commit e7c15371f39f4183c5f8c0645051a022851902f2
Merge: e715e8a ae7d067
...

commit ae7d06745891c215cc2980df520656509e4e36ef
...
Run Code Online (Sandbox Code Playgroud)

现在我跑:

git rebase -i origin/master~4 master
Run Code Online (Sandbox Code Playgroud)

我得到:

...
pick ae7d067 ...
pick d6d1954 Remove sensitive …
Run Code Online (Sandbox Code Playgroud)

git rebase squash

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