Git基礎操做及常見命令——詳解

這是我看了一些大牛們講解以後作了一下總結,其中講解較爲詳細的是廖雪峯的Git講解git

目錄github

Git的簡介app

Git的安裝ssh

建立倉庫分佈式

編輯文件ide

修改文件學習

查看修改記錄this

撤銷修改命令行

刪除文件3d

鏈接GitHub

分支操做

建立標籤


Git的簡介

Git是什麼,Git是一個分佈式版本控制系統,Git的創始人同Linux的創始人也是Linus,之因此創Git就是爲Linux的開源作一個平臺,可讓全球的人共同打造Linux系統,Linus只用了10天左右的時間就把Git給搭建出來了,真是太牛了。在這以後又有了GitHub,這是一個Git的託管平臺,爲Git量身定作的,在2008年正式上線,在2018年Github被微軟以75億美圓收購,看到GitHub這麼貴,可想而知Git的地位

Git的安裝

首先去官網下載一個Git,一路next便可,惟一須要注意的就是下圖須要建立一個桌面快捷方式,若是隻想要一個命令行版的,不要界面版的,能夠把這個Git GUI Here取消勾選

安裝完以後運行Git,而且進行用戶名和郵箱的設置

git config --global user.name "用戶名"

git config --global user.email "你的郵箱"

建立完這些以後,能夠進行Git命令的學習了

建立倉庫

mkdir mygit 這是建立一個名爲mygit的目錄

cd mygit 這是移動到該目錄下

pwd 這是顯示你當前位置的路徑

git init 這是把該目錄變成Git能夠管理的倉庫

ls -a 這是顯示當前目錄下的全部子目錄(包含隱藏的目錄,其中.git目錄就是隱藏的,也是剛剛建立倉庫的時候建立的)

在Git中分爲工做區和版本庫,工做區就是咱們本身建立的文件進行編輯的區域,而版本庫就是.git目錄,裏面分爲暫存區和一個默認分支master

編輯文件

vi readme.txt 起一個名字爲readme的txt文件,在vi中進行編輯

git add readme.txt 這是將readme.txt文件加到暫存區

git commit -m "wrote a readme" 這是將暫存區的文件提交到當前分支,默認有一個master分支,同時註釋上add readme.txt

修改文件

git status 該命令能夠時刻查看倉庫的狀態

git diff 該命令能夠查看當前狀態與修改前有什麼不一樣

git add readme.txt 若是你想對該文件進行修改,那麼就須要將修改後的信息提交到暫存區

git commit -m "update readme" 一樣若是修改,也須要將修改的東西提交到當前分支,並註釋

查看修改記錄

git log 該命令會顯示歷史修改的詳細信息

git log --pretty=oneline 該命令顯示較爲明瞭的歷史修改信息

git log --graph --pretty=oneline --abbrev-commit 查看分支合併狀況

git  reset --hard HEAD^  該命令會回到上一次修改前的版本

git  reset --hard HEAD^ ^ 該命令會回到上兩次修改前的版本,以此類推

git  reset --hard HEAD~100 該命令會回到上一百次修改前的版本

git reset --hard HEAD 458sa 該命令會返回版本號以458sa開頭的版本

git reflog 該命令是用來查看你的歷史命令

cat readme.txt 顯示該文件的內容

撤銷修改

git checkout -- readme.txt 在工做區修改失敗進行撤銷

git reset HEAD readme.txt 若是添加到了暫存區發現不對了,這是回到修改區

若是是提交到了版本庫想要撤銷,能夠經過歷史記錄進行回退

刪除文件

rm readme.txt 這是刪除工做區的文件

git checkout readme.txt 這是恢復工做區的文件,前提是版本庫中未刪除

git rm readme.txt 這是刪除版本庫的文件,此過程就不可恢復了

鏈接GitHub

首先看看用戶主目錄下有沒有.ssh目錄,若是有,再看看該目錄下有沒有id_rsa和id_rsa.pub文件,若是也有那萬事大吉,若是沒有則須要在Git Bash下建立SSH key

ssh-keygen -t rsa -C "你的郵箱" 這就是建立一個SSH key(一路回車便可)

而後你就能夠登陸GitHub了,在那裏建立一個倉庫,而後把.ssh裏的id_rsa.pub裏的密鑰粘過來

下面會用到你的GitHub名,在GitHub中有兩個名字,一直用到的是下圖的名字

當你添加好SSH key以後,就能夠建立一個GitHub倉庫了,建立完GitHub倉庫後就能夠用Git跟GitHub進行遠程關聯了

git remote add origin git@github.com:uphe/倉庫名.git 這就可讓你的Git進行遠程關聯了,遠程庫的名字是origin(默認),若是你在建立倉庫的時候勾選了README.md文件,在執行此命令以前需執行git pull origin master

git push -u origin master 這是把master(默認主分支)分支的全部內容推送到遠程庫中,-u是與遠程master進行關聯

git push origin master 這個是之後往GitHub上圖送內容的命令,只需第一次加上-u進行關聯,後續就再也不須要

