git命令大合集

最常用的命令及解釋

$ git add
         # 將工作區(qū)的修改提交到暫存區(qū)
$ git commit
         # 將暫存區(qū)的修改提交到當前分支
$ git reset
        # 回退到某一個版本
$ git stash
        # 保存某次修改
$ git pull 
        # 從遠程更新代碼
$ git push 
        # 將本地代碼更新到遠程分支上
$ git reflog
        # 查看歷史命令
$ git status
        # 查看當前倉庫的狀態(tài)
$ git diff
        # 查看修改
$ git log 
        # 查看提交歷史
$ git revert 
        # 回退某個修改

一次完整的代碼提交

// 適用于多人協(xié)同工作時,可能會操作同一文件夾,出現沖突的情況
$ git add -A
$ git commit -m "message"
$ git pull --rebase (或者git fetch + git rebase)
# 解決沖突
$ git add 沖突文件
$ git rebase –continue
$ git push
// 其中施逾,3姿骏、4项玛、5點妙色,如果沒遇到沖突就不用進行拌夏,直接push上去推穷。
// 當遇到沖突時心包,git會提示patch failed,并要我們解決問題了再執(zhí)行git rebase --continue

命令詳解

git init

本地初始化一個git倉庫

 # 初始化一個git倉庫馒铃,在當前目錄下生存一個 **.git** 的目錄
 $ git init

git clone

從遠程克隆一個倉庫到本地

# 從遠程倉庫克隆一個項目
$ git clone <遠程倉庫地址>

# 從遠程倉庫克隆一個項目蟹腾,并重新命名為MyProject
$ git clone <遠程倉庫地址> MyProject

# 從遠程倉庫克隆一個項目到指定目錄
$ git clone <遠程倉庫地址> <目標目錄>

git status

查看本地倉庫的狀態(tài)

# 查看當前倉庫的狀態(tài)
$ git status

git add

將要提交的文件添加到暫存區(qū)中

# 添加指定的文件
$ git add <文件路徑>

#添加多個指定文件
$ git add <文件路徑> <文件路徑> <文件路徑>...

# 添加所有已修改過的文件(包括修改、刪除区宇、新增的文件)
$ git add -A
$ git add --all
$ git add .

git commit

將暫存區(qū)中的文件提交到本地倉庫中

# 將暫存區(qū)中的文件提交到本地倉庫并添加提交說明
$ git commit -m '提交說明'

# 修改上次提交的提交說明
$ git commit --amend

git push

將本地倉庫的更新推送到遠程倉庫

# 把本地分支推送到遠程指定分支
$ git push <遠程倉庫別名> <本地分支名>:<遠程分支名>
eg:git push origin master 將本地的master分支推送到origin主機的master分支岭佳。如果master不存在,則會被新建萧锉。

# 刪除遠程分支
$ git push <遠程倉庫別名> :<遠程分支名>
// 相當于推送了一個空的本地分支到遠程蟋恬,等同于:
$ git push <遠程倉庫別名> --delete <遠程分支名>

git pull

從遠程拉取最新的代碼并合并到本地分支

# 從遠程拉取最新的代碼
$ git pull

# 拉取遠程某個分支的更新味悄,再與本地的指定分支合并
$ git pull <遠程倉庫別名> <遠程分支名>:<本地分支名>

# 如果遠程分支要與當前分支合并,則冒號后面的部分可以省略
$ git pull <遠程倉庫別名> <遠程分支名>

// git pull =git fetch+git merge
// git pull --rebase = git fetch + git rebase
// git pull  命令相當于是從遠程拉取了代碼(git fetch),并且合并到了一個本地的分支(git merge
// 如果使用--rebase 則代表使用git rebase代替git merge

git fetch

從遠程倉庫獲取最新的版本到本地分支上

#  將遠程倉庫所有分支的最新版本全部取回到本地
$ git fetch <遠程倉庫的別名>

# 將遠程倉庫指定分支的最新版本取回到本地
$ git fetch <遠程主機名> <分支名>

git merge

合并分支

# 把指定的分支合并到當前所在的分支下
$ git merge <分支名稱>

git log

查看提交記錄

# 查看所有的提交記錄
$ git log

# 查看最新的指定數量的提交記錄
$ git log -<數量>

git stash

將當前未提交的所有操作保存起來

# 將當前未提交的所有操作保存
$ git stash

# 將最新的一個緩存恢復到工作目錄
$ git stash pop

# 查看所有的緩存列表
$ git stash list

git checkout

git checkout 可以用于操作分支也可用于操作文件

// git checkout 操作分支
# 切換到已存在的指定分支
$ git checkout <分支名>

# 創(chuàng)建并切換到指定的分支蛙吏,保留所有的提交記錄
$ git checkout -b <分支名>

// git checkout 操作文件
# 放棄本地文件的修改座哩,新增的文件和已經添加到暫存區(qū)的內容不受影響

$ git checkout <文件路徑>

# 放棄本地所有的文件修改
$ git checkout --hard HEAD

git branch

對分支的操作命令

# 查看本地的所有分支兴革,當前所在分支以 "*" 標出
$ git branch

# 創(chuàng)建新分支盐欺,新的分支基于上一次提交建立
$ git branch <分支名>

