我需要從其他目錄獲取已修改文件的列表。func main() { log.Println("Starting Site map") dir := "/media/my_path/ubuntu/" git0 := "git --git-dir=" + dir + ".git --work-tree=" + dir + " status" log.Println(git0) //<-- works when pasted in console cmd0 := exec.Command("git", git0) status0, err := cmd0.Output() if err != nil { log.Println(whereami.WhereAmI(), err) } log.Println(status0) git := "git --git-dir=" + dir + ".git --work-tree=" + dir log.Println(git) cmd := exec.Command("git", "status", git) status, err := cmd.Output() if err != nil { log.Println(whereami.WhereAmI(), err) } log.Println(status) log.Println("End Site map")}I 有以下輸出:2021/05/24 11:38:07 Starting Site map2021/05/24 11:38:07 git --git-dir=/media/my_path/ubuntu/.git --work-tree=/media/my_path/ubuntu/ status2021/05/24 11:38:07 File: main.go Function: main.main Line: 19 exit status 12021/05/24 11:38:07 []2021/05/24 11:38:07 git --git-dir=/media/my_path/ubuntu/.git --work-tree=/media/my_path/ubuntu/2021/05/24 11:38:07 File: main.go Function: main.main Line: 28 exit status 1282021/05/24 11:38:07 []2021/05/24 11:38:07 End Site map此命令:粘貼到控制臺(tái)時(shí)工作正常。git --git-dir=/media/my_path/ubuntu/.git --work-tree=/media/my_path/ubuntu/ status預(yù)期的結(jié)果將是包含已修改文件的數(shù)組。
2 回答

慕工程0101907
TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
exec.Command
接受一個(gè)命令和一些參數(shù)。
你用“git”來稱呼它,然后是“git...”。作為參數(shù),其執(zhí)行方式如下
git "git --git-dir …"
這是行不通的。
不要在參數(shù)中重復(fù)該命令。
使用單個(gè)參數(shù)。
提供 git 命令的路徑。
每個(gè)參數(shù)都應(yīng)該是一個(gè)單獨(dú)的字符串逗號(hào)分隔。
exec.Command("/path/to/git", "--git-dir=" + dir + ".git", "--work-tree=" + dir, "status")

慕森王
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
這對(duì)我有用:
package main
import (
"os"
"os/exec"
)
func main() {
c := exec.Command("git", "status")
c.Dir = "/media/my_path/ubuntu"
c.Stdout = os.Stdout
c.Run()
}
https://golang.org/pkg/os/exec#Cmd.Dir
- 2 回答
- 0 關(guān)注
- 143 瀏覽
添加回答
舉報(bào)
0/150
提交
取消