请问怎么在 powershell 里获取到 git push 的执行结果?

2022-07-13 14:17:55 +08:00
 Rebron1900

因为最新笔记软件换了 Logseq ,同步方案用的 Git ,用了一个脚本自动提交修改后的笔记库。

但是由于经常在公司和家里切换,回家里后经常提示需远端库更新,需要先 pull 一下才可以重新 push 。

我现在修改脚本如下,想获取 git push 的执行结果,如果报错了就执行一下 git pull ,但是这种写法似乎获取不到执行结果,不知道怎么回事。

希望大佬们指点一下。

function Start-GitAutoCommitAndPush {
    [string] $status = (& git status)
    if (!$status.Contains("working tree clean")) {
        git add .
        git commit -m "auto commit"
    }
    if ($PushToServer) {
    	# 执行 git push ,并记录执行结果
        [string] $output = (&  git push $Server $Branch)        
        # 如果执行结果里提示需要 git pull,则 git pull 一下。
        if(!$output.Contains("git pull")){
            git pull
        }
    }
}
1053 次点击
所在节点    问与答
5 条回复
renmu123
2022-07-13 14:20:16 +08:00
没必要获取结果,你就先 pull 然后 push 就完事了
Rebron1900
2022-07-13 14:21:25 +08:00
@renmu123 这样不太好把?我切换环境后只有第一次需要 pull
moen
2022-07-13 14:41:39 +08:00
git 的输出是写到 stderr 的,所以得写成 `& git push $Server $Branch 2>&1`
Rebron1900
2022-07-13 14:48:40 +08:00
@moen [string] $output = (& git push $Server $Branch 2>&1) 意思是这样?
Rebron1900
2022-07-13 14:58:05 +08:00
@moen 谢谢,解决了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865904

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX