亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
characters

Name

git-stash  - 將變化存儲在臟的工作目錄中

概要

git stash list [<options>]git stash show [<stash>]git stash drop [-q|--quiet] [<stash>]git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]git stash branch <branchname> [<stash>]git stash save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]             [-u|--include-untracked] [-a|--all] [<message>]git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]             [-u|--include-untracked] [-a|--all] [-m|--message <message>]]             [--] [<pathspec>…]]git stash clear
git stash create [<message>]git stash store [-m|--message <message>] [-q|--quiet] <commit>

描述

使用git stash時要錄制工作目錄和索引的當前狀態(tài),但想回到干凈的工作目錄。該命令保存您的本地修改,并恢復工作目錄以匹配HEAD提交。

通過此命令隱藏的修改可以使用git stash list,檢查git stash show和恢復(可能在不同的提交之上)git stash apply。git stash沒有任何參數(shù)的調用相當于git stash save。默認情況下,存儲列為“WIP on branchname...”,但在創(chuàng)建存儲時,可以在命令行上提供更多描述性消息。

您創(chuàng)建的最新儲藏器存儲在refs/stash; 舊的存儲在這個引用的reflog中可以找到,并且可以使用通常的reflog語法來命名(例如stash@{0},最近創(chuàng)建的存儲,stash@{1}是之前的存儲,stash@{2.hours.ago}也是可能的)。通過指定存儲索引也可以引用Stache(例如,整數(shù)n等價于stash@{n})。

選項

save -p|--patch-k|--no-keep-index] -u|--include-untracked -q|--quiet   push -p|--patch-k|--no-keep-index] -u|--include-untracked -q|--quiet --

將您的本地修改保存為新的stash entry并將它們回滾到 HEAD(在工作樹和索引中)。<message>部分是可選的,并給出說明以及隱藏狀態(tài)。

為了快速制作快照,您可以省略“推送”。在此模式下,不允許使用非選項參數(shù)來防止拼寫錯誤的子命令產(chǎn)生不需要的存儲條目。對此的兩個例外是stash -p作為 alias stash push -p和 pathspecs,它們在--消除歧義之后使用雙連字符。

當指定 pathspec 時git stash push,新存儲條目僅記錄與 pathspec匹配的文件的已修改狀態(tài)。索引條目和工作樹文件然后僅回滾到 HEAD中的這些文件的狀態(tài),從而留下與 pathspec 完全不匹配的文件。

如果使用該--keep-index選項,則已添加到索引的所有更改均保持不變。

如果使用該--include-untracked選項,則所有未跟蹤的文件也會被隱藏起來,然后進行清理git clean,使工作目錄處于非常干凈的狀態(tài)。如果使用該--all選項,則除了未跟蹤文件之外,還會隱藏和清除被忽略的文件。

使用--patch,您可以交互式地從 HEAD 和工作樹之間的差異中選擇區(qū)塊來隱藏。存儲條目的構建方式使其索引狀態(tài)與存儲庫的索引狀態(tài)相同,其工作樹僅包含交互式選擇的更改。所選的更改將從您的工作樹中回滾。請參閱 git-add [1]的“交互模式”部分了解如何操作該--patch模式。

--patch選項意味著--keep-index。您可以使用--no-keep-index來覆蓋此。

list <options>

列出您當前擁有的存儲條目。每個stash entry列表都以其名稱列出(例如,stash@{0}是最新的條目,stash@{1}是之前的條目等等),條目的當前分支的名稱以及條目所基于的提交的簡短描述。

stash@{0}: WIP on submit: 6ebd0e2... Update git-stash documentation
stash@{1}: On master: 9cc0589... Add git-stash

該命令使用適用于該git log命令的選項來控制顯示內容和方式。參見 git-log [1]。

show <stash>

顯示存儲條目中記錄的更改,作為隱藏內容和提交首次創(chuàng)建存儲條目時的提交之間的差異。當沒有<stash>給出時,它顯示最新的一個。默認情況下,該命令顯示diffstat,但它將接受已知的任何格式git diff(例如,git stash show -p stash@{1}以補丁形式查看第二個最新條目)。您可以使用 stash.showStat 和/或 stash.showPatch 配置變量來更改默認行為。

pop --index <stash>

從存儲列表中刪除一個單獨的存儲狀態(tài)并將其應用于當前工作樹狀態(tài)的頂部,即進行反操作git stash save。工作目錄必須與索引匹配。

應用狀態(tài)可能會因沖突而失敗; 在這種情況下,它不會從存儲列表中刪除。您需要git stash drop手動解決沖突,然后手動調用。

