- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在当前分支中找到还包含在任何其他分支中的最新提交的最快方法是什么?
奖励:该技术能否允许上述问题中的“任何其他分支”成为“任何其他远程分支”或“任何其他本地分支”?
我喜欢使用 git rebase -i
。我的主要用例是在推送到远程之前重新组织提交。因此,我经常执行 git rebase -i origin/master
。因此,我为该操作设置了一个名为 git rewrite
的别名。
问题是我并不总是想根据 origin/master
rebase 。例如,我可能正在一个分支上工作,而不是希望 git rewrite
执行 git rebase -i origin/branch
。或者我可能正在本地分支机构工作并希望 git rewrite
执行 git rebase -i localbranch
。
所以实际上,我试图让我的 git rewrite
脚本做一些类似的事情:“从任何其他分支中包含的最后一次提交做一个交互式 rebase”。我想出的是:(仅适用于查找远程分支)
#!/bin/bash
# Do a git rebase -i from the most recent common point between the
# current branch and any other remote branch.
# We go backwards in the branch's history and for each commit check if
# that commit is present in one of the remote branches. As soon as we
# find one that is, we stop and rebase on that.
commit=$(git rev-parse HEAD)
while [ true ]; do
branch=$(git branch -r --contains $commit)
if [ -n "$branch" ]; then
# This commit exists in another remote branch!
break
fi
# OK, let's try the previous commit
commit=$(git log --pretty=%P -n 1 $commit)
# Stupid heuristic, take only first commit if multiple parents
commit=${commit%% *}
done
git rebase -i $commit
此方法的问题是它慢。它也有点不准确,因为当一个提交有多个父项时它只跟随其中一个父项。
有谁知道更好/更快/更清洁的方法吗?
最佳答案
重写脚本可能如下所示 (bash):
#!/bin/bash
count=0
for rev in $(git rev-list HEAD); do
num=$(git branch --all --contains ${rev} | wc | awk '{print $1}')
[ ${num} -eq 1 ] || break
count=$(( count + 1 ))
done
if [ ${count} -gt 0 ]; then
git rebase -i HEAD~${count}
fi
我经常做的是(从上游点 rebase ):
git rebase -i @{u}
不过,@{u}
技术不会捕获其他分支。
关于git rebase -i shortcut -- 找到最好的 rebase 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21815197/
我正在开发一个Word插件,不知何故,TAction.ShortCut中定义的快捷方式总是被触发多次,这对我来说很棘手,很难解决,所以我求助于TForm.OnKeyDown事件并清除了所有TActio
是否有运行 IPython 笔记本中所有单元的快捷方式? 如果不是,这有什么具体原因吗? 最佳答案 对于最新的 jupyter 笔记本(版本 5),您可以转到笔记本顶部的“帮助”选项卡,然后选择“编辑
我该怎么做才能使菜单项的快捷方式不会覆盖本地控件的快捷方式? 想象一下屏幕截图中的这个简单的应用程序。它有一个“撤消”菜单项,并分配有快捷键 CTRL+Z(德语中的 Strg+Z)。当我在备忘录中编辑
我需要创建一个快捷方式,在光标处添加某些文本,例如 {sometext},如何做到这一点? 最佳答案 选择键绑定(bind) - 用户 Sublime 下的项目 偏好 ,然后添加以下示例行: {"ke
还有什么其他值(value)可用?我需要包括这个类别吗?如果我删除它怎么办? 我没有在官方文档中找到这个 - https://developer.andr
我在 Play 商店发现了一些很酷的应用。 https://play.google.com/store/apps/details?id=com.sika524.android.quickshortcu
我想自定义快捷方式,但仅将它们应用于特定的扩展。 例如, “跳转到匹配的括号” -> 在 JS 文件中工作 -> 自定义绑定(bind)到 ctrl+m, “转到匹配的标记对”(emmet)-> 在
我想弄清楚你如何使用这个快捷方式,但我遇到了麻烦。 “Ctrl K,l”是什么意思? 我尝试了各种组合但徒劳无功。 最佳答案 这是默认配置文件:Default (Windows).sublime-ke
在 Webstorm MAC OSX 中,快捷方式为 Move Caret to Page Bottom/Top with Selection是 Shift + Command + 带等号的向下/顶部
进行导入时,当我尝试导入 React .jsx 时,intellisense 会建议自动完成名称。成分。当我尝试导入 json 时不会有任何提示或 scss文件虽然。 我在 webpack.confi
ctrl-O 用于跳转到跳转列表中的上一个条目。 但在 IDE 中,根据文档,ctrl-O 可帮助您覆盖基类中声明的方法,有点像 Eclipse 中光标位于空行时的 ctrl-enter。 可以更改将
我使用 Atom Editor 有一段时间了,但我找不到压缩文件中所有函数的方法。 当我打开一个包含 20 或 30 个函数的文件时,我只需要查看标题,而且我不得不浪费大量时间单击 head 函数附近
转到 PHP 文件中匹配大括号的键盘快捷键是什么? 我正在使用 Aptana Studio 3,构建:3.0.7.201112281312 在 Windows 7 上独立。 谢谢, 谢恩。 最佳答案
我偶尔会使用远程桌面来完成一些编程任务,但客户端中的 Alt + Insert 键盘快捷方式(在窗口中循环)会拦截默认的 ReSharper 生成代码快捷方式。 有谁知道是否可以重新映射(或禁用)远程
在Sublime Text中,我可以任意选择一组行,然后使用⌘+L将选择范围扩展到整个行。 PHPStorm/WebStorm中是否有类似的命令? (我想将该命令映射到键盘快捷键。) 我知道PHPSt
如何在 Code::Blocks 编辑器中退出全屏模式。 我找不到键盘快捷键(使用 Google 并在文档中搜索)。 我在 Virtual Box 内的 Ubuntu 上运行 Codeblocks。
如何搜索词开头 \word在 vim 中。我可以使用查找菜单来完成。对此还有其他捷径吗? 最佳答案 尝试: /\\word 在命令模式下。 关于keyboard-shortcuts - 在vim中搜索
因为说实话 :wq! 实在太多了。 请注意,问题是关于原始Vi(例如FreeBSD随附的Vi)而不是Vim。 最佳答案 这似乎适用于solaris的旧版vi: Version SVR4.0, Sola
Microsoft webmatrix支持的键盘快捷键列表。 最佳答案 Microsoft的官方列表在这里: http://www.microsoft.com/web/post/webmatrix-k
我一直在跟进,导师很快就到了代码行的末尾并添加了一个分号。 我知道如何做到这一点的唯一方法是按下不容易够到的结束键,使用箭头键并按两次或更多次或使用我的鼠标。有一段时间我用结束键和我的大写锁定键重新映
我是一名优秀的程序员,十分优秀!