9

シェルを使用してgitで数時間の試行の後、magitに切り替えました

これはかなりきちんとしていて効率的です。もう git コマンドを呼び出すために「git」と入力する必要はありません!

しかし、シェルコマンドラインを比較すると、まだ1つの欠点が見つかりました

:入力して git コマンドを呼び出すたびに、出力が別のウィンドウに表示されました。元に戻すために入力C-x oしてから、もう一度 git コマンドを入力する必要がありました。

emacs の shell-mode 以外に、入力と出力の監視を同時に行うより良い方法はありますか?

出力を別のモードに再バインドする必要がありますか? どれ?またはよりエレガントなソリューションですか?

どうもありがとう

4

3 に答える 3

5

私はブライアンに同意します。マジットが単純なキートリガーを介して行うことができないことを何をしようとしていますか? おそらく、すでにキーバインディングがあります。C-zシェルにドロップしてコマンドを実行するだけではない場合は、次のように入力fgして、emacs をフォアグラウンドに戻します。

編集:私のフローは次のようになります。

  1. 私は仕事で一日を始めます。git diff前日からコミットされていない変更があるかどうかを確認するためだけにコマンド ラインに入力します (色を有効にすることを忘れないでください! )コマンド ラインでこれを magit と同じように行う理由は、まだ emacs を使用していないためです。
  2. コミットされていないファイルを emacsemacs file1 file2で開くか、作業しようとしているいくつかのファイルを開きます。
  3. バグを修正するか、新しい機能を完成させるまでコーディングします。
  4. emacs で、入力C-c iして Magit ステータス ウィンドウを開きます。
  5. [変更] セクションまで下にスクロールし、各ファイルの横にあるタブを押して、各変更の差分を表示します。sこれらの変更をステージングするか、それらの変更をステージング解除するために押しuます。
  6. 必要に応じて、差分コードを調べて同じことを行い、コードのセクションをステージングおよびステージング解除するsこともできます。uどこかにデバッグ コードがあり、それを強制終了したい場合に便利です。
  7. すべての変更が適切に表示され、ステージングされていることを確認したらc、magit-edit-log を開くように入力します。コミット メッセージを入力C-c C-cしてから、入力してコミットします。それからそれPを押します。終わり!

これは多くの手順のように聞こえますが、すぐに自然になり、一連の変更全体を比較してステージングし、メッセージでコミットするのに、文字通り 30 秒かかります。Emacsにとどまっている間ずっと。コマンドラインにドロップダウンするよりもはるかに簡単です。

Magit 経由でプッシュを行うと、エラーが返されることがあります。通常は、プッシュする前にプルする必要があるリモート リポジトリの新しいコードが原因です。この場合F、変更をプルPしてからプッシュします。正直なところ、magit を介してプルする代わりに、通常、この状況では、シェル、、およびCtrl-zにドロップダウンします。git pullgit push

編集: Magit のデフォルトの差分色がかなりひどいものだったことを覚えていると思います。私は .emacs で以下を使用しています。どこかから盗んだに違いありません。

;; change magit diff colors                                                                                                                                                                                 
(eval-after-load 'magit                                                                                                                                                                                     
  '(progn                                                                                                                                                                                                   
     (set-face-foreground 'magit-diff-add "green3")                                                                                                                                                         
     (set-face-foreground 'magit-diff-del "red3")                                                                                                                                                           
     (when (not window-system)                                                                                                                                                                              
       (set-face-background 'magit-item-highlight "black"))))                                                                                                                                               

(add-to-list 'auto-mode-alist '("COMMIT_EDITMSG$" . diff-mode))                                                                                                                                             
(eval-after-load 'diff-mode                                                                                                                                                                                 
  '(progn                                                                                                                                                                                                   
     (set-face-foreground 'diff-added "green4")                                                                                                                                                             
     (set-face-foreground 'diff-removed "red3")))
于 2011-05-01T08:08:31.767 に答える
2

通常、Magitを使用しているときは、ほとんどの作業でMagitの組み込みコマンドを使用します。また、Magitの組み込みコマンドでは実行できないことを実行する必要がある場合は、通常の端末を使用します。Magitには、私の日常の使用のほとんどすべてに対応するコマンドが組み込まれています。Magitが提供していない、とにかく本格的なターミナルで何をしていないのか、定期的に何を使用していますか?

于 2011-04-15T15:30:52.393 に答える
0

についてのアドバイスはこれをmagit-run*解決します。への他の呼び出しを妨害する可能magit-run*性があります。これ以上テストしませんでした...

(defadvice magit-run* (around stay-in-magit activate)
  (flet ((pop-to-buffer (buf &optional act rec) (display-buffer buf act)))
    ad-do-it))
于 2012-11-26T16:34:21.353 に答える