GIT的使用總結

前言

本文章對GIT的學習做一個簡單的總結,方便查閱,畢竟那麼多條指令不可能全部記下來,以後會持續更新
GIT的教程可以參考廖雪峯老師官方網站,確實寫的很通俗易懂,也可以參考菜鳥教程
如果我的理解不對,歡迎評論交流

GIT的使用

GIT在linux系統的安裝

$ sudo apt-get install git

設置姓名與郵箱

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

–global:表示你這臺機器上所有的Git倉庫都會使用這個配置

查看配置信息

$ git config --list

創建本地倉庫

$ mkdir glx
$ cd glx
$ git init

以上是創建一個新的目錄作爲倉庫,也可以使用指定目錄創建倉庫

$ git init newrepo

找個合適的位置新建英文目錄

創建文件

$ touch readme.txt
$ vi readme.txt

提交到暫存區

$ git add readme.txt

編輯完成後,保存,提交到暫存區

提交到倉庫

$ git commit readme.tx -m "first version" 或
$ git commit -m "first version" 

可以提交單個文件,也可以一次性全部提交,所謂的提交是將暫存區的文件提交
-m 可以添加提交的版本註釋信息

查看狀態

$ git status

此命令要多用,顯示工作區、暫存區和倉庫的狀態

查看不同

$ git diff

查看工作區與暫存區的不同

$ git diff --cached
$ git diff --staged

查看暫存區與倉庫的不同

$ git diff HEAD

查看工作區、暫存區與倉庫的不同

$ git diff <分支名1> <分支名2>

比較兩個分支最後一次提交的不同

查看LOG

$ git log

顯示所有提交過的版本信息,不包括已經被刪除的 commit 記錄和 reset 的操作

$ git log --oneline
$ git log --pretty=oneline

每個提交都用單行顯示

$ git reflog

顯示所有的操作記錄,包括提交,回退的操作

$ git log --graph

查看分支合併圖

版本回退

$ git reset --hard 版本號

版本號可以用log或者reflog查到的版本號,也可以在HEAD的基礎上往前
HEAD:當前版本
HEAD^:前一個版本
HEAD^^:前兩個版本
HEAD~100:前100個版本

撤銷修改

$ git checkout -- filename

工作區編輯出錯了,可以丟棄工作區的修改
如果還沒添加到暫存區,則執行後和倉庫相同
如果已經添加到暫存區,則將暫存區的內容恢復到本地
– :如果不添加此參數,將會切換到另外一個分支

$ git reset HEAD filename

如果提交到暫存區的內容有問題,可以將其撤銷掉,工作區不受影響

刪除文件

$ git rm filename

刪除後,同樣需要commit提交
如果利用linux命令rm了文件,同樣需要再用git rm一次

$ git rm --cached filename

刪除暫存區的文件,工作區不受影響

錯刪文件的恢復

$ git checkout -- filename

如果刪錯了文件,可以從倉庫中恢復

文件重命名

$ git mv filename newname

重命名後,需要commit提交到倉庫纔有效

創建SSH Key

$ ssh-keygen -t rsa -C "[email protected]"

查看本地家目錄有沒有.ssh或者id_rsa和id_rsa.pub
如果沒有的話,可以用以上指令新建一個ssh密鑰
id_rsa是私鑰,id_rsa.pub是公鑰

GitHub添加公鑰

在github的設置中,添加本地的公鑰
添加步驟

Gitee添加公鑰

在這裏插入圖片描述

GitHub關聯本地倉庫

如果先創建了本地倉庫,那麼需要在github創建一個new repository,起個名字,其餘設置默認,如圖所示創建出了一個空倉庫
在這裏插入圖片描述

$ git remote add github git@github.com:RainsDog/glx.git

將本地倉庫關聯到github的對應倉庫

Gitee關聯本地倉庫

在這裏插入圖片描述

git remote add gitee git@gitee.com:RainsDog/glx.git

