2021-09-22

Git常用命令

在用Git進(jìn)行項(xiàng)目管理的時(shí)候有一些經(jīng)常會(huì)遇到的問(wèn)題處理起來(lái)比較復(fù)雜,本文記錄了一些常用的命令和操作。

一、修改某一次提交的說(shuō)明信息

有時(shí)候我們需要修改之前提交的時(shí)候的說(shuō)明信息,沒(méi)有操作命令可以直接完成,但是使用rebase命令可以實(shí)現(xiàn)。

例如我們要修改倒數(shù)第二次的提交的說(shuō)明信息:

$ git rebase -i HEAD~3

注意:這里HEAD~后面跟著的是3而不是2,因?yàn)檫@里指的是要修改的提交的父提交。
之后會(huì)進(jìn)入到文本編輯界面,如下圖

在這里插入圖片描述

將要修改的提交前面的 pick 改為 edit ,保存后退出。

這個(gè)時(shí)候執(zhí)行

$ git rebase --continue

執(zhí)行這條命令后,后續(xù)的提交說(shuō)明將不會(huì)改變。

注:不要修改已經(jīng) push 到遠(yuǎn)程倉(cāng)庫(kù)的提交?。。?huì)引起版本混亂,使提交歷史變的不清晰!

二、查看、刪除、重命名遠(yuǎn)程分支

查看所有的分支(包括遠(yuǎn)程分支)

$ git branch -a

當(dāng)一個(gè)分支已經(jīng)被合并到主分支后,我們通常會(huì)刪除這個(gè)分支,如果僅僅 git branch -d 是刪除本地分支

刪除遠(yuǎn)程分支的話可以使用如下命令

$ git push origin --delete <branchName>

重命名一個(gè)分支不是很常用,可以先刪除遠(yuǎn)程分支,再重命名本地分支,之后將重命名后的本地分支推送到遠(yuǎn)程倉(cāng)庫(kù)

$ git push --delete origin <branchName>

$ git branch -m <branchName> <newBranchName>

$ git push origin <newBranchName>

三、合并多個(gè)提交

比如要合并最后兩次的提交,其實(shí)和修改某一次提交的說(shuō)明信息有點(diǎn)類(lèi)似。

$ git rebase -i HEAD~2

之后同樣會(huì)進(jìn)入到文本編輯界面,將第二行開(kāi)頭的 pick 改為 squashs,保存后退出。

這時(shí)git會(huì)把兩次提交合并,并且提示讓你輸入新的提交信息,保存后退出就成功完成兩次提交的合并了。

四、強(qiáng)制回退遠(yuǎn)程倉(cāng)庫(kù)到指定提交

當(dāng)我們?cè)陂_(kāi)發(fā)的時(shí)候出現(xiàn)一些關(guān)鍵性的錯(cuò)誤,并且確認(rèn)現(xiàn)在已經(jīng)做的開(kāi)發(fā)工作是無(wú)意義的時(shí)候,可能需要回退到之前的版本。

$ git reset --hard <commit_id>

$ git push origin HEAD --force

另外,reset命令還有幾個(gè)可選參數(shù)

  • git reset –mixed:此為默認(rèn)方式,不帶任何參數(shù)的git reset,即時(shí)這種方式,它回退到某個(gè)版本,只保留源碼,回退commit和index信息。
  • git reset –soft:回退到某個(gè)版本,只回退了commit的信息,不會(huì)恢復(fù)到indexfile一級(jí)。如果還要提交,直接commit即可。
  • git reset –hard:徹底回退到某個(gè)版本,本地的源碼也會(huì)變?yōu)樯弦粋€(gè)版本的內(nèi)容。

五、reset –hard之后的恢復(fù)

使用 git reset --hard 之后,也許才發(fā)現(xiàn)這是一次錯(cuò)誤的操作,那么我們就想要恢復(fù)到之前的版本。

這個(gè)時(shí)候用git log是看不到之前的提交歷史記錄的。

需要使用 $ git reflog 找到我們需要恢復(fù)的HEAD的ID,然后使用reset命令恢復(fù)回去。

六、查看指定版本的某個(gè)文件的內(nèi)容

例如要查看 f4869b0 這次提交的 test.cpp 文件的內(nèi)容,test.cpp的路徑需要使用相對(duì)于git目錄的路徑名,使用如下命令:

$ git show f4869b0:test.cpp

文件的內(nèi)容會(huì)全部顯示在界面上,可以使用文件重定向到另外的文件,再進(jìn)行后續(xù)操作。

七、將遠(yuǎn)程分支已經(jīng)刪除的殘留的本地分支追蹤信息刪除

經(jīng)過(guò)一段時(shí)間的開(kāi)發(fā)后,遠(yuǎn)端的一些被 merge 后刪除的分支,在本地使用 git branch -a 還是能看到,需要取消追蹤并刪除。

$ git fetch --prune
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文章最初發(fā)布在 XJHui's Blog[https://plushine.cn],未經(jīng)允許,任何人禁止轉(zhuǎn)載! ...
    XJHui閱讀 904評(píng)論 0 0
  • [TOC] Git 內(nèi)部實(shí)現(xiàn)原理剖析[http://www.itdecent.cn/p/8154ac47d406...
    Whyn閱讀 986評(píng)論 0 0
  • 簡(jiǎn)介 Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。 Git 與常用的版本控制工具 ...
    閩越布衣閱讀 2,872評(píng)論 0 18
  • 查看版本:git --version 創(chuàng)建版本庫(kù):git init 查看git 腳本目錄:git --exec-p...
    渡邊Hok閱讀 649評(píng)論 0 0
  • 本文首發(fā)于 https://blog.lenconda.top/posts/2018/05/31/githug_g...
    Lenconda閱讀 1,392評(píng)論 0 2

友情鏈接更多精彩內(nèi)容