文章目錄
- 前言
- GIT的使用
- GIT在linux系統的安裝
- 設置姓名與郵箱
- 查看配置信息
- 創建本地倉庫
- 創建文件
- 提交到暫存區
- 提交到倉庫
- 查看狀態
- 查看不同
- 查看LOG
- 版本回退
- 撤銷修改
- 刪除文件
- 錯刪文件的恢復
- 文件重命名
- 創建SSH Key
- GitHub添加公鑰
- Gitee添加公鑰
- GitHub關聯本地倉庫
- Gitee關聯本地倉庫
- 本地倉庫推送到遠端
- 克隆遠端倉庫到本地
- 本地倉庫克隆到本地
- 拉取遠端倉庫的信息
- 拉取遠端的非master分支
- 查看遠程倉庫的信息
- 刪除與遠端的關聯
- 創建新的分支
- 查看所有分支
- 切換到指定分支
- 合併分支
- 刪除指定分支
- 保護現場
- 查看保護現場
- 恢復現場
- 複製提交
- 刪除分支
- 變雞操作
- 打標籤
- 查看標籤
- 刪除標籤
- 推送標籤
- 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