我需要存儲git回購的當前狀態。後來我需要回到國家。保存當前git狀態的回購
保存的狀態應包含當前分支並對其進行更改。
例子:
- 我分支
master
和已經修改foo.py. - 保存狀態
- 修改回購:例如:結賬其他分支。
- 返回狀態:切換到掌握和還原修改foo.py
AFAIK stash
或臨時黨支部不會幫助這裏,因爲分支名被不保存。
我可以接受管道命令,因爲保存和恢復將在腳本中完成。
我需要存儲git回購的當前狀態。後來我需要回到國家。保存當前git狀態的回購
保存的狀態應包含當前分支並對其進行更改。
例子:
master
和已經修改foo.py.AFAIK stash
或臨時黨支部不會幫助這裏,因爲分支名被不保存。
我可以接受管道命令,因爲保存和恢復將在腳本中完成。
使用git stash
將保存狀態:它提出了兩個提交不屬於「關於」任何分支(他們通過特殊refs/stash
名稱,而不是發現的),包含索引的狀態,並且狀態你的工作樹。然後它使用git reset --hard
來擺脫任何工作樹和索引更改,使安全更改分支。
stash
不保存的狀態的一個狀態是分支的名稱,如果有的話,您在儲藏時保存的分支的名稱。
要保存,你需要運行git symbolic-ref HEAD
(使用--short
得到一個分支名,並注意它退出非零如果HEAD
不是象徵性的參考,即是目前「分離」;在這種情況下,你可能需要將當前提交ID保存在某個地方,可能在參考中以保護它)。
注意git stash save
會做什麼,如果沒有狀態保存,所以明智的做法是驗證refs/stash
存在和git stash save
步驟之後,點到一個新的和不同的提交-ID。 (在腳本中這樣做並不太困難:使用git rev-parse -q --verify refs/stash
來獲取新的提交ID,並在save
之前使用它以獲取舊的提交ID。與git symbolic-ref
一樣,如果參考不存在,它將退出非零。)
或者,三個提交如果使用git stash save -u
或git stash save -a
。第三次提交包含的文件git通常只剩下:未跟蹤和忽略的文件。詳情請參閱git stash
documentation。
謝謝,你理解我的問題,解決方案看起來不錯。 – guettli
爲什麼不這樣做呢? – Holloway
這正是隱藏的東西 –
做另一個克隆?然後,你可以做任何你喜歡的事情,並保證原始克隆就像你離開它一樣。另一方面,我只是在工作分支上做一個臨時提交foo,切換到其他東西,然後切換回我的工作分支,當我完成其他的東西。當您恢復工作以完全恢復狀態時,您總是可以重置分支git reset HEAD〜1。 – slobobaby