我想列出仅属于特定分支的所有提交.
通过以下内容,它列出了分支中的所有提交,但也列出了父(主)的提交
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 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)提交
我有做大量小提交的习惯,我很好.但我想不时地采取一些线性提交并将它们合并为一个只能提交能力来编写新提交消息的提交.
我查看了文档,但对我来说似乎有点神秘.有谁知道怎么做?
假设我有5个提交的提交历史记录.我知道我可以在制作拉取请求时在本地重新提交我的提交,然后将它们重新绑定到单个提交中.
一个常见的用例是:
我可以在我的机器上本地执行此操作,然后再次推送我的更改(使用-f,因为rebase使其与远程控制器不同步).这有点烦人.
但是,这要求我每次处理评论评论时都要进行改动- 有什么方法可以通过Web界面进行此操作吗?
或者我的工作流程可能是错误的,我是否应该将我的每个"评论评论"提交直接修改为主PR提交?
我正在使用 git 进行一个项目(没有队友,只有我)。我一直在做提交,合并并将它们推送到远程(所有这些都是混乱的,希望我以后学会如何重新定位并修复历史记录)现在我想重新定位已经在远程的所有更改(只有 1 个主分支只有 1 个)用户),通过 rebase 我的意思是我想压缩和重命名一些提交。
我正在使用他们在此链接中建议的命令...如何在推送后压缩 git 中的提交?,但问题是我收到了一些错误并且我不明白它们,以下是显示问题的屏幕截图:


==========================错误为文本==================== ============
使用的命令:
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) 所以我来自一个集中的VCS背景,并试图确定我们在Git(新公司,年轻代码库)的工作流程.我无法找到一个简单而详细的答案的一个问题是远程分支上的rebase究竟是做什么的.据我所知,它重写了历史,一般应仅限于本地分支机构.
我目前正在尝试审核的工作流涉及一个远程协作分支,每个开发人员"拥有"一个用于共享代码的目的.(在可预见的未来,有2个开发人员和最多3个开发人员,每个项目和功能请求的功能分支似乎过多,而且开销比获得的收益更多.)
然后我遇到了这个答案并尝试了它并且它完成了我想要的东西 - 一个开发人员承诺并经常推送到他自己的合作分支,当他知道什么被批准发布到分期他可以远程变换(压扁和可能在合并开发之前重组.
输入原始问题 - 如果远程分支是出于协作目的,其他人迟早会被拉出来.如果流程/培训问题是没有"访客开发者"对该协作分支的提交,那么分支所有者实际上会对该远程分支进行重新绑定?
我的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 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)