git 主要通過操作工作區、暫存區、版本庫來實現**管理。
下面這個圖展示了工作區、版本庫中的暫存區和版本庫之間的關係:
注:以上來自git菜鳥教程。、
git reset --soft head~ :將當前head指向的分支回退到上次提交後的狀態,並不改變暫存區以及工作目錄的內容,撤銷當前git commit經常使用這個命令;
git reset --mixed head~ 或者 git reset head~ (git reset 命令預設引數為 --mixed):將當前head指向的分支回退到上次提交後的狀態,取消暫存區的內容,但不改變工作目錄的內容,與git add 功能剛好相反;
git reset --hard head~ :將當前head指向的分支回退到上次提交後的狀態,取消暫存區的內容,同時工作目錄的內容也會被重新覆蓋;
注:head其實就是乙個指向當前分支的指標,head~就是指當前分支上次提交版本
git reset 【--mixed】【head】 filename (【--mixed】和【head】可以省略): 將filename 檔案取消暫存;
git reset --hard 【head】filename (【head】可以省略): 將filename 檔案取消暫存,並撤銷工作目錄中該檔案的修改,與這條命令與 git checkout -- filename 功能類似;
切換當前head指向的分支,切換分支必須先確保本地沒有未提交的暫存或者修改。
新建分支branch,並切換當前head指向的分支branch,執行這條命令必須先確保本地沒有未提交的暫存或者修改。
如果後面有【remotename】 /【branch】 那麼新建的分支就會自動最終遠端伺服器上branch1分支
設定本地當前分支自動追蹤遠端伺服器branch分支;
將filename 檔案取消暫存,並撤銷工作目錄中該檔案的修改,與這條命令與 git reset --hard filenam 功能類似;
上圖有兩個分支origin 和 mywork,現在將兩個分支合併
執行 git checkout mywork
git merge origin
git checkout 會切換分支到mywork,git merge 會找到 當前分支與origin 兩個分支共同祖先,圖中c2這個節點,以c2為基礎,將mywork與origin合併生成下圖的c7節點。這種叫做git merge 三方合併。
執行 git checkout mywork
git rebase origin
git checkout 會切換分支到mywork,git rebase 會將origin分支上的更改在mywork分支上重現,形成下圖所示的c5'和c6'。
下面就可以執行git merge操作
git checkout origin
git merge mywork
上面命令先切換到origin分支,再將mywork分支合入origin,那麼上圖中origin和mywork會同時指向c6',這種也叫作git merge 單線合入。
在執行 git branch -d mywork 可以刪除mywork分支;
儲藏用於當**寫了一半,然而又不想將一半工作提交,這時候可以使用git stash將當前工作暫時儲存起來。
git stash :將當前分支裡做的工作儲藏
git stash list :檢視當前儲藏的記錄
應用儲藏記錄中的某乙個,預設為最近儲藏的記錄,--index指將儲藏時候暫存區的內容再次暫存;
git stash branch 【branch】: 恢復儲藏區的內容到新分支branch上;
git 命令學習
mkdir test 建立test資料夾 cd test 進入test檔案 git init 建立空白的git檔案 ls 檢視當前目錄的檔案內容 cd 返回上一目錄 vi xx.txt 編輯乙個txt文件 git status 檢視當前狀態 git commit m add add.txt m的後面...
學習Git命令
git 倉庫的一次commit記錄所提交目錄下所有檔案的快照,感覺像是大量的複製和貼上,但git並非如此!git 希望提交的記錄盡可能的輕量,所以每次進行提交時,它不會簡單地複製整個目錄,條件允許的情況下,git會把提交壓縮成從 倉庫中的乙個版本到下乙個版本的變化合集,也叫作 增量delta git...
Git命令學習
列出當前版本號 列出遠端倉庫 git remote v 選項,列出遠端倉庫位址 3.新增遠端倉庫 git remote add pb https address檢查當前檔案狀態 git status遠端倉庫的移除和重新命名 git remote rename firstname changednam...