簡體   English   中英

Git:切換到隱藏更改的分支時發出警告

[英]Git: Warn when switching to a branch that has stashed changes

有沒有辦法讓git在切換到隱藏更改的分支時自動發出警告?

我正在尋找類似的東西:

$ git checkout my-branch
Switched to branch 'my-branch'
Stashed changes present: stash@{0}: WIP on my-branch: 836b45a My HEAD commit

所以我不會忘記幾天后回到項目時已經在分支機構開始的工作。

分支沒有“藏匿”。

存儲只是一個補丁列表,您可以在任何地方應用。

如何將警告附加到更像分支中立的命令,如git status呢?

你有2414b45 (git 1。6。4,2009年6月)

在bash提示符中顯示存在的隱藏更改。

GIT_PS1_SHOWSTASHSTATE設置GIT_PS1_SHOWSTASHSTATE空值時,在__git_ps1輸出中添加' $ '以顯示隱藏的更改。

檢查存儲是否有條目的代碼來自'git-stash.sh'。

所以嘗試:

export GIT_PS1_SHOWSTASHSTATE=1 # Unix
set GIT_PS1_SHOWSTASHSTATE=1 # Windows

git stash最初是由Nanako Shiraishi在提交f2c66ed (git 1.5.3,2007年6月)中添加到git中的。

它只是一個非常新近的git(2.4.2,2014年4月, 提交ed178ef ),它試圖顯示一個警告,只關於你當前的索引(不論你當前的分支):

Cannot apply stash: Your index contains uncommitted changes.

stash :要求應用干凈的索引

如果您在索引中已暫存內容並運行“ stash apply ”,我們可能會遇到沖突並將新條目放入索引中。 在那時恢復到原始狀態很困難,因為像“ git reset --keep ”這樣的工具會吹走任何上演的東西。 我們可以通過在有階段性更改時拒絕申請來使此更安全。

我們可以在這里提供更好的工具,因為“ git stash apply ”應該只寫入索引的沖突(所以我們知道任何階段0條目都可能是寶貴的)。
但它是奇怪的鴨子; 大多數“mergy”命令將更新干凈合並的條目的索引,並且不值得更新我們的工具來支持這個不太可能感興趣的用例(除此之外,我們仍然需要阻止“ stash apply --index ”的臟索引stash apply --index ”,因為這種情況下, 產生歧義)。

盡管如此,這仍然是在1937610 (git 2。4。6,2015年6月)中提交的


不,這是不可能的,僅僅因為在Git中存儲的更改與分支無關。 也就是說,你可以在分支A上輕松stash未提交的更改,並且當存在於分支B上時stash pop它們。 在這種情況下,您可能需要解決沖突,但它仍然證明存儲對於存儲庫是全局的,而不是分支的本地存儲。

另請參閱問題是git stash分支特定的還是整個存儲庫? 或者為什么每個分支的git存儲不是唯一的?

為此使用一些bash怎么樣?

您可以添加~/.bashrc類的內容:

gco() {
    git checkout $@
    local CURRENT_BRANCH=$(git branch | grep '*' | awk '{ print $2 }')
    git stash list | grep $CURRENT_BRANCH
    if [ $? -eq 0 ]; then
        echo Hello! The current branch has stashed content!
    fi
}

注意:別名優先於函數。 確保gcogco

如果which gco顯示類似gco: aliased to git checkout你將不得不使用其他東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM