2017-02-27 11 views
3

私は対話的なリベース中に誤ってgit commit --amendを実行したときに、この状態を簡単に '修正'する方法を知っています。しかし、誰かが複雑なレベルの解決策を持っているのであれば、私がgit/terminal/bashを設定してこれをできるようにするのを防ぐことができますか?Git:Rebase中のコミットを防ぐ

私はMac OSX端末を使用しています。解決策が必要ならば、私は他のターミナル・プログラムにもオープンしています。

1 @: master$ git pull 
2 @: master$ git checkout my/feature/branch 
3 @: my/feature/branch$ git rebase -i master 
// There are merge conflicts 
// I fix them, then 
4 @: my/feature/branch$ git add . 
// Then what I should do is: 
5correct @: my/feature/branch$ git rebase --continue 
// But instead, just due to dumb muscle memory, I do: 
5incorrect @: my/feature/branch$ git commit --amend 

壊れた状態を簡単に修正できます。私は、私がリベースの途中で5incorrectコマンドを実行できるようにするために何かを設定できる方法があるかどうかを判断しようとしています。

+3

bashエイリアスを使って 'git'以外のものを実行することができます。' git ... 'を入力すると、そのエイリアス/ function/scriptで、あなたがリベース中であるかどうか、しかし、インタラクティブなrebase中に、コミットを分割するために、補正や追加のコミットを行うのは通常のものです。 (注:bashのトリックは 'command foo'がエイリアスの代わりに実際のfooを実行するので、必要に応じて* in *あなたのエイリアスを使用します) – torek

答えて

1

あなたは.git/hooks/pre-commitとして次のローカル事前にコミットフックを追加することができます。ただその後

#!/bin/bash 
set -e 
shopt -s extglob 

if [[ -d `git rev-parse --git-path rebase-merge` \ 
    || -d `git rev-parse --git-path rebase-apply` ]]; then 
    read -p 'Rebase in progress, continue? ' 
    [[ ${REPLY,,} == @(y|yes) ]] 
fi 

chmod +x .git/hooks/pre-commitを、あなたが並べ替えられます。リベースが進行中の場合は、続行するか、ctrl-cを押すか、または手元にあるものだけを入力するように促され、スクリプト/コミットは停止します。

+0

ニース。とてもかっこいい。 –

関連する問題