git config命令
git help命令
git init命令
git add命令
git clone命令
git status命令
git diff命令
git commit命令
git reset命令
git rm命令
git mv命令
git branch命令
git checkout命令
git merge命令
git mergetool命令
git log命令
git stash命令
git tag命令
git fetch命令
git pull命令
git push命令
git remote命令
git submodule命令
git show命令
git shortlog命令
git describe命令
git rebase命令
Git隱藏(Stash)操作
假設您正在爲產品新的功能編寫/實現代碼,當正在編寫代碼時,突然出現軟件客戶端升級。這時,您必須將新編寫的功能代碼保留幾個小時然後去處理升級的問題。在這段時間內不能提交代碼,也不能丟棄您的代碼更改。 所以需要一些臨時等待一段時間,您可以存儲部分更改,然後再提交它。
在Git中,隱藏操作將使您能夠修改跟蹤文件,階段更改,並將其保存在一系列未完成的更改中,並可以隨時重新應用。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: main.py
no changes added to commit (use "git add" and/or "git commit -a")
現在,要切換分支以進行客戶升級,但不想提交一直在做的工作; 那麼可以把當前工作的改變隱藏起來。 要將一個新的存根推到堆棧上,運行git stash
命令。
$ git stash
Saved working directory and index state WIP on master: ef07ab5 synchronized with the remote repository
HEAD is now at ef07ab5 synchronized with the remote repository
現在,工作目錄是乾淨的,所有更改都保存在堆棧中。 現在使用git status
命令來查看當前工作區狀態。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
現在,可以安全地切換分支並在其他地方工作。通過使用git stash list
命令來查看已存在更改的列表。
$ git stash list
stash@{0}: WIP on master: ef07ab5 synchronized with the remote repository
假設您已經解決了客戶升級問題,想要重新開始新的功能的代碼編寫,查找上次沒有寫完成的代碼,只需執行git stash pop
命令即可從堆棧中刪除更改並將其放置在當前工作目錄中。
$ git status -s
Administrator@MY-PC /D/worksp/sample (master)
[jerry@CentOS project]$ git stash pop
上述命令將產生以下結果:
$ git stash pop
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: main.py
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (e713780380632c142ed5833a9087aca883a826fa)
Administrator@MY-PC /D/worksp/sample (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: main.py
no changes added to commit (use "git add" and/or "git commit -a")
可以看到,工作區中修改的文件(main.py
)又顯示了。現在我們就可以繼續編寫上次編寫了未完成的代碼。