git 命令詳解

git入門

git筆記會隨著時間進行更正

再次更新:2019/10/09 23:02

幾個概念

  • git的三個區(qū)域
    1. 工作區(qū)
      • git的初始化目錄
    2. 暫存區(qū)
      • 從工作區(qū)進一步提交的文件所在區(qū)域
    3. 本地倉庫
      • 從暫存區(qū)進一步提交的文件所在區(qū)域
    • 提交流程一般是:工作區(qū)(add)->暫存區(qū)(commit)->本地庫

命令

  • 幫助命令

    • git help 需要查找的命令
      - > git 需要查找的命令 --help
      - > man 需要查找的命令

  • 初始化本地庫

    • git init
      - 生成.git文件夾 存放git倉庫配置及其數(shù)據(jù)

  • 配置本地庫信息

    • git config
      - 環(huán)境參數(shù)
      - system
      - > git config --system
      - 配置信息在主機上的任何用戶和文件夾下都生效
      - global
      - > git config --global
      - 配置信息在主機上的當(dāng)前用戶和及其所屬文件夾下生效
      - 不加以上參數(shù)拒贱,只在初始化本地庫的文件夾下生效
      - 配置使用者信息
      - 用戶名
      - > git config user.name 用戶名
      - 郵箱
      - > git config user.email 用戶郵箱
      - 配置以上信息只起到提示作用,與任何平臺信息無關(guān)撬即,但是一般與使用平臺命名一致

  • 添加被追蹤文件至?xí)捍鎱^(qū)

    • git add 文件名(文件夾名)
      - 將該文件(文件夾)從工作區(qū)添加到暫存區(qū),并進行追蹤
      - > git add .
      - 將工作區(qū)的所有文件(文件夾)添加到暫存區(qū),并進行追蹤
      - 刪除和移動(重命名)操作不可以被git add追蹤到,只能通過git rmgit mv來提交到暫存區(qū)

  • 提交被追蹤文件至本地庫

    • git commit 文件名(文件夾名)
      - 將該文件(文件夾)從暫存區(qū)添加到本地庫,并生成新的記錄
      - 參數(shù)
      - > -m
      - 不用打開編輯器治筒,直接在參數(shù)后添加提交描述
      - > -a
      - 若該文件曾被提交過桃笙,再次對其操作后,可直接使用該參數(shù)從工作區(qū)提交到本地庫

  • 刪除文件(文件夾)

    • git rm 文件名(文件夾名)
      - 刪除工作區(qū)的文件名(文件夾名)闻镶,且提交到暫存區(qū)
      - 參數(shù)
      - --cached 文件名(文件夾名)
      - 刪除暫存區(qū)文件名(文件夾名)的操作

    已知:已提交文件test
    需求:現(xiàn)在將文件test從本地庫中刪除
    
    方法1:
    git rm test
    git commit -m "delete test"
    
    方法2:
    rm test.txt
    git commit -a "delete test"
    
    方法1和方法2得到結(jié)果一致
    
  • 移動文件(文件夾)

    • git mv 文件名1(文件夾名1) 文件名2(文件夾名2)
      - 移除工作區(qū)文件名1(文件夾名1),生成文件名2(文件夾名2)域醇,且提交到暫存區(qū)

    已知:已提交文件test1
    需求:現(xiàn)在將文件test1更名為test2
    
    方法1:
    git mv test1 test2
    git commit -m "rename test1->test2"
    
    方法2:
    mv test1 test2
    git rm test1
    git commit -m "rename test1->test2"
    
    方法3:
    mv test1 test2
    rm test.txt
    git commit -a "rename test1->test2"
    
  • 檢查文件(文件夾)狀態(tài)

    • 文件(文件夾)狀態(tài)
      • 新增
      • 修改
        -刪除
        -重命名
      • 未被提交
      • 未存入暫存區(qū)
    • git status
      - 對工作區(qū)和暫存區(qū)文件(文件夾)的狀態(tài)進行檢查顯示
      - 參數(shù)
      - > -s(--short)
      - 簡化檢查結(jié)果顯示

  • 檢查文件操作詳細(xì)信息

    • git diff
      - 不加參數(shù)滚澜,查看工作目錄和暫存區(qū)之間的操作差異
      - 參數(shù)
      - > --cached(--staged)
      - 查看暫存區(qū)和本地庫之間的操作差異

  • 查看提交歷史記錄

    • git log
      - 顯示所有提交記錄
      - > git log HEAD指針位置
      - 顯示指定提交歷史記錄
      - 參數(shù)
      - -p
      - 查看提交歷史記錄的詳細(xì)信息
      - --stat
      - 查看提交歷史記錄的簡化信息
      - -數(shù)字n
      - 查看前n條提交歷史記錄的信息
      - --oneline
      - 將每條提交歷史記錄以行顯示,記錄簡化的hash值
      - --pretty=oneline
      - 將每條提交歷史記錄以行顯示蜕乡,記錄完整的hash值
      - --pretty=fomat:"放以下參數(shù)和其他字符組成的字符串"
      - 自定義提交歷史記錄的顯示方式
      - 參數(shù)
      - %s
      - 提交時寫的描述
      - %an
      - 做出文件(文件夾)操作的作者名稱
      - %ae
      - 做出文件(文件夾)操作的作者郵箱
      - %ad
      - 作者做出文件(文件夾)操作的時間
      - %ar
      - 作者做出文件(文件夾)操作距今的時間
      - %cn
      - 提交者的名稱
      - %ce
      - 提交者的郵箱
      - %cd
      - 提交者提交的時間
      - %cr
      - 提交者提交距今的時間
      - > 例如:git log --pretty=format:"提交者:%cn奸绷,距今時間:%cr,提交描述:%s"
      - --graph
      - 樹狀顯示提交歷史記錄

  • 對遠(yuǎn)程庫克隆

    • git clone https地址(ssh地址)
      - 初始化本地庫且拉取遠(yuǎn)程庫的所有歷史版本
      - 將最新的提交歷史記錄對應(yīng)的工作區(qū)文件(文件夾)復(fù)制到現(xiàn)在的工作區(qū)
      - 添加遠(yuǎn)程倉庫地址別名层玲,與原倉庫的別名一致号醉,可以直接操作并提交

  • .gitignore 文件

    • 設(shè)置提交時忽略的文件或文件夾
    • 文件內(nèi)容設(shè)置
      • 以#開頭的行和空行會被忽略
      • 利用正則匹配文件(文件夾)
        • 參數(shù)
          • *
            • 匹配0或任意個字符
          • ?
            • 匹配一個任意字符
          • []
            • 匹配括號里其中一個字符
          • !
            • 匹配取反的文件(文件夾)
  • 遠(yuǎn)程倉庫

    • git remote
      - 查看本地遠(yuǎn)程庫別名
      - -v
      - 查看詳細(xì)的遠(yuǎn)程庫詳細(xì)信息
      - > git remote add 遠(yuǎn)程庫別名 對應(yīng)的url(ssh)
      - 新建本地遠(yuǎn)程庫別名
      - > git remote show 遠(yuǎn)程庫名
      - 查看遠(yuǎn)程分支信息
      - > git remote rename 舊的本地遠(yuǎn)程庫別名 新的本地遠(yuǎn)程庫別名
      - 重命名本地遠(yuǎn)程庫別名
      - > git remote rm 需刪除的本地遠(yuǎn)程庫別名
      - 刪除本地遠(yuǎn)程庫別名

  • 推送分支

    • git push 遠(yuǎn)程分支的別名 被推送分支名(標(biāo)簽名):推送到的遠(yuǎn)程分支名(標(biāo)簽名)
      - 將本地庫文件(文件夾)推送到遠(yuǎn)程分支
      - 填寫分支名
      - 在遠(yuǎn)程倉庫創(chuàng)建遠(yuǎn)程分支
      - 填寫標(biāo)簽名
      - 在遠(yuǎn)程倉庫創(chuàng)建標(biāo)簽
      - 刪除遠(yuǎn)程分支
      - > git push 遠(yuǎn)程分支的別名 --delete 遠(yuǎn)程分支名(標(biāo)簽名)
      - > git push 遠(yuǎn)程分支的別名 :遠(yuǎn)程分支名
      - 創(chuàng)建遠(yuǎn)程分支
      - 創(chuàng)建前提是:需要創(chuàng)建的遠(yuǎn)程分支在本地已存在
      - > git push 遠(yuǎn)程分支的別名 新建遠(yuǎn)程分支名:新建遠(yuǎn)程分支名

  • 拉取遠(yuǎn)程分支到本地

    • git fetch 遠(yuǎn)程分支名(標(biāo)簽名)
      - 拉取指定遠(yuǎn)程分支(標(biāo)簽)到本地遠(yuǎn)程分支

  • 合并分支

    • git merge 本地分支名
      - 將指定本地分支名合并到當(dāng)前分支
      - > git merge 合并到的本地分支名 被合并的本地分支名
      - 將兩個本地分支合并
      - 合并沖突
      - 兩個分支若對相同文件的相同位置做了操作,會出現(xiàn)合并沖突
      - 解決合并沖突
      1. 將出現(xiàn)沖突的文件進行更正
      2. git add
      3. git commit -m "description"

  • 拉取遠(yuǎn)程庫

    • git pull 遠(yuǎn)程分支別名 被拉去的遠(yuǎn)程分支名(標(biāo)簽名):合并的本地分支名(標(biāo)簽名)
      - 是fetch和merge兩個操作的合并辛块,將遠(yuǎn)程分支拉取到本地合并到指定分支上

  • 標(biāo)簽

    • 種類
      • 輕量級標(biāo)簽
      • 含附注標(biāo)簽
    • 打標(biāo)簽
      • 輕量級標(biāo)簽

        • git tag 標(biāo)簽名
          - 為當(dāng)前所處的提交打上輕量級標(biāo)簽畔派,一個提交可以有多個標(biāo)簽
          - 含附注標(biāo)簽
          - > git tag -a "標(biāo)簽名" -m "description"
          - 為當(dāng)前所處的提交打上含附注標(biāo)簽,一個提交可以有多個標(biāo)簽
          - 查看標(biāo)簽
          - > git tag
          - 查看所有標(biāo)簽
          - 參數(shù)
          - -l 標(biāo)簽名(可正則)
          - 查詢指定標(biāo)簽
          - a "標(biāo)簽名"
          - 指定標(biāo)簽名
          - m "description"
          - 定義標(biāo)簽描述
          - 刪除標(biāo)簽
          - > git tag -d 標(biāo)簽名
          - 給歷史提交記錄打標(biāo)簽
          - > git tag -a "標(biāo)簽名" -m "description"某個歷史記錄的HEAD指針位置
          - 推送標(biāo)簽到遠(yuǎn)程分支
          - 推送指定的標(biāo)簽
          - > git push 遠(yuǎn)程分支別名 被推送的標(biāo)簽名
          - 推送全部標(biāo)簽
          - > git push 遠(yuǎn)程分支別名 --tags
          - 切換標(biāo)簽
          - > git checkout 標(biāo)簽名
          - 切換分支到標(biāo)簽所處分支润绵,處于游離狀態(tài)不能修改
          - > git checkout -b 新建本地分支名 標(biāo)簽名

      • git branch 新建本地分支名 標(biāo)簽名
        - > git checkout 該本地分支名
        - 重命名標(biāo)簽
        - > git tag -d 原來的標(biāo)簽名
        - 刪除原來的標(biāo)簽
        - > git tag -a "新的標(biāo)簽名" -m "description"
        - 創(chuàng)建新的標(biāo)簽

  • 操作本地分支

    • 查看分支
      • git branch
        - 查看分支名和當(dāng)前所屬分支
        - 參數(shù)
        - -v
        - 查看分支和當(dāng)前所屬分支的具體信息
        - -a
        - 查看包含遠(yuǎn)程分支的全部分支信息
        - --merged
        - 查看已與當(dāng)前分支合并的所有分支
        - --no-merged
        - 查看未與當(dāng)前分支合并的所有分支
        - 創(chuàng)建分支
        - > git branch 新本地分支名
        - 創(chuàng)建文件(文件夾)為當(dāng)前分支的新本地分支
        - > git branch 新本地分支名 被復(fù)制的本地分支名
        - 創(chuàng)建指定復(fù)制的本地分支名
        - 刪除分支
        - > git branch -d 本地分支名
        - 刪除已經(jīng)被合并過的分支
        - > git branch -D 本地分支名
        - 刪除已經(jīng)未合并過的分支

  • 切換本地分支

    • git checkout 本地分支名
      - 切換到指定分支
      - 注意切換到指定標(biāo)簽或本地遠(yuǎn)程分支的本地分支處于游離狀態(tài)线椰,不能操作
      - > git checkout -b 本地分支名
      - 創(chuàng)建新本地分支并跳轉(zhuǎn)到該分支
      - > git checkout -b 本地分支名(標(biāo)簽名) 被復(fù)制的本地分支名(標(biāo)簽名)
      - 創(chuàng)建新分支且賦予指定分支內(nèi)容并跳轉(zhuǎn)到該分支

  • 命令別名

    • git config alias.命令的別名 "命令名"
      - 設(shè)置git命令別名,上面的命令都不包含git授药,運行命令時必須帶上git
      - > git config alias.命令的別名 "!非git命令名"
      - 設(shè)置非git命令別名士嚎,運行命令時必須帶上git

  • 撤銷操作

    • git commit --amend
      - 上一次提交作廢,重新提交,將本次提交記錄代替上一次的記錄
      - > git reset HEAD 文件名
      - 重置暫存區(qū)指定文件的操作為最新提交記錄的操作悔叽,用來撤銷暫存區(qū)的失誤文件(文件夾)操作
      - > git checkout -- 文件名(文件夾)
      - 重置工作區(qū)文件的操作為暫存區(qū)的操作莱衩,用來將暫存區(qū)文件操作覆蓋原來對工作區(qū)的失誤操作

  • 版本重置

    • git reset HEAD指針位置
      - 暫存區(qū)和本地庫版本重置到所指定位置
      - 參數(shù)
      - -soft
      - 重置本地庫
      - -mixed(默認(rèn))
      - 重置本地庫和暫存區(qū)
      - -hard
      - 重置工作區(qū),暫存區(qū)和本地庫
      - 歷史記錄改變
      - 徹底回退娇澎,使用git log無法查看重置位置之后的歷史記錄

  • 版本回退

    • git revert HEAD指針位置
      - 反向回溯笨蚁,每次進行新的提交,不同于reset趟庄,revert歷史記錄只新增

  • 變基

    • git rebase 以該本地分支為基的分支
      - 以指定分支為基括细,合并當(dāng)前分支
      - > git rebase 以該本地分支為基的分支 被合并的分支
      - 以指定分支為基合并指定分支
      - 與merge操作區(qū)別
      - merge是將兩指定分支合并,建立新提交生成新的提交記錄
      - rebase 是將多余變更記錄進行記錄戚啥,在基分支上進行重演奋单,生成新的提交記錄
      - 一般兩者得到結(jié)果一致,但使用方法不同

