首頁 > 軟體

Git常用的使用方法

2020-06-16 17:17:55

Git常用的使用方法

apt-get install git #Ubuntu 下安裝git
yum install git # CentOS下安裝git
#安裝git之後簡單的設定
git config --global user.name "joedlut"
git config --global user.email "linuxidcdejiush@linuxidc.com"

建立一個版本庫(git倉庫)
mkdir /home/joedlut/learngit #常見一個目錄
cd /home/joedlut/learngit
git init # 建立版本庫,即讓該目錄下的檔案可以被git管理

如何向倉庫中新增檔案?
cd /home/joedlut/learngit # 要想讓git管理檔案,必須將檔案放到git倉庫中
vim readme.txt # 新增兩行資料
git add readme.txt #將檔案新增到倉庫中
git commit -m "add a readme.txt" #將檔案提交到倉庫中 -m指定提交的說明,建議不要省略
# 可以一次新增多個檔案,然後一次性提交 如下
git add file1.txt
git add file2.txt file3.txt
git commit -m 'add three files'

檢視倉庫的狀態
git status #可以看到那些檔案做出了修改但是沒有提交到版本庫

檢視倉庫的一個檔案具體改動了什麼
git diff readme.txt  #格式和linux下的diff命令顯示的內容一樣

將一個檔案的修改提交到版本庫 (分兩步 add 與commit)
git add readme.txt #注意 新增修改同樣使用的是add
git commit -m 'modified the content of readme.txt'

檢視版本庫的提交記錄(方便做後面的回退操作)
git log #由近及遠的顯示提交紀錄檔
git log --pretty=oneline # 同樣顯示提交紀錄檔,但是輸出資訊相比git log得到了簡化

利用git可以回退到版本庫在歷史中的任意一個版本,git使用HEAD表示當前版本,使用HEAD^表示上一個版本,使用HEAD^^表示上上一個版本 那如何會退到上一個版本呢
git reset --hard HEAD^

如何會退到歷史的某個版本後, 又想再回到原來新的版本,此時要想回到原先“未來”的版本,必須知道當時未來版本的提交號 也是就是commit_id 檢視這個commit_id可以使用reflog
git reflog #這個命令可以顯示每一次git執行的命令
git reset --hard commit_id # 這個id是你想回到的版本的commit_id

git的區域分為工作區和暫存區,我們對於檔案的修改都是在工作區內完成的,git add做的事情就是將新建的檔案後者檔案的修改新增到暫存區,檔案只有在暫存區下才可以被跟蹤管理,git commit做的事情就是將暫存區的修改一次性提交到分支。由此可見,修改必須新增到(git add)暫存區中才可以被提交
檢視工作區與版本庫裡最新版本的區別
git diff HEAD -- readme.txt

如何復原檔案的修改?分為兩種情況
第一種 修改了檔案但是沒有使用git add將檔案的修改新增到暫存區的
git checkout -- readme.txt # 注意不要省略--  否則會變成切換到另一個分支的命令

第二種 已經將檔案的修改使用git add提交到了暫存區
git reset HEAD readme.txt #復原暫存區的修改
git checkout -- readme.txt

如何從版本庫中刪除一個檔案?注意,從版本庫中刪除一個檔案,就無法恢復了
git rm test.txt
git commit -m 'remove test.txt'

如何僅僅是從工作區中刪除了一個檔案,而沒有從版本庫中刪除一個檔案,則可以恢復這個檔案
git checkout -- test.txt

如何連線到git倉庫?
ssh-keygen -t rsa -C 'linuxidc@linuxidc.com'
cd  ~/.ssh
將公鑰id_rsa.pub新增到github端

將本地庫與遠端庫相關聯
git add remote origin git@github.com:joedlut/learngit.git #origin是遠端庫的名字,建議是origin
#假設遠端庫上
git push -u origin master #將本地庫的內容推播到遠端庫,注意,第一次推播要使用-u選項,-u會將原生的master與遠端master關聯
git push origin master # 之後每次本地做了修改,可以通過該命令實現本地庫與遠端庫的同步

假設github有個遠端庫gitskills 如何將該庫克隆到本地?
git clone git@github.com:joedlut/gitskills.git

建立一個分支dev,,並且切換到該分支
git checkout -b dev #相當於兩條命令git branch dev ; git checkout dev

檢視分支
git branch #檢視所有分支,當前分支會帶有一個*號

切換到master分支
git checkout master

將dev分支合併到master分支
git merge dev # 預設會採用fast-forward的方式合併

刪除dev 分支
git branch -d dev

當master分支與另一個分支(feature1)都有git add 跟git commit操作的時候,合併分支的時候會發生衝突而失敗,此時應該解決衝突之後再執行git add 和git commit,然後再執行git branch -d  feature1
檢視分支的合併情況
git log --graph --pretty=oneline

git merge預設會採用fast-forward方式,此時會丟失分支資訊(即使用git log檢視的時候不會顯示分支的合併),要想儲存分支資訊,可以使用--no-ff選項
git merge -no-ff feature1
git log --graph --pretty=oneline --abbrev-commit

當在dev分支工作時候,需要臨時修改bug的時候,可以使用git stash儲存現場後,在切換到master分支,然後在建立bug分支,修改bug後再返回到master分支,合併bug分之後,返回dev分支後,在使用git stash pop 恢復現場,完整過程如下
git stash  # dev分支
git checkout master
git checkout -b bug101
############ 修改bug git add git commit....###############
git checkout master
git merge --no-ff bug101
git checkout dev
git stash list # 檢視儲存的現場資訊
git stash pop # 恢復現場,並且刪除現場資訊,即通過git stash list看不到任何內容

如果需要新增一個新功能,需要建立一個feature分支,當在該feature分支上執行git add和git commit,沒有執行合併(git merge)的話,無法通過git branch -d feature 刪除該分支,若要強行刪除該分支,需要執行
git branch -D feature #強行刪除該分支

 檢視遠端庫的資訊
git remove -v # -v選項顯示詳細資訊

Git 教學系列文章: 

GitHub 使用教學圖文詳解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git使用圖文詳細教學  http://www.linuxidc.com/Linux/2016-11/136781.htm

Ubuntu Git安裝與使用 http://www.linuxidc.com/Linux/2016-11/136769.htm

Git 標籤管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 遠端倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 伺服器搭建與用戶端安裝  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm 

Git從入門到學會 http://www.linuxidc.com/Linux/2016-10/135872.htm

Git基本操作詳解 http://www.linuxidc.com/Linux/2016-10/135691.htm


IT145.com E-mail:sddin#qq.com