交互式改组以压制提交是悬而未决的

时间:2017-03-27 02:54:00

标签: git github git-merge git-rebase git-shell

git rebase -i $(HASH)正在悬挂......永远不会完成。

这里命令

git rebase -i d8c0f59d5d627efb65b47264d5169e3626195839

这样做可以压缩一些提交。因为它是交互式的 - 它要求按预期两次打开一个编辑器。

然后输出类似

的内容
 [detached HEAD fc62e0b3] AIRFLOW-1012 -
 add run_as_script parameter  
 Author: Tagar  
 Date: Sun Mar 19 12:50:50 2017 -0600
 2 files changed, 14 insertions(+), 3 deletions(-)

然后......没有任何反应 - git rebase无限期地等待/挂起。

我在Windows上使用GitHub的git-shell,最新版本。

试图跟踪git rebase如下:

set -x; GIT_TRACE=2 GIT_CURL_VERBOSE=2 GIT_TRACE_PERFORMANCE=2 \
GIT_TRACE_PACK_ACCESS=2 GIT_TRACE_PACKET=2 GIT_TRACE_PACKFILE=2 \
GIT_TRACE_SETUP=2 GIT_TRACE_SHALLOW=2 \
git rebase -i d8c0f59d5d627efb65b47264d5169e3626195839

它在开始挂起之前显示最新输出:

 20:03:58.266245 trace.c:435             performance: 13.236119523 s:
 git command:
 'C:\Users\myuser1\AppData\Local\GitHubPortableGit_f02737a78695063deace08e96d5042710d3e32db\mingw32\libexec\git-core\git.exe'
 'commit' '-n' '--amend' '-F' '.git/SQUASH_MSG' '-e' 20:03:58.293248
 run-command.c:350       trace: run_command: 'notes' 'copy'
 '--for-rewrite=rebase' 
 20:03:58.371255 trace.c:333             setup:
 git_dir: .git 
 20:03:58.372255 trace.c:334             setup:
 git_common_dir: .git 
 20:03:58.372255 trace.c:335             setup:
 worktree: C:/Users/myuser1/Documents/GitHub/incubator-airflow
 20:03:58.372255 trace.c:336             setup: cwd:
 C:/Users/myuser1/Documents/GitHub/incubator-airflow
 20:03:58.372255 trace.c:337             setup: prefix: (null)
 20:03:58.372255 git.c:371               trace: built-in: git 'notes'
 'copy' '--for-rewrite=rebase' 
 20:03:58.372255 trace.c:435            
 performance: 0.006984451 s: git command:
 'C:\Users\myuser1\AppData\Local\GitHub\PortableGit_f02737a78695063deace08e96d5042710d3e32db\mingw32\libexec\git-core\git.exe'
 'notes' 'copy' '--for-rewrite=rebase'

所以git rebase执行的最新命令是git notes copy --for-rewrite=rebase并且根据跟踪(运行时间0.0069s)成功了。
事后没有任何事情发生。

我是一名老派SVN并且学习git,但是在我看来GitHub的可移植版git的错误?

PS:我试图strace,但是在Windows下使用它并不是很有用。

1 个答案:

答案 0 :(得分:2)

不要使用GitHub Desktop中嵌入的便携式Git,而是再次尝试:

  • 您可以找到的latest Git for Windows,例如PortableGit-2.12.1-64-bit.7z.exe(在任何地方解压缩,无需设置)
  • 然后在CMD会话中,将PATH设置为:

    set G=c:\path\to\latest\git
    set PATH=%G%\bin;%G%\usr\bin;%G%\mingw64\bin
    set PATH=%PATH%;C:\windows\system32;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\
    
  • 将您的HOME设置在同一CMD会话

    set HOME=%USERPROFILE%
    
  • 最后,仍然来自同一个CMD(带有简化的PATH),cd到你的Git本地仓库,再次尝试你的rebase。
    在重新尝试rebase之前执行git rebase --quit first