タグ付けされた質問 「magit」

Gitバージョン管理システムのEmacs拡張機能です。


7
Magitで使用されるものと同様のポップアップメニューを実装する方法
質問 私はの形でユーザーインターフェイスを作成したいポップアップメニュー、Magitに使用されるものと同様のポップアップメニュー。 特徴 ポップアップの定義 この質問のポップアップは、メニュー項目のコレクションを含む小さな一時的なウィンドウを意味し、ユーザーはこれらの項目の1つだけを選択できます。 画面上の位置 ポップアップは画面のどの部分にも表示できますが、非常にわかりやすく、現在アクティブなウィンドウの横に表示されることが望ましいです。 ポップアップバッファの内容 アイテムはきれいな表の形で表示されるべきです。かなりの質問のコンテキストは視覚的に魅力的であることを意味します。この効果は、メニュー項目をまっすぐな列に配置することで最も簡単に実現できます complete--insert-string。この段落は、追加の説明に役立ちます。独自の方法で行うことができます。これにより、答えが不正確になることはありません。 メニュー項目の選択 選択は、単一のキーを押すか、必要に応じてマウスを使用して実行されることが予想されます(それほど重要ではないため、マウスをサポートしない命題を含む回答は合法です)。マウスをサポートするソリューションを提案する場合は、ユーザーが直感的な方法で、つまり目的の選択肢を左ボタンをクリックすることによってメニュー項目を選択できる必要があることに注意してください。 NBマウスはさまざまな方法で使用でき、選択肢を示す別の方法も歓迎します。 ポップアップの排除 ユーザーが上記の方法でメニュー項目を選択すると、バッファーとそのウィンドウが表示から削除され、強制終了されます。ポップアップメニューを呼び出す前にアクティブであったウィンドウは、再びフォーカスされる(つまり、アクティブになる)必要があります。 戻り値と引数 できれば、このアクションの結果として、Lispオブジェクトが返される必要があります。Lispオブジェクトは次のいずれかです。 nil—これは、ユーザーがを押すC-gか、その他の方法でポップアップメニューを中止したことを示します†。 string—文字列(シンボルの使用が許可されています)はstring-equal 、実際のアイテムのコレクションとしてポップアップメニューに提供される文字列の1つにする必要があります。 プログラムの残りの部分にユーザーの選択、または場合によってはその不在を知らせる別の方法も許容されます。ただし、他にどのように実行できるかが明確でない場合は、すべての回答者に即興で質問し、この側面のさらなる明確化を求めません。 これはすべて戻り値です。入力パラメータについては、可能な選択肢(つまり、メニュー項目)を表す文字列のコレクションを少なくとも含める必要があります。 許容できる回答 予想される回答は次の形式になります。 知識のある読者が上記のような関数を記述できるようにする十分なコードスニペット。作業関数全体を記述することは予期されていません。ただし、不確実性を避けるために(コードのかなりの部分を省略できますか?)、スニペットの欠落部分は回答のテキストコンポーネントで説明する必要があります。 同様の機能を実装する既存のライブラリへのリンク。不確実性を避けるために、私たちの場合と同様に、ライブラリーを使用して、上記の機能を少なくとも2つまたは3つ持つポップアップ(上記の定義を参照)を作成できることに注意してください。提案されたライブラリーが前述の条件を満たせない点と異なる場合、そのようなケースはそれぞれ独立して判断され、OPが有用であると判断した場合は常に賛成されます。 «機能»セクションで説明されている機能を実装するために使用できる組み込みEmacs関数またはサードパーティの関数の説明。上記を参照してください。回避の不確実性には、あなたの答えは実装したい、将来の読者のためにどのように活用できるか明確にしてください状態のポップアップ、Magitに使用されるものと同様のポップアップメニューを。 †ポップアップメニューを中止する別の方法には、次のものがあります(これらに限定されません)。 ポップアップメニューウィンドウの外側をクリックします。 選択せずにポップアップを含むバッファを強制終了します。
10 magit  popup 

