git命令梳理

在工作中接觸git已經(jīng)快一年半了,真的是一款強大便捷的版本管理工具。常用的一些命令已經(jīng)很熟,偶爾用到不常用的功能就搜一下,現(xiàn)在想系統(tǒng)性的看一遍git的教程,并想把一些平時使用時候有點疑惑的地方整理一下,方便以后工作中能夠更好的利用git。

創(chuàng)建倉庫:

到需要創(chuàng)建倉庫的路徑輸入命令:git init
創(chuàng)建完成后,會出現(xiàn)一個.git的目錄,這個就是跟蹤和管理各個版本的本地倉庫

版本回退

  1. 查看日志
    查看當前和之前版本更新日志: git log or git log --pretty=oneline for short
    查看每次commit的版本號(commit id): git reflog
    查看分支合并圖:
    git log --graph
    git log --graph --pretty=oneline --abbrev-commit

  2. 回歸歷史版本
    回滾到上一個版本命令:
    git reset --hard HEAD^
    git中HEAD表示當前版本,上一個版本是HEAD^,上上一個版本為HEAD^^
    當然往上n個版本寫n個^比較容易數(shù)不過來,所以寫成HEAD~n

  3. 穿梭版本
    回滾到以前的版本后,又想回到較新的某個版本
    git reset --hard <commit_id>

工作區(qū)和暫存區(qū)概念

工作區(qū)Work Directory:就是git倉庫所在路徑
版本庫Repository: .git目錄不是工作區(qū),里面為版本庫,其中包括暫存區(qū)stage和當前分支master。

版本庫

往git版本庫添加的時候,分兩步執(zhí)行:1. git add 添加到暫存區(qū); 2. git commit 添加到當前分支。

查看不同

查看工作區(qū)與暫存區(qū)的不同: git diff
查看工作區(qū)與當前分支的不同: git diff HEAD --<filename>

撤銷修改

撤銷工作區(qū)的修改:
git checkout --<filename> 文件恢復(fù)到第一次git commit或者git add的狀態(tài)
撤銷暫存區(qū)的修改:
git reset HEAD <filename>可以把暫存區(qū)添加的修改撤銷掉,把暫存區(qū)的修改退回到工作區(qū)

關(guān)聯(lián)遠程倉庫

  1. 關(guān)聯(lián)到github
    由于本地git倉庫與遠程倉庫通過SSH加密傳輸,可能需要設(shè)置SSH
    主目錄下查看 .ssh目錄,目錄下若沒有id_rsaid_rsa.pub這兩個文件,
    則執(zhí)行下面第一步,否則跳過第一步
    第一步:ssh-keygen -t rsa -C "youremail@example.com"
    第二步:登陸GitHub,打開“Account settings”,“SSH Keys”頁面,然后,點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容
    git remote add origin <remote git> 其中,origin為遠程庫的名字
    把本地更新推送到遠程庫:
    git push -u origin master 第一次推送用-u參數(shù),將本地master與origin master關(guān)聯(lián)起來。后續(xù)使用 git push即可
  2. 刪除/替換遠程倉庫
    將某個工程向現(xiàn)在的倉庫強制推送即可
    git remote add origin <remote git>
    git push --force --set-upstream origin master

分支

master是穩(wěn)定的,僅用來發(fā)布新版本,平時不再上面干活
干活是在分支上,分支是不穩(wěn)定的,等穩(wěn)定了再合并到master上。


branch
  1. 創(chuàng)建并切換分支
    例、創(chuàng)建分支 dev,并且切換HEADdev
    git checkout -b dev
    上述命令-b dev創(chuàng)建并且切換到dev等價于下述兩個命令:
    git branch dev
    git checkout dev
  2. 查看本地所有分支列表
    git branch
    當前分支會在分支名前標一個*號
  3. 合并分支(例、合并當前分支和dev分支)
    git merge dev
    合并分支會丟掉dev相關(guān)信息,若想保留dev相關(guān)信息,可以merge時使用--no-off,并且添加-m commit信息
    git merge --no-ff -m "merge with no-ff" dev
  4. 刪除分支(例、刪除dev分支)
    git branch -d dev
    強制刪除未合并分支
    git branch -D dev
  5. bug分支
    假設(shè)在dev分支開發(fā)的時候,突然有個bug需要修改,需要切換到master,然后再建立bug分支,修復(fù)bug后將master和bug分支合并。期間,dev分支的內(nèi)容需要放到某個地方暫存,用到git stash語句
    然后切換回來后,用git stash list查看暫存修改列表。
    git stash pop將暫存的修改恢復(fù)到工作區(qū),并且清空stash列表
  6. 從本地推送分支
    git push origin <branch-name>
    若推送失敗,先git pull抓取遠程新提交
  7. 關(guān)聯(lián)本地與遠程分支
    git branch --set-upstream branch-name origin/branch-name
    創(chuàng)建并關(guān)聯(lián)
    git branch -b <branch-name> origin/<branch-name>本地與遠程分支名字最好一樣·

標簽管理

  1. 創(chuàng)建tag
    git tag <tag name>
    git tag <tag name> <commit id>
    git tag -a <tag name> -m <message> <commit id> 創(chuàng)建標簽并且添加標簽信息
  2. 查看tag
    git show <tag name>
  3. 推送本地標簽
    git push origin <tag name>推送指定標簽
    git push origin --tags推送所有本地標簽
  4. 刪除本體/遠程標簽
    git tag -d <tag name>刪除本地標簽
    git push origin :refs/tags/<tagname>刪除遠程標簽(先刪除本地,再刪除遠程)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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