# 查看所有本地、遠程分支波附,當前所在分支以 "*" 標出
$ git branc -r

// 修改分支名稱
# 如果不指定原分支名稱則為當前所在分支
$ git branch -m [<原分支名稱>] <新的分支名稱>

# 強制修改分支名稱
$ git branch -M [<原分支名稱>] <新的分支名稱>

// 刪除指定的分支
# 刪除指定的本地分支
$ git branch -d <分支名稱>

# 強制刪除指定的本地分支
$ git branch -D <分支名稱>

git diff

比較版本間的差異

# 比較當前文件與暫存區(qū)文件的區(qū)別艺晴,顯示沒有暫存的修改
$ git diff

# 比較暫存區(qū)中文件和上次提交的文件的區(qū)別
$ git diff --cached
$ git diff --staged

# 比較當前文件和上次提交文件的區(qū)別
$ git diff HEAD

# 查看從指定版本之后改動的內容
$ git diff <版本號>

# 比較兩個分支之間的差異
$ git diff <分支名稱> <分支名稱>

git reset

版本回退

# 回退版本,一個^代表一個版本掸屡,可以有多個封寞,
$ git reset HEAD^
$ git reset HEAD~n

# 回退到指定的版本
$ git reset <版本號>

# 將 HEAD 的指向改變,撤銷到指定的提交記錄仅财,文件也修改了
$ git reset --hard <版本號>

# 將 HEAD 的指向改變狈究,撤銷到指定的提交記錄,文件未修改
$ git reset --soft <commit ID>

git tag

操作標簽

# 查看所有的標簽
$ git tag

# 切換到指定標簽
$ git checkout <標簽名>

# 查看標簽的信息
$ git show <標簽名稱>

# 刪除指定的標簽
$ git tag -d <標簽名稱>

# 將指定的標簽提交到遠程倉庫
$ git push <遠程倉庫的別名> <標簽名稱>

# 將本地所有的標簽全部提交到遠程倉庫
$ git push <遠程倉庫的別名> -tags

git rm

刪除操作

# 刪除指定文件盏求,并從本地倉庫的文件夾中刪除
$ git rm <文件路徑>

# 移除跟蹤指定的文件抖锥,在本地倉庫的文件夾中保留該文件
$ git rm --cached

git mv

重命名操作

# 重命名指定的文件或者文件夾
$ git mv <源文件/文件夾> <目標文件/文件夾>

git reflog

查看所有分支的所有操作記錄

#  如果回退到某個版本后又要再次回到之前的版本亿眠,就可以使用git reflog,查看所有的提交記錄
#  包括已經刪除的commit記錄(git log不能查看已經刪除的commit記錄)
$ git reflog

git revert

生成一個新的提交來撤銷某次提交磅废,此次提交之前的所有提交都會被保留纳像。

# 生成一個新的提交來撤銷某次提交
$ git revert <版本號>

git remote

操作遠程倉庫。

# 列出已經存在的遠程倉庫
$ git remote

# 添加遠程倉庫
$ git remote add <遠程倉庫的別名> <遠程倉庫的URL地址>

# 修改遠程倉庫的別名
$ git remote rename <原遠程倉庫的別名> <新的別名>

# 刪除指定名稱的遠程倉庫
$ git remote remove <遠程倉庫的別名>

# 修改遠程倉庫的 URL 地址
$ git remote set-url <遠程倉庫的別名> <新的遠程倉庫URL地址>
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末拯勉,一起剝皮案震驚了整個濱河市竟趾,隨后出現的幾起案子,更是在濱河造成了極大的恐慌谜喊,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倦始,死亡現場離奇詭異斗遏,居然都是意外死亡,警方通過查閱死者的電腦和手機鞋邑,發(fā)現死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門诵次,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人枚碗,你說我怎么就攤上這事逾一。” “怎么了肮雨?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵遵堵,是天一觀的道長。 經常有香客問我怨规,道長陌宿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任波丰,我火速辦了婚禮壳坪,結果婚禮上,老公的妹妹穿的比我還像新娘掰烟。我一直安慰自己爽蝴,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布纫骑。 她就那樣靜靜地躺著蝎亚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪先馆。 梳的紋絲不亂的頭發(fā)上颖对,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音磨隘,去河邊找鬼缤底。 笑死顾患,一個胖子當著我的面吹牛,可吹牛的內容都是我干的个唧。 我是一名探鬼主播江解,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼徙歼!你這毒婦竟也來了犁河?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤魄梯,失蹤者是張志新(化名)和其女友劉穎桨螺,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體酿秸,經...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡灭翔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了辣苏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肝箱。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖稀蟋,靈堂內的尸體忽然破棺而出煌张,到底是詐尸還是另有隱情,我是刑警寧澤退客,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布骏融,位于F島的核電站,受9級特大地震影響萌狂,放射性物質發(fā)生泄漏绎谦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一粥脚、第九天 我趴在偏房一處隱蔽的房頂上張望窃肠。 院中可真熱鬧,春花似錦刷允、人聲如沸冤留。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纤怒。三九已至,卻和暖如春天通,著一層夾襖步出監(jiān)牢的瞬間泊窘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留烘豹,地道東北人瓜贾。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像携悯,于是被迫代替她去往敵國和親祭芦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351