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

目錄 搜尋
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
文字

Name

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

概要

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時(shí)要錄制工作目錄和索引的當(dāng)前狀態(tài),但想回到干凈的工作目錄。該命令保存您的本地修改,并恢復(fù)工作目錄以匹配HEAD提交。

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

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

選項(xiàng)

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(在工作樹(shù)和索引中)。<message>部分是可選的,并給出說(shuō)明以及隱藏狀態(tài)。

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

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

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

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

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

--patch選項(xiàng)意味著--keep-index。您可以使用--no-keep-index來(lái)覆蓋此。

list <options>

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

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

該命令使用適用于該git log命令的選項(xiàng)來(lái)控制顯示內(nèi)容和方式。參見(jiàn) git-log [1]。

show <stash>

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

pop --index <stash>

從存儲(chǔ)列表中刪除一個(gè)單獨(dú)的存儲(chǔ)狀態(tài)并將其應(yīng)用于當(dāng)前工作樹(shù)狀態(tài)的頂部,即進(jìn)行反操作git stash save。工作目錄必須與索引匹配。

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

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

當(dāng)沒(méi)有<stash>給出時(shí),stash@{0}假定,否則<stash>必須是表格的參考stash@{<revision>}。

apply --index <stash>

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

branch <branchname> <stash>

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

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

clear

刪除所有的存儲(chǔ)條目。請(qǐng)注意,這些條目將會(huì)被修剪,并且可能無(wú)法恢復(fù)(請(qǐng)參閱Examples下面的可能策略)。

drop -q|--quiet

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

create

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

store

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

討論

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

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

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

例子

拉進(jìn)一棵臟的樹(shù)

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

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

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

中斷的工作流程

當(dāng)你處于某種事情的中間時(shí),你的老板進(jìn)來(lái)并要求你立即解決問(wèn)題。傳統(tǒng)上,您會(huì)提交一個(gè)臨時(shí)分支來(lái)存儲(chǔ)您的更改,然后返回到原始分支以進(jìn)行緊急修復(fù),如下所示:

# ... 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以簡(jiǎn)化上述內(nèi)容,如下所示:

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

測(cè)試部分提交

您可以git stash save --keep-index在您想要在工作樹(shù)中進(jìn)行兩項(xiàng)或更多項(xiàng)提交時(shí)使用,并且您希望在提交前測(cè)試每項(xiàng)更改:

# ... 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'

恢復(fù)被錯(cuò)誤清除/丟棄的存儲(chǔ)條目

如果您錯(cuò)誤地放下或清除存儲(chǔ)條目,則無(wú)法通過(guò)正常安全機(jī)制恢復(fù)。但是,您可以嘗試使用以下咒語(yǔ)來(lái)獲取仍在您的存儲(chǔ)庫(kù)中但不能再訪問(wèn)的存儲(chǔ)條目列表:

git fsck --unreachable |grep commit | cut -d\  -f3 |xargs git log --merges --no-walk --grep=WIP
上一篇: 下一篇: