Git 如何針對其他路徑下的 Repository 執行指令

一般來說我們都會直接在專案 repository 的所在目錄下執行 git 指令,今天同事問的這個問題就是因為不是一般的人為操作:同事使用 Jenkins build 出 binary 後打算將 dll copy 到不同 git repository 下進行版控,所以產生針對非當前路徑執行 git 指令的需求,所幸強大的 Git 也支援這樣的使用情境,就來看看該怎麼使用

方法一

  • 指定 .git folder 及 work-tree(工作目錄)
  • 語法

    git –git-dir={專案路徑}.git\ –work-tree={專案路徑} {git 指令}

  • 範例:

    在 c 磁碟對 d 磁碟下的 git repository 下指令

    1. git status:確認是否有變更

      git --git-dir=D:\Git\0512\.git\ --work-tree=D:\Git\0512\ status
      

      1m1status

    2. git add :將變更加入 git index

      git --git-dir=D:\Git\0512\.git\ --work-tree=D:\Git\0512\ add .
      

      2m1add

    3. git commit:將變更加入版控

      git --git-dir=D:\Git\0512\.git\ --work-tree=D:\Git\0512\ commit -m "remote done"
      

      3m1commit

方法二

  • 使用 -C 參數指定 work-tree(工作目錄)
  • 語法

    git -C {專案路徑} {git 指令}

  • 範例:

    在 c 磁碟對 d 磁碟下的 git repository 下指令

    1. git status:確認是否有變更

      git -C D:\Git\0512 status
      

      4m2status

    2. git add :將變更加入 git index

      git -C D:\Git\0512 add .
      

      5m2add

    3. git commit:將變更加入版控

      git -C D:\Git\0512 commit -m "remote ok"
      

      6m2commit

參考資訊

  1. Run git commit from another directory