Git使用筆記01
本文基本的參考文章鏈接例如以下所看到的:
- Pro Git(中文版)
- Git教程
- Git使用教程
簡單介紹與說明
Git是一個分布式版本號管理系統,是為了更好地管理Linux內核開發而創立的。Git能夠在不論什麽時間點,把文檔的狀態作為更新記錄保存起來。
因此能夠把編輯過的文檔復原到曾經的狀態,也能夠顯示編輯前後的內容差異。
Git與SVN的差別
SVN是集中式版本號控制系統。版本號庫是集中放在中央server的。而工作的時候,用的都是自己的電腦,所以首先要從中央server那裏得到最新的版本號。工作完畢後,須要把自己做完的活推送到中央server。集中式版本號控制系統是必須聯網才幹工作。假設在局域網還能夠。帶寬夠大,速度夠快;假設在互聯網。網速慢的話就比較惱火。
Git是分布式版本號控制系統。那麽它就沒有中央server的,每一個人的電腦就是一個完整的版本號庫。這種話工作的時候就不須要聯網,由於版本號都是在自己的電腦上。
既然每一個人的電腦都有一個完整的版本號庫,那多個人怎樣協作呢?比方說自己在電腦上改了文件A,其它人也在電腦上改了文件A,這時你們兩之間僅僅需把各自的改動推送給對方,就能夠互相看到對方的改動。
Win7環境下安裝與配置
聯網到Git官網下載頁面下載Git安裝包,然後雙擊安裝。
【開始】菜單->【全部程序】->【Git】->【Git Bash】,會彈出例如以下操作界面:
Git的設置信息被存放在用戶本地文件夾的.gitconfig文檔裏。
盡管能夠直接編輯配置文件。但在這裏我們使用config命令。
Git是分布式版本號控制系統,所以須要填寫username和郵箱作為一個標識。
git config --global user.name "<username>" git config --global user.email "<電子郵件>"
--global
參數表示這臺機器上全部的Git倉庫都會使用這個配置,當然也能夠對某個倉庫指定的不同的username和郵箱。能夠為Git命令設定別名(如把「checkout」縮略為「co」,然後就使用「co」來執行命令)
git config --global alias.co checkout
假設在Windows使用命令行(Git Bash), 含非ASCII字符的文件名稱不能正常顯示。
git config --global core.quotepath off
讓Git以彩色顯示。
git config --global color.ui auto
本地倉庫操作
創建版本號庫
版本號庫(又名倉庫,英文名repository)。能夠簡單的理解為一個文件夾,這個文件夾裏面的全部文件都能夠被Git管理起來,每一個文件的改動、刪除等,Git都能跟蹤,以便不論什麽時刻都能夠追蹤歷史,或者在將來某個時刻還能夠將文件還原。
- 在某路徑下新建版本號庫所需的文件夾,然後通過
cd
命令轉到該新建文件夾(演示樣例文件夾為E:\git_test) 執行Git初始化命令,能夠把這個文件夾變成Git能夠管理的倉庫。
git init
此時git_test文件夾下會多出.git的文件夾。這個文件夾是Git用來跟蹤管理版本號的,沒事千萬不要手動亂改這個文件夾裏面的文件
ls -a
加入文件到版本號庫
- 在版本號庫git_test文件夾下新建一個名為「readme.txt」的文件。寫入“111111”作為文件內容。
使用命令
git add <文件名稱>
將文件加入到暫存區(索引區)。使用空格切割能夠指定多個文件。使用點號
.
能夠指定全部文件。使用命令
git commit -m <文件名稱>
告訴Git,把全部改動提交到本地的版本號庫。通過命令
git status
來查看是否還有文件未提交。改動「readme.txt」文件的內容(如加入一行“222222”內容)。
再次通過命令
git status
來查看是否還有文件未提交。使用命令
git diff <文件名稱>
查看「readme.txt」文件究竟改了什麽內容。能夠看出「readme.txt」文件的內容加入了一行“222222”的內容。
知道對「readme.txt」文件做了什麽樣的改動後。就能夠放心的提交到倉庫。提交改動和提交文件是同樣的操作。
使用
git log
命令,能夠查看倉庫的操作記錄。
版本號回退
- 再次改動「readme.txt」文件的內容(如加入一行“333333”內容)。
提交這次的改動。
使用命令
git log
或者git log --pretty=oneline
查看倉庫的操作記錄。假設想要回退到前兩個版本號。使用
git reset --hard HEAD~2
命令。再次查看日誌記錄。此時已經沒有後兩次操作的記錄。
假設又想回退到最新的版本號。使用命令
git reflog
查看全部的操作記錄。使用命令
git reset --hard <版本號號>
回退到倉庫的指定版本號。
撤銷改動
- 再次改動「readme.txt」文件的內容(如加入一行“444444”內容)。
在未提交之前,假設發現加入444444內容有誤,所以得立即恢復曾經的版本號,如今能夠有例如以下幾種方法:
- 假設知道須要刪掉哪些內容的話,直接手動更改去掉那些內容,然後add加入到暫存區,最後commit提交。
- 能夠按前述的方法直接恢復到某個版本號。
假設不想使用上面的兩種方法,而想直接想使用撤銷命令該怎樣操作呢?首先查看狀態。
能夠發現。Git會告訴你git checkout --<文件名稱>
能夠撤銷工作區的改動。命令
git checkout --<文件名稱>
的意思就是把文件在工作區做的改動全部撤銷(--
非常重要,假設沒有的話。那麽該命令就是創建分支)。這有2種情況:- 文件被改動後,還沒有放到暫存區(即沒有使用
git add
命令)。使用撤銷改動就回到和版本號庫一模一樣的狀態。 - 文件已經放入暫存區,接著又作了改動,撤銷改動就僅僅是回到加入到暫存區後的狀態。
- 文件被改動後,還沒有放到暫存區(即沒有使用
刪除文件
- 新建名為「new_one.txt」的文件。然後提交。
手動刪除名為「new_one.txt」的文件,然後查看查看的狀態。
使用命令
git rm <文件名稱>
將文件從暫存區刪除。使用命令
git commit -m *
提交操作。
遠程倉庫操作
獲取遠程倉庫
假設想對某個開源項目出份力,能夠先把該項目的Git倉庫復制出來,這就須要用到 git clone
命令。
- 轉到某個用於存放項目的文件夾(如E:\)。
使用命令
git clone <url> [自己定義項目名稱]
克隆遠程倉庫。轉到克隆所得的倉庫文件夾。使用命令
git remote -v
查看當前配置有哪些遠程倉庫。
從遠程倉庫拉取數據
使用命令
git fetch <remote-name>
從遠程倉庫拉取數據到本地。此命令會到遠程倉庫中拉取全部本地倉庫中還沒有的數據。
執行完畢後。就能夠在本地訪問該遠程倉庫中的全部分支。
假設是克隆了一個倉庫,此命令會自己主動將遠程倉庫歸於
origin
名下,所以git fetch origin
會抓取從你上次克隆以來(或是上次fetch以來)別人上傳到此遠程倉庫中的全部更新。須要記住,fetch命令僅僅是將遠端的數據拉到本地倉庫,並不自己主動合並到當前工作分支,僅僅有當你確實準備好,才幹手工合並。使用命令
git pull
從遠程倉庫拉取數據到本地。假設設置了某個分支用於跟蹤某個遠端倉庫的分支,能夠使用
git pull
命令自己主動拉取數據下來,然後將遠端分支自己主動合並到本地倉庫中的當前分支。日常工作中常常這麽用,既快且好。實際上。默認情況下
git clone
命令本質上就是自己主動創建本地的master分支用於跟蹤遠程倉庫中的master分支(假設遠程倉庫確實有master分支),所以一般我們執行git pull
。目的都是要從原始克隆的遠端倉庫中拉取數據後。合並到工作文件夾中的當前分支。
推送數據到遠程倉庫
項目進行到某個階段,要同別人分享眼下的成果,能夠將本地倉庫中的數據推送到遠程倉庫。
使用 git push <remote-name> <branch-name>
能夠實現推送功能,假設要把本地的master分支推送到origin遠程倉庫(克隆操作會自己主動使用默認的master和origin名字)。
git push origin master
僅僅有擁有所克隆的server上的寫權限,或者同一時刻沒有其它人在推數據,這條命令才會如期完畢任務。假設在你推數據前,已經有其它人推送了若幹更新,那你的推送操作就會被駁回。
你必須先把他們的更新拉取到本地,合並到自己的項目中。然後才幹夠再次推送。
查看遠程倉庫信息
使用命令 git remote show <remote-name>
查看某個遠程倉庫的具體信息(比方要看所克隆的origin倉庫),會給出很多默認信息。
遠程倉庫的刪除和重命名
使用 git remote rename *
命令改動某個遠程倉庫在本地的簡稱。
對遠程倉庫的重命名,也會使相應的分支名稱發生變化(比如原來的origin/master分支如今變成myori/master分支)。
碰到遠端倉庫server遷移,或者原來的克隆鏡像不再使用,又或者某個參與者不再貢獻代碼,那麽須要移除相應的遠端倉庫。
使用 git remote rm <remote-name>
命令移除相應的遠端倉庫。
Git使用筆記01