8
Windowsでmagit-pushがハングする
WindowsでGNU Emacsを使用magit-pushしていますが、ローカルの変更をリモートリポジトリにプッシュするのに使用できません。これは、リモートリポジトリがSSHまたはHTTPSでアクセスされているかどうかに関係なく発生します。magit-pushWindowsでの作業をLinuxマシンでの作業と同じくらいシームレスに(または少なくともほぼ同じように)行うために何をする必要がありますか? *Messages*バッファに表示されるのは Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master:refs/heads/master 同じことが*magit-process*バッファ内で、多かれ少なかれ表示されます。これ以上便利なものはありません。コマンドラインからgit pushできますが、sshキーのパスワードを要求されます。それが問題かもしれませんか?Pageant(PuTTYのキーエージェント)を使用してキーをロードしようとしましたが、違いはないようです。 参考になれば、私はCygwinをインストールしており、EmacsがCygwinの実行可能ファイルを使用するように強制することを含むソリューションに満足しています。

2
Magitがssh接続を介してgit repoを認識しない
リモートサーバーへの接続にsshを使用しています。サーバー上にと呼ばれるgitリポジトリがありますMRFLSSVM。しかし、私が実行するmagit-statusと: /ssh:qmServer:/home/Chang/qmCodeLab/MRFLSSVM/ マジットは私に尋ねますCreate repository in /ssh:qmServer:/home/Chang/qmCodeLab/MRFLSSVM/?。 magitにそのリポジトリを認識させる方法はありますか?(git 2.10.0を/ usr / local / gitにインストールし、システム(CentOS)をupdate-alternativesで使用するように構成しました) -----------編集------------------------------ Error (magit): Magit requires Git >= 1.9.4, you are using 1.8.3. If this comes as a surprise to you, because you do actually have a newer version installed, then that probably means that the older version …
10 magit  tramp  ssh 

1
Magitカスタムコマンド
Magitはポップアップウィンドウでマルチステップコマンドの進行を表示します。たとえば、を押すとcコミットメニューが表示され、を押すaとが呼び出されmagit-commit-amendます。 自分のコマンドを含めて、magit-commit-snapshotそれをで起動したいと思いcnます。 n: Snapshotの後に、コミットメニューに表示されますs: Squash。 これどうやってするの?バインディングがに存在することはわかりますが、私のからバインディングをmagit-key-mode.el簡単に追加する方法がわかりません.emacs。
10 magit 

1
visual-line-modeと互換性のあるgit diffをうまく処理する方法は?
visual-line-modeオンにした状態で、org-modeで原稿をタイプセットしました。物理的に私の段落の1つは、ソフトラップされた単なる行です。 この場合、変更を確認するためにgit diff(magit)を実行しようとすると、この行(段落)はすべて変更対象としてマークされています。この段落のどの部分が単純に変更されているのかわかりませんでした。 この問題を解決するいくつかの解決策があるはずだと思いますが、ウェブサイトから回答が見つかりませんでした。誰かがあなたの良い解決策を共有できますか?
9 magit  git 