git clone git@github.com:你的GitHub名/倉庫名.git 這樣能夠把你GitHub上的倉庫克隆到本地了

git remote remove origin 這是與遠程斷開鏈接 

分支操做

上面已經提到了Git的默認主分支master分支,其實在這裏還有一個HEAD指針,該指針指向當前分支,固然了默認也是master分支,至於咱們是如何提交的,由於提交的是分支那就是默認master了,master是指向最新提交的。若是新建立一個dev分支,把HEAD指向dev分支,而且在dev分支上進行了提交,那麼master是不動的,可是dev分支上的工做已經完成了,那就須要分支的合併了,此時合併的方式是master分支直接指向dev分支便可,此時HEAD指針又會指向master分支了,固然了此時的dev分支也就沒啥用了,刪了都沒事

git  checkout -b dev 這句話意思是建立dev分支,而且把HEAD指針指向dev分支(等價於下面這兩句話)

git branch dev 建立dev分支

git checkout dev 把HEAD指針指向dev分支

git branch 查看全部分支,*表示當前所在分支

git add readme.txt 若是你在dev分支上對readme文件進行了修改,這句話是把修改添加到暫存區

git commit -m "add branch" 這是把暫存區的內容提交到dev分支

git checkout master 當你在其餘分支的工做完成了,這是回到主分支,也就是HEAD指針指向master分支

git merge dev 這是將剛剛的dev分支的修改進行與master進行合併,若是可能Git會用Fast forward模式

git merge dev --no-ff -m "merge no-ff" 在Fast forward模式下,刪除分支後會丟掉分支信息,用no-ff來禁用Fast forward模式

git branch -d dev 合併完以後,就能夠放心的刪除dev分支了

git branch -D feature 假設你如今在添加一個新功能,並在feature上進行,但即將合併時想要刪除該功能,用-D強制刪除

git log --graph --pretty=oneline --abbrev-commit 這是查看當前分支的合併信息

git stash 若是你在dev分支上進行修改,可是須要去master分支修復一個bug,此時git stash就能夠幫你存儲當前工做現場

git checkout dev 當你完成bug修復後,直接回到該分支又能繼續工做了,可是當你回來以後你發現工做區是乾淨的

git stash list 該命令能夠查看你儲存的工做現場,由於以前你保存過工做現場,故工做現場還在

git stash apply 該命令能夠恢復現場,可是以前保留的stash內容並不刪除

git stash drop 該命令就是用來刪除stash的內容,也就是恢復一下現場須要兩步,有點麻煩了

git stash pop 該命令是恢復現場的同時把以前保留的stash也刪除,刪除以後再用git stash list查看就沒有任何stash內容了

git remote 能夠進行查看遠程庫的信息,遠程庫的名稱默認是origin

git remote -v 是查看遠程庫的詳細信息

git push origin master 這是把該分支的全部本地信息推送到遠程庫,若是推送其餘分支只需把master改了就行,對於咱們工做者來講,通常推送的信息都是master分支即主分支和dev分支即開發分支

git clone git@github.com:你的GitHub名/倉庫名.git 該方法進行克隆時,只是把master分支克隆到了本地而沒有dev分支

git checkout -b dev origin/dev 這是建立遠程origin的dev分支到本地

git push origin dev 把在dev分支上的修改推送到遠程

git pull 若是在你推送以前有其餘人已經推送了,git pull把最新提交從origin/dev中抓下來,而後在本地進行合併後再推送

git branch --set-upstream-to=origin/dev dev 這是分支連接,若是git pull失敗,說明本地dev沒有與遠程origin/dev分支連接

git rebase 該操做是把本地未push的分叉提交歷史整理成直線,說白了就是看着更加清晰好看

建立標籤

建立標籤很簡單,想在那個分支建立標籤,就切換到哪一個標籤便可

git checkout master 咱們先切換到master分支

git tag v1.0 這樣咱們就在master上建立了一個標籤,這是默認標籤,便是在最新提交的commit上

git tag 查看全部標籤

git log --pretty=oneline --abbrev-commit 這是顯示歷史提交記錄

git tag v0.9 458sd 假設歷史記錄中有一個commit id爲458sd。該命令能夠給歷史提交添加標籤

git show v0.9 能夠查看該標籤的信息,是否是比用那個commit id要方便些

git -a v0.8 -m "this is v0.8" 568hg 這個是帶參數的添加標籤 -a是標籤名,-m是標籤描述

git tag -d v0.8 這是刪除標籤,由於建立的標籤只是在本地,不會自動推送到遠程,因此能夠刪除

git push origin v1.0 這是把該標籤推送到遠程

git push origin --tags 這是一次性推送全部的標籤(推送過想要刪除遠程標籤就有點麻煩了,須要兩步)

git tag -d v0.9 首先這是在本地刪除標籤

git push origin :refs/tags/v0.9 這是從遠程刪除,想要看看是否刪除了,能夠從遠程看看

到此,Git的基礎操做也就講完了,有什麼不懂或者執行不對的地方還請多多提出,但願您能有所收穫

相關文章
相關標籤/搜索