V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Rebron1900
V2EX  ›  问与答

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

  •  
  •   Rebron1900 · 2022-07-13 14:17:55 +08:00 · 1014 次点击
    这是一个创建于 892 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为最新笔记软件换了 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
            }
        }
    }
    
    5 条回复    2022-07-13 14:58:05 +08:00
    renmu123
        1
    renmu123  
       2022-07-13 14:20:16 +08:00 via Android
    没必要获取结果,你就先 pull 然后 push 就完事了
    Rebron1900
        2
    Rebron1900  
    OP
       2022-07-13 14:21:25 +08:00
    @renmu123 这样不太好把?我切换环境后只有第一次需要 pull
    moen
        3
    moen  
       2022-07-13 14:41:39 +08:00   ❤️ 1
    git 的输出是写到 stderr 的,所以得写成 `& git push $Server $Branch 2>&1`
    Rebron1900
        4
    Rebron1900  
    OP
       2022-07-13 14:48:40 +08:00
    @moen [string] $output = (& git push $Server $Branch 2>&1) 意思是这样?
    Rebron1900
        5
    Rebron1900  
    OP
       2022-07-13 14:58:05 +08:00
    @moen 谢谢,解决了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2422 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:31 · PVG 10:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.