2
EvilのデフォルトのMagitコミット状態
使用しますevil。通常、コミットするとすぐに入力を開始したいのですevilが、バッファをで開始しevil-normal-stateます。以前は設定していた (evil-set-initial-state #'git-commit-mode 'insert) しかし、Magitがtext-modeコミットバッファーに使用しているため、これは機能しません。 どうすればMagitコミットをデフォルトにできevil-insert-stateますか?
9 magit  evil 


1
magitを使用して2つのリビジョンのすべての変更を比較する
1つのファイルの変更だけでなく、2つのリビジョン間のすべてのファイルの変更を比較するために、MagitからEdiffを呼び出す方法はありますか? 私のユースケースは、同僚がブランチで行った変更を確認するように依頼することです。これは複数のコミットで実行される可能性があります。彼女のコードがリビジョンMでメインブランチから分岐したことは簡単にわかりますが、magitですべてを比較する方法がわかりません。 私はできるように見えますがM-x magit-log、それからE r <M> <branch name>ファイルを比較するように求められます。この場合、変更されたファイルは約20個あるE rため、それぞれのシーケンスを関連付けるのは面倒です。さらに、私はすでに見たファイルを覚えておく必要があります。 理想的には、次のいずれかを行います。 各ファイルをリストし、クリックしてediffを開始し、いつediffを開始したかを示す(または最後からファイルを削除できる)バッファー 変更されたファイルごとにediffセッションを開始し、セッションをリストしてそれらにアクセスできるようにするバッファーを使用します。 私は何ediff-directoriesができるかのようなものを考えています。 その機能はありますか? これは、magitで2つのコミットを比較するにはどうすればよいですか?:これらの2つのリビジョンの変更点を確認したい。変更がリビジョンで発生したのか、非共通の祖先で発生したのかに関係なく、これら2つのリビジョン間で異なるすべてのファイルの違いを確認したいと思います。
8 magit 

1
Magitセクションのデフォルトの可視性を変更する
私は人気のあるレポのフォークを持っています。そのレポにプッシュされているコミットを追跡しながら、自分のフォークへの個人的なコミットも行いたいです。私は自分の変更を上流にマージしたくないので、誰かが上流のレポにコミットするたびにマージ/リベースしても問題ありません。 私は三角形のワークフローとそれに対するMagitのサポートについて読み、素晴らしいと思いました。それは私のローカルコミットが最終的にメインリポジトリにマージされ、セクションの下に私のローカルコミットのリストを表示する必要があることを除いて、私が必要とするものを正確に実行しますUnmerged into upstream/master。 Head: <local commit> Merge: upstream/master <upstream commit> Push: origin/master <local commit> Unpulled from upstream/master (1) 987ac90 upstream/master <upstream commit> Unmerged into upstream/master (1) 123baf8 master origin/master <local commit> いくつかのコミットがある場合はこれで問題ありませんが、後で私の個人的な変更が積み重なって、リストが大きくなります。セクションUnmerged into upstream/masterを常に非表示にする方法はありますか?
8 magit 

1
magitでプルされていないリモートコミットを表示する
SourceTreeをMagitに置き換えようとしています。Emacsで再現する方法が理解できない機能の1つは、グラフにリモートコミットを表示することです。このように見えるソースツリーでは: マジットで再現することは可能ですか?
8 magit 


3
magit-statusでセクションを展開するときに上にスクロールする方法は?
ではmagit-status、バッファ、押すTAB表示または非表示にunstagedコンテンツを見たときに便利です与えられたセクションを、そして兄貴が上演することができます参照してください。 ただし、セクションをタブで移動すると、バッファーが下がるため、拡張しようとしているセクションがバッファーの下部に移動し、セクションの拡張された部分が非表示になります。次にrecenter-top-bottom、セクションをバッファの上部に戻すために、を使用して循環する必要があります。 セクション/エントリを展開するときに自動的にバッファの最上部に移動する方法はありますか?
8 magit 

3
定義済みのテキストをMagitのコミットメッセージウィンドウに挿入する方法は?
すべてのコミットメッセージが問題番号で始まるという規則があります。 最初に開いたとき(つまり、を押したとき)に、Magitのコミットウィンドウに(別の関数で計算された)問題番号部分をプログラムで挿入できるようにしたいと思いますC C。 どうすればよいですか。どこを見ますか? 更新:これは私が現在使用しているものです。 (defun my-extract-branch-tag (branch-name) (let ((TICKET-PATTERN "\\(?:[[:alpha:]]+-\\)?\\([[:alpha:]]+-[[:digit:]]+\\)-.*")) (when (string-match-p TICKET-PATTERN branch-name) (s-upcase (replace-regexp-in-string TICKET-PATTERN "[\\1] " branch-name))))) (defun my-git-commit-insert-branch () (insert (my-extract-branch-tag (magit-get-current-branch)))) (add-hook 'git-commit-setup-hook 'my-git-commit-insert-branch) Jiraで簡単にチケットを自動リンクできるように、コミットメッセージの最初の行で<username>-foo-123-<explanatory part>生成さ[FOO-123]れるようなブランチ名の場合。
8 magit 

1
magitステータスバッファの意味:ヘッド、マージ、プッシュ
誰かがmagitステータスバッファの上位3行の意味を説明できますか?特にMerge: origin/master Commit message Head: master Commit message Merge: origin/master Commit message Push: origin/master Commit message コンソールを使用すると、私の作業ディレクトリはきれいに見え、すべてがリモートにプッシュ/プルされますが、なぜMergemagitステータスで表示されるのですか?
8 magit 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.