補充1:若大家覺得我寫得還行猫十,可以去我的github里star一下览濒,為了以后找工作做準(zhǔn)備呆盖,無論是否點贊,謝謝大家看完本文

我的github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贷笛,一起剝皮案震驚了整個濱河市应又,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乏苦,老刑警劉巖株扛,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異汇荐,居然都是意外死亡洞就,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門拢驾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奖磁,“玉大人,你說我怎么就攤上這事繁疤】” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵稠腊,是天一觀的道長躁染。 經(jīng)常有香客問我,道長架忌,這世上最難降的妖魔是什么吞彤? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮叹放,結(jié)果婚禮上饰恕,老公的妹妹穿的比我還像新娘。我一直安慰自己井仰,他們只是感情好埋嵌,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俱恶,像睡著了一般雹嗦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上合是,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天了罪,我揣著相機與錄音,去河邊找鬼聪全。 笑死泊藕,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的难礼。 我是一名探鬼主播娃圆,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼汽久,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了踊餐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤臀稚,失蹤者是張志新(化名)和其女友劉穎吝岭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吧寺,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡窜管,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了稚机。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幕帆。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赖条,靈堂內(nèi)的尸體忽然破棺而出失乾,到底是詐尸還是另有隱情,我是刑警寧澤纬乍,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布碱茁,位于F島的核電站咖城,受9級特大地震影響林螃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜储笑,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一茧泪、第九天 我趴在偏房一處隱蔽的房頂上張望蜓氨。 院中可真熱鬧,春花似錦队伟、人聲如沸穴吹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刀荒。三九已至,卻和暖如春棘钞,著一層夾襖步出監(jiān)牢的瞬間缠借,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工宜猜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泼返,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓姨拥,卻偏偏與公主長得像绅喉,于是被迫代替她去往敵國和親渠鸽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355