idea git 高級操做(checkout、reset、revert)

git reset

切換到指定分支,這裏以master爲例,下面的操做都是在master 分支上操做html

git checkout masterjava

  • --soft 緩存區和工做目錄都不會被改變
  • --mixed 默認選項。緩存區和你指定的提交同步,但工做目錄不受影響
  • --hard 緩存區和工做目錄都同步到你指定的提交

git reset HEAD~1

介紹 :撤銷commit history 中的內容git

雖然在調用時加上 --hard選項能夠令git reset成爲一個危險的命令(譯註:可能致使工做目錄中全部當前進度丟失!),但本例中工做目錄內的文件並不會被修改。不加選項地調用git reset並不危險——它只會修改暫存區域github

注:能夠用這個操做來 刪除遠程倉庫的最近一次錯誤提交 示例操做:spring

git add .
git commit -m "提交1"
#push完成,遠程倉庫 commit history已經有記錄了
git push 
#刪除最近一次的commit 操做,這個操做是在本地的,將git HEAD 指針定位到上次提交之前
git reset HEAD~1
#強制reset 的操做,在遠程倉庫中同步,達到刪除錯誤push 的目的
git push --force
  • 圖解:
  • 執行命令前:

<img src="https://ws3.sinaimg.cn/large/005AQjvJly1fvenbiduw4j30sl0g7mz2.jpg" />緩存

  • 執行命令後:

<img src="https://wx4.sinaimg.cn/large/005AQjvJly1fvendoehaaj30ti0hl0uq.jpg" />bash

git reset --mixed HEAD

示例操做:app

git add .
git add .
#刪除緩衝區add提交,工做空間不變
git reset --mixed HEAD

注:能夠在執行git reset --mixed HEAD先後調用 git status 查看狀態,方便對比ide

git reset --hard HEAD

示例操做:工具

git add .
git add .
git commit -m "工做信息"
#刪除 (緩衝區add提交) 、(commit history 提交)、(工做空間)
git reset --hard HEAD

注:能夠在shift+alt+k 在執行先後,查看commit history

git reset --soft HEAD~1

示例:

git add .
git add .
git commit -m "工做信息"
#只是刪除 (緩衝區add提交) 
git reset --hard HEAD

注:能夠在shift+alt+k 在執行先後,查看commit history

git reset 圖解

<img src="https://ws1.sinaimg.cn/large/005AQjvJly1fveohiumbsj30sw0h3dhu.jpg"/>

git checkout

默認是從緩存(Stage)中checkout文件

#提交 已經修改過的User.java
git add src/com/uu/model/User.java
#從緩存中檢出User.java, 複寫工做空間的User.java
git checkout -- src/com/uu/model/User.java

git checkout -f HEAD

git add src/com/uu/model/User.java
git commit -m "工做信息"

#從master 遊標中檢出 User.java 
git checkout -f HEAD -- src/com/uu/model/User.java

git checkout master(分支名)

切換分支

git revert

  • 使用idea默認的可視化工具便可(命令行缺點:文件路徑可能太長,不易操做)

git stash (暫存)

適用場景: 在master分支修改了東西,但沒commit(也不想commit,可能沒修改好),此時領導讓你修改two分支上的bug;切換分支check out 必需要commit ,不然會丟失更改; 此時更改的作法是使用stash.

#查詢主分支狀態,暫存修改
git status
git stash
#切換到two分支
git checkout two
# 修改bug 略過,切換回主分支
git checkout master
# 查看暫存區 
git stash list
#將暫存apply到主分支
git stash apply stash@{0}
#刪除暫存
git stash drop stash@\{0\}

注:也能夠使用:git stash pop,apply暫存後,自動刪除

參考文章

Git分支高級管理[四] <br/> 4.1 圖解 Git 命令<br/> git 經常使用命令(含刪除文件) git-book

相關文章
相關標籤/搜索