我們有時候會接到一些臨時的工作,這些工作時常在計畫之外,比如現在乙個bug來了,你需要及時修復。但你從上次發布以後又改了許多,並且有的改動已經stage,有的已經commit,有的已經push,這怎麼辦呢?
為了澄清我們的討論,我們先看一張圖
那麼就有四種情況要處理:
1,working directory changed, but not staged
2,staged but not commit
3,commit but not push to remote
4,your remote repo changed but not send pull request
對於未提交到本地庫的**,我們可以使用git stash命令,將working directory和index(stage)的改動暫存起來。
git stash list #列出所有stash這種情況下最好新建立乙個branch來修改bug。這個branch就是基於上次的release。git stash #將當前的work directory和index的改動暫存起來
git stash drop stash@ #將0號stash刪除
git statsh clear #刪除所有stash
git branch –v #顯示當前的branchgit log –10 –oneline #顯示log
git branch release #基於sha1的commit新建乙個branch
git checkout release #切換到release這個branch
git branch –d release #刪除乙個branch
git merge master release #release的改到merge到master這種情況,你還是新建乙個branch去修改bug,改動後上傳到your remote,然後在pull request的時候選擇哪個修改bug的branch。
有時候我想臨時忽略乙個檔案,不要讓他被track,比如我的在本地訪問amazon s3比較慢,我想給我的python**加乙個臨時cache,我不想提交(追蹤這個檔案的改動)這個檔案。
我們可以:
git update-index --assume-unchanged #臨時ingore乙個檔案的改動git update-index --no-assume-unchanged #繼續track這個檔案
對Git工作原理的一些理解
網上有很多關於git的教程,或copy或不完整,且大多停留於表面,看完之後對git僅有非常淺顯的了解,有的只是對幾條簡單的命令進行了敘述。本文將結合git的設計原理和實現方法,幫助讀者理解git,減少讀者的學習成本。git與其它版本控制系統 包括 subversion 和近似工具 的主要差別在於 g...
一些 git 命令
git init 建立版本倉庫 git add 當前目錄下的所有檔案新增到倉庫 git add 檔名 指定檔案新增到倉庫 git commit m 本次提交的說明 把檔案提交到倉庫,git add可以多次呼叫,最後commit提交到倉庫,相當於把當前狀態儲存下來,可以從最近一次的commit恢復檔案...
git 一些記錄
1 git commit a 此時會進入vim編輯模式,可以i鍵輸入提交備註,完成備註後通過esc退出編輯模式,並輸入 q 不儲存並退出,或者 wq 儲存並退出。2 出現如下報錯時 if no other git process is currently running,this probably ...