本地倉庫推送到遠端

$ git push github master

推送本地的master分支到github,推送成功後,可以在github查看到已經有了master分支和本地推送的文件
此命令還可以加-u參數,在推送時設定默認遠端倉庫的位置,如果只用github或者只用gitee一個遠端倉庫,可以加這個參數,下一次推送可以直接用git push,拉取直接用git pull即可

克隆遠端倉庫到本地

$ git clone git@github.com:RainsDog/glx.git

此命令會在本地創建一個叫glx的目錄,並將遠端的文件拉取過來
推薦使用ssh協議進行克隆

$ git clone git@github.com:RainsDog/glx.git ggg

將遠端倉庫克隆到本地的ggg目錄

本地倉庫克隆到本地

$ git clone glx ggg

將本地倉庫克隆到本地的ggg目錄

拉取遠端倉庫的信息

$ git pull github master   

拉取遠端的master分支到本地,也可以用以下命令

$ git fetch github master
$ git merge github master

git pull = git fetch + git merge

拉取遠端的非master分支

$ git checkout -b dev github/dev

在拉去master分支後,可以繼續拉去dev分支

查看遠程倉庫的信息

$ git remote
$ git remote -v

帶參數-v可以查看更詳細的信息

刪除與遠端的關聯

$ git remote rm origin

可以先用git remote查看有那些關聯,然後進行刪除

創建新的分支

$ git checkout -b dev

創建新的分支,並切換過去

$ git switch -c dev

switch是新版本增加的寫法

查看所有分支

$ git branch

切換到指定分支

$ git checkout master
$ git switch master

switch是新版本增加的寫法

合併分支

$ git merge dev

合併dev分支到當前分支

$ git merge --no-ff -m "merge with no-ff" dev

合併的時候,強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支信息

刪除指定分支

$ git branch -d dev

保護現場

$ git stash

切換到其它分支前,將正在工作,且未提交的分支保存起來

查看保護現場

$ git stash list

恢復現場

方式1-先恢復,後刪除

$ git stash apply
$ git stash drop

方式2-恢復的同時刪除

$ git stash pop

方式3-恢復到指定現場

$ git stash apply stash@{現場序號}

複製提交

$ git cherry-pick 版本號

複製一個特定的提交到當前分支

刪除分支

普通刪除

$ git branch -d 分支名

強行刪除

$ git branch -D 分支名

變雞操作

$ git rebase

rebase操作可以把本地未push的分叉提交歷史整理成直線;
rebase的目的是使得我們在查看歷史提交的變化時更容易,因爲分叉的提交需要三方對比

打標籤

$ git tag V1.0
$ git tag V1.0 版本號
$ git tag -a V0.1 -m "version 0.1 released" 版本號

可以給指定的版本打標籤
打標籤時,可以用-a指定標籤名,用-m增加說明信息

查看標籤

$ git tag
$ git show V1.0

如果知道標籤的名字,可以用show查看具體信息

刪除標籤

$ git tag -d V0.1
$ git push github:refs/tags/V0.1

刪除本地標籤,第一條就可以,如果要同時刪除遠端的標籤,則需要兩條都執行

推送標籤

$ git push github 標籤名
$ git push github --tags

–tags可以一次性推送全部標籤

Git自定義選項

$ git config --global color.ui true

Git會適當地顯示不同的顏色

忽略特殊文件

在Git工作區的根目錄下創建一個特殊的.gitignore文件,然後把要忽略的文件名填進去,Git就會自動忽略這些文件,並且把.gitignore也提交到Git

查看忽略規則

git check-ignore -v App.class

查看app.class這個文件是否被忽略

配置別名

$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD'
$ git config --global alias.last 'log -1'

st表示status,co表示checkout,ci表示commit,br表示branch,還可以用字符串進行替換

刪除別名

如果是用global設置的,在家目錄的.gitconfig文件中,否則在倉庫的.git/config文件中
例如:
[alias]
last = log -1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章