說明 | 時間 |
---|---|
首次發(fā)布 | 2018年10月14日 |
最近更新 | 2019年08月19日 |
撤銷更改
-
git checkout -- <文件>
丟棄工作區(qū)的改動 -
git reset HEAD <file>
把暫存區(qū)的修改撤銷掉(unstage)食拜,重新放回工作區(qū) -
git reset --hard HEAD^
從本地代碼庫強制回滾提交赐写,--soft
可以把回滾的代碼放到暫存區(qū)砚著。上一個版本用HEAD^
表示,上上一個版本就是HEAD^^
虑灰,當(dāng)然往上100個版本寫100個^
比較容易數(shù)不過來快骗,所以寫成HEAD~100
。 -
git reset --hard commit_id
強制回滾到指定提交院峡,可以是未來或過去的某次提交。
小結(jié):
-
HEAD
指向的版本就是當(dāng)前版本系宜,因此,Git允許我們在版本的歷史之間穿梭发魄,使用命令git reset --hard commit_id
盹牧。 - 穿梭前,用
git log
可以查看提交歷史励幼,以便確定要回退到哪個版本汰寓。 - 要重返未來,用
git reflog
查看命令歷史苹粟,以便確定要回到未來的哪個版本有滑。
分支的創(chuàng)建和合并
git checkout -b 分支名
創(chuàng)建并切換到該分支;相等于下面git branch 分支名
+git checkout 分支名
兩個命令嵌削。-
git branch 分支名
創(chuàng)建分支-r 查看遠(yuǎn)程分支列表 -a, --all 列出遠(yuǎn)程跟蹤及本地分支 -d, --delete 刪除完全合并的分支 -D 強行刪除 --list 列出分支名 -f, --force 強制創(chuàng)建毛好、移動/重命名望艺、刪除
git checkout 分支名
切換分支-
git merge
合并指定分支到當(dāng)前分支,如git merge dev
--no-ff 用普通模式合并肌访,合并后的歷史有分支找默,能看出來曾經(jīng)做過合并,而`fast forward`合并就看不出來曾經(jīng)做過合并吼驶。如`git merge --no-ff -m "merge with no-ff" dev`
比較文件差異
git diff 比較工作區(qū)與暫存區(qū)的區(qū)別
git diff --cache 比較暫存區(qū)與 HEAD 的文件差異
刪除未追綜文件
git clean -df
-f, --force 強制
-d 刪除整個目錄
貯藏
git stash
git stash 貯藏代碼
git stash save "備注" 貯藏代碼
git stash list 貯藏代碼的列表
git stash pop 將當(dāng)前stash中的內(nèi)容彈出(刪除貯藏)惩激,并應(yīng)用到當(dāng)前分支對應(yīng)的工作目錄上
git stash apply 將當(dāng)前stash的內(nèi)容應(yīng)用于當(dāng)前目錄铐达,stash內(nèi)容并不刪除艾扮,需要用git stash drop來刪除
git stash drop + 名 從堆棧中移除某個指定的stash
git stash clear 清除堆棧中的所有內(nèi)容
git stash show 查看堆棧中最新保存的stash和當(dāng)前目錄的差異
git stash branch 從最新的stash創(chuàng)建分支
推送分支
推送分支,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫挽放。推送時酒请,要指定本地分支骡技,這樣,Git就會把該分支推送到遠(yuǎn)程庫對應(yīng)的遠(yuǎn)程分支上:
git push origin master
如果要推送其他分支蚌父,比如dev
哮兰,就改成:
git push origin dev
如果沒有指定本地dev
分支與遠(yuǎn)程origin/dev
分支的鏈接,git pull
就會失敗苟弛。解決方法:設(shè)置dev
和origin/dev
的鏈接:
git branch --set-upstream-to=origin/dev dev
$ Branch 'dev' set up to track remote branch 'dev' from 'origin'.
再pull:
git pull
小結(jié)
- 查看遠(yuǎn)程庫信息喝滞,使用
git remote -v
; - 本地新建的分支如果不推送到遠(yuǎn)程膏秫,對其他人就是不可見的右遭;
- 從本地推送分支,使用
git push origin branch-name
缤削,如果推送失敗窘哈,先用git pull
抓取遠(yuǎn)程的新提交; - 在本地創(chuàng)建和遠(yuǎn)程分支對應(yīng)的分支亭敢,使用
git checkout -b branch-name origin/branch-name
滚婉,本地和遠(yuǎn)程分支的名稱最好一致; - 建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)帅刀,使用
git branch --set-upstream branch-name origin/branch-name
让腹; - 從遠(yuǎn)程抓取分支,使用
git pull
扣溺,如果有沖突骇窍,要先處理沖突。
變基(rebase)
git rebase -i commit_id ==>作用:1锥余、修改老舊的commit message腹纳,合并需要選擇 `s`表示壓縮;2、合并多個commit嘲恍;
修改提交的message
-
修改最新的 message
git commit --amend
編輯完成后足画,輸入
:wq
保存變更退出,就 OK 了蛔钙。 -
修改老舊的 message
git rebase -i commit_id
之后锌云,選擇
r
,編輯保存即可吁脱。
git log
打印提交版本信息
--oneline 簡潔顯示:只顯示提交信息和commit號
--graph 圖形化查看分支合并情況
-nX 顯示最近幾次的提交信息桑涎,X代表最近幾次的數(shù)字
git status [<選項>] [--] <路徑規(guī)格>...
-s, --short 以簡潔的格式顯示狀態(tài)
-b, --branch 顯示分支信息
--show-stash 顯示貯藏區(qū)信息
寫在最后:可以查看另一篇文章git:常用命令