如果使用該--index選項,則嘗試不僅恢復工作樹的更改,而且還恢復索引的更改。但是,如果發(fā)生沖突(存儲在索引中,因此您不能再像原來那樣應用更改),這可能會失敗。

當沒有<stash>給出時,stash@{0}假定,否則<stash>必須是表格的參考stash@{<revision>}。

apply --index <stash>

pop,但不要從存儲列表中刪除狀態(tài)。不像pop,<stash>可能是任何看起來像由stash saveor 創(chuàng)建的提交stash create。

branch <branchname> <stash>

創(chuàng)建并檢出<branchname><stash>最初創(chuàng)建的提交開始的新分支,將記錄的更改應用<stash>到新的工作樹和索引。如果成功了,并且<stash>是表單的參考stash@{<revision>},則會丟棄該表單<stash>。如果沒有<stash>給出,則應用最新的一個。

如果您運行的分支由于沖突而git stash save發(fā)生了足夠多的分支git stash apply失敗,這很有用。由于存儲條目應用于git stash運行時HEAD提交的頂部,因此它將恢復原始存儲狀態(tài)而不產(chǎn)生沖突。

clear

刪除所有的存儲條目。請注意,這些條目將會被修剪,并且可能無法恢復(請參閱Examples下面的可能策略)。

drop -q|--quiet

從存儲條目列表中刪除單個存儲條目。如果沒有<stash>給出,它將刪除最新的一個。即stash@{0},否則<stash>必須是表單的有效存儲日志引用stash@{<revision>}。

create

創(chuàng)建一個存儲條目(這是一個常規(guī)的提交對象)并返回它的對象名稱,而不將它存儲在ref命名空間的任何位置。這旨在用于腳本。這可能不是你想要使用的命令; 見上面的“保存”。

store

將通過git stash create(這是一個懸掛的合并提交)創(chuàng)建的給定的存儲存儲在存儲引用中,更新存儲引用日志。這旨在用于腳本。這可能不是你想要使用的命令; 見上面的“保存”。

討論

存儲條目表示為其記錄工作目錄狀態(tài)的提交,其第一個父HEAD項是創(chuàng)建條目時的提交。第二個父節(jié)點的樹在創(chuàng)建條目時記錄索引的狀態(tài),并將其作為提交的子節(jié)點HEAD。血統(tǒng)圖看起來像這樣:

       .----W      /    /-----H----I

提交的地方H在于HEAD提交,I它記錄了索引的狀態(tài),并且W是一個提交,用于記錄工作樹的狀態(tài)。

例子

拉進一棵臟的樹

當你處于某種事情的中間時,你會發(fā)現(xiàn)上游的變化可能與你正在做的事情有關。當您的本地更改與上游的更改不沖突時,一個簡單的git pull將讓您前進。

但是,在某些情況下,您的本地更改與上游更改發(fā)生沖突,并git pull拒絕覆蓋更改。在這種情況下,您可以隱藏您的更改,執(zhí)行拉動操作,然后取消擺放,如下所示:

$ git pull ...file foobar not up to date, cannot merge.$ git stash
$ git pull
$ git stash pop

中斷的工作流程

當你處于某種事情的中間時,你的老板進來并要求你立即解決問題。傳統(tǒng)上,您會提交一個臨時分支來存儲您的更改,然后返回到原始分支以進行緊急修復,如下所示:

# ... hack hack hack ...$ git checkout -b my_wip
$ git commit -a -m "WIP"$ git checkout master
$ edit emergency fix
$ git commit -a -m "Fix in a hurry"$ git checkout my_wip
$ git reset --soft HEAD^# ... continue hacking ...

您可以使用git stash以簡化上述內容,如下所示:

# ... hack hack hack ...$ git stash
$ edit emergency fix
$ git commit -a -m "Fix in a hurry"$ git stash pop
# ... continue hacking ...

測試部分提交

您可以git stash save --keep-index在您想要在工作樹中進行兩項或更多項提交時使用,并且您希望在提交前測試每項更改:

# ... hack hack hack ...$ git add --patch foo            # add just first part to the index
$ git stash save --keep-index    # save all other changes to the stash
$ edit/build/test first part
$ git commit -m 'First part'     # commit fully tested change
$ git stash pop                  # prepare to work on all other changes
# ... repeat above five steps until one commit remains ...$ edit/build/test remaining parts
$ git commit foo -m 'Remaining parts'

恢復被錯誤清除/丟棄的存儲條目

如果您錯誤地放下或清除存儲條目,則無法通過正常安全機制恢復。但是,您可以嘗試使用以下咒語來獲取仍在您的存儲庫中但不能再訪問的存儲條目列表:

git fsck --unreachable |grep commit | cut -d\  -f3 |xargs git log --merges --no-walk --grep=WIP
Previous article: Next article: