第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何以編程方式確定是否存在未提交的更改?

如何以編程方式確定是否存在未提交的更改?

Git
慕雪6442864 2019-12-12 14:12:15
在Makefile中,如果有未提交的更改(在工作樹或索引中),我想執(zhí)行某些操作。最干凈,最有效的方法是什么?在一種情況下以零返回值而在另一種情況下以零返回值的退出命令將適合我的目的。我可以運(yùn)行g(shù)it status輸出并將其通過(guò)管道傳輸grep,但是我覺得必須有更好的方法。
查看完整描述

2 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

在OP 丹尼爾Stutzbach指出,在評(píng)論這個(gè)簡(jiǎn)單的命令git diff-index為他工作:


git diff-index --quiet HEAD --

如果在bash腳本中使用命令,則可以看到“ 如何檢查命令是否成功? ”:


git diff-index --quiet HEAD -- || echo "untracked"; // do something about it

注:如評(píng)論由安東尼Sottile


git diff-index HEAD ...將在沒有提交的分支(例如新初始化的存儲(chǔ)庫(kù))上失敗。

我發(fā)現(xiàn)的一種解決方法是git diff-index $(git write-tree) ...


并haridsv指出在評(píng)論即git diff-files上一個(gè)新的文件,不檢測(cè)它作為一個(gè)差異。

較安全的方法似乎是先git add在文件規(guī)格上運(yùn)行,然后再git diff-index查看運(yùn)行前是否將任何內(nèi)容添加到索引中g(shù)it commit。


git add ${file_args} && \

git diff-index --cached --quiet HEAD || git commit -m '${commit_msg}'

而6502在評(píng)論中報(bào)告:


我碰到的一個(gè)問題是,這git diff-index將告訴我們,除了文件的時(shí)間戳記以外,實(shí)際上什么也沒有。

運(yùn)行g(shù)it diff一次即可解決問題(令人驚訝的是,git diff實(shí)際上確實(shí)更改了沙箱的內(nèi)容,這意味著.git/index)


如果git 在docker中運(yùn)行,也會(huì)出現(xiàn)這些時(shí)間戳問題。


原始答案:


“以編程方式”意味著從不依賴瓷器命令。

始終依靠管道命令。


另請(qǐng)參見“ 使用Git檢查臟索引或未跟蹤的文件 ”以了解替代方法(如git status --porcelain)


您可以從撰寫本文時(shí)所寫的新“ require_clean_work_tree函數(shù) ”中獲得啟發(fā);)(2010年10月上旬)


require_clean_work_tree () {

    # Update the index

    git update-index -q --ignore-submodules --refresh

    err=0


    # Disallow unstaged changes in the working tree

    if ! git diff-files --quiet --ignore-submodules --

    then

        echo >&2 "cannot $1: you have unstaged changes."

        git diff-files --name-status -r --ignore-submodules -- >&2

        err=1

    fi


    # Disallow uncommitted changes in the index

    if ! git diff-index --cached --quiet HEAD --ignore-submodules --

    then

        echo >&2 "cannot $1: your index contains uncommitted changes."

        git diff-index --cached --name-status -r --ignore-submodules HEAD -- >&2

        err=1

    fi


    if [ $err = 1 ]

    then

        echo >&2 "Please commit or stash them."

        exit 1

    fi

}


查看完整回答
反對(duì) 回復(fù) 2019-12-12
?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

雖然其他解決方案非常徹底,但是如果您想要快速又臟的東西,請(qǐng)嘗試以下操作:


[[ -z $(git status -s) ]]

它只是檢查狀態(tài)摘要中是否有任何輸出。


查看完整回答
反對(duì) 回復(fù) 2019-12-12
?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

git diff --exit-code如有任何更改,將返回非零值;git diff --quiet一樣,沒有輸出。由于您要檢查工作樹和索引,因此請(qǐng)使用


git diff --quiet && git diff --cached --quiet

要么


git diff --quiet HEAD

任何人都會(huì)告訴您是否存在未提交的更改。


查看完整回答
反對(duì) 回復(fù) 2019-12-12
  • 2 回答
  • 0 關(guān)注
  • 761 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)