2014-02-21 37 views
4

我需要使用幾個不同的git存儲庫。如何使用magit在它們之間切換? Magit允許我在啓動它時選擇一個目錄..但是如果需要的話,我不清楚如何切換到另一個回購站。我看過magit cheatsheet和docs,但沒有找到答案。謝謝。如何使用magit emacs更改回購?

+3

只需使用dired或書籤切換到其他文件。然後從那裏打電話給magit。 –

回答

10

你可以用前綴-arg(C-u)調用magit-status,它會提示你輸入git倉庫。所以,如果你的鍵綁定是magit-statusC-X 克,你可以做C-ùC-X 克,它會提示混帳回購協議。

您還可以設置變量magit-repo-dirs到一個目錄(不要C-H˚Fmagit-repo-dirsRET知道更多),它會提示你所有的Git倉庫中magit-repo-dirs

如果您使用的拋射,你可以使用一個事實,即它會記住你的項目目錄,並用它填充magit-repo-dirs,我有這個在我的init文件來實現這一

(eval-after-load "projectile" 
    '(progn (setq magit-repo-dirs (mapcar (lambda (dir) 
             (substring dir 0 -1)) 
             (remove-if-not (lambda (project) 
                 (file-directory-p (concat project "/.git/"))) 
                 (projectile-relevant-known-projects)))) 

     (setq magit-repo-dirs-depth 1))) 

以上projectile後執行的代碼加載。它通過執行(projectile-relevant-known-projects)獲得projectile已知的項目列表,通過它們迭代並將具有.git/文件夾的項目添加到magit-repo-dirs,它也將magit-repo-dirs-depth設置爲1,因此magit只在頂級目錄中查找git repos。

3

John Wiegley有一個名爲「Springboard」的包可能對你有用。

https://github.com/jwiegley/springboard

這取決於helm和/或ido,它允許你可能是在不同的目錄中的文件爲準文件的基礎上執行任意命令目前在活動的緩衝區。這是一個有點難以說明它在一個非詳細方式(自述解釋得很好),只是用你的問題爲例:

  • 假設你正在處理的文件1.el是的一部分一個git回購 ,但你想運行magit-status爲一個單獨的文件2.el其中 是在另一個回購一起。

  • 使用M-x springboardhelmido-switch-bufferido
    給你的候選文件列表。

  • 通過關注2.el(但不選擇它),那麼你可以調用
    任意命令,如果你是該文件的 目錄中工作。

  • 所以,如果你專注於2.el然後調用magit-status從 候選名單,你會得到正常的magit-status窗口 與該文件2.el相關的回購,然後,一旦你 已經完成與合作您可以退出magit,1.el 將成爲活動緩衝區,並且所有內容都將與調用springboard之前一樣。

這是非常有用的。

+0

謝謝@jhrr。我會試一試。 – cyrillk

5

我發現,如果你使用的彈丸,最簡單的就是剛剛設置如下:

(setq projectile-switch-project-action 'projectile-vc) 

現在你可以使用C-ppsprojectile-switch-project),然後它會立即調用projectile-vc,而如果您只需在項目根目錄中安裝magit即可調用magit-status。簡單!