[英]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
它們。 在這種情況下,您可能需要解決沖突,但它仍然證明存儲對於存儲庫是全局的,而不是分支的本地存儲。
為此使用一些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
}
注意:別名優先於函數。 確保gco
是gco
。
如果which gco
顯示類似gco: aliased to git checkout
你將不得不使用其他東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.