目錄
1、安裝 Git
在你開始使用 Git 前,需要將它安裝在你的計算機上。 即便已經安裝,最好將它升級到最新的版本。 你可以通過軟件包或者其它安裝程序來安裝,或者下載源碼編譯安裝。
1.1 在 Linux 上安裝
如果你想在 Linux 上用二進制安裝程序來安裝 Git,可以使用發行版包含的基礎軟件包管理工具來安裝。 如果以 Fedora 上爲例,你可以使用 yum:
$ sudo yum install git
如果你在基於 Debian 的發行版上,請嘗試用 apt-get:
$ sudo apt-get install git
要了解更多選擇,Git 官方網站上有在各種 Unix 風格的系統上安裝步驟,網址爲 http://git-scm.com/download/linux。
1.2 在 Mac 上安裝
在 Mac 上安裝 Git 有多種方式。 最簡單的方法是安裝 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的系統中,在 Terminal 裏嘗試首次運行 git 命令即可。 如果沒有安裝過命令行開發者工具,將會提示你安裝。
如果你想安裝更新的版本,可以使用二進制安裝程序。 官方維護的 OSX Git 安裝程序可以在 Git 官方網站下載,網址爲 http://git-scm.com/download/mac。
Figure 7. Git OS X 安裝程序.
你也可以將它作爲 GitHub for Mac 的一部分來安裝。 它們的圖形化 Git 工具有一個安裝命令行工具的選項。 你可以從 GitHub for Mac 網站下載該工具,網址爲 http://mac.github.com。
1.3、在 Windows 上安裝
在 Windows 上安裝 Git 也有幾種安裝方法。 官方版本可以在 Git 官方網站下載。 打開 http://git-scm.com/download/win ,下載會自動開始。 要注意這是一個名爲 Git for Windows的項目(也叫做 msysGit),和 Git 是分別獨立的項目;更多信息請訪問 http://msysgit.github.io/ 。
另一個簡單的方法是安裝 GitHub for Windows。 該安裝程序包含圖形化和命令行版本的 Git。 它也能支持 Powershell,提供了穩定的憑證緩存和健全的 CRLF 設置。 稍後我們會對這方面有更多瞭解,現在只要一句話就夠了,這些都是你所需要的。 你可以在 GitHub for Windows 網站下載,網址爲 http://windows.github.com。
1.4、從源代碼安裝
有人覺得從源碼安裝 Git 更實用,因爲你能得到最新的版本。 二進制安裝程序傾向於有一些滯後,當然近幾年 Git 已經成熟,這個差異不再顯著。
如果你想從源碼安裝 Git,需要安裝 Git 依賴的庫:curl、zlib、openssl、expat,還有libiconv。 如果你的系統上有 yum (如 Fedora)或者 apt-get(如基於 Debian 的系統),可以使用以下命令之一來安裝最小化的依賴包來編譯和安裝 Git 的二進制版:
$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-
$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
爲了能夠添加更多格式的文檔(如 doc, html, info),你需要安裝以下的依賴包:
$ sudo yum install asciidoc xmlto docbook2x
$ sudo apt-get install asciidoc xmlto docbook2x
當你安裝好所有的必要依賴,你可以繼續從幾個地方來取得最新發布版本的 tar 包。 你可以從 Kernel.org 網站獲取,網址爲
https://www.kernel.org/pub/software/scm/git
或從 GitHub 網站上的鏡像來獲得,網址爲
https://github.com/git/git/releases
通常在 GitHub 上的是最新版本,但 kernel.org 上包含有文件下載簽名,如果你想驗證下載正確性的話會用到。
接着,編譯並安裝:
$ tar -zxf git-2.0.0.tar.gz
$ cd git-2.0.0
$ make
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info
完成後,你可以使用 Git 來獲取 Git 的升級:
$ git clone git://git.kernel.org/pub/scm/git/git.git
2、全局設置用戶名郵箱配置
2.1 查看git配置信息
git config --list
2.2 查看git用戶名
git config user.name
2.3 查看郵箱配置
git config user.email
2.4 全局配置用戶名
git config --global user.name “nameVal”
2.5 全局配置郵箱
git config --global user.email “[email protected]”
3、git常用命令
3.1 初始化倉庫
git init
3.2 查看倉庫的狀態信息
git status
3.3 將文件加入暫存區
- 將單個文件加入暫存區
git add 文件名
- 將所有文件加入暫存區
git add .
3.4 提交暫存區到本地倉庫
git commit -m <message>
3.5 查看日誌
git log commit。
可以看到什麼時間什麼人提交了一個什麼commit
3.6 回退文件
已經add了一個文件,但不應該提交此文件,在commit之前我們可以輸入以下命令:
git reset 文件名
3.7 恢復之前文件提交狀態
加入你第4次提交了項目文件,但是發現第四次提交項目文件有問題,想回退到第三次項目提交的文件,那該怎麼辦呢?找到第三次commit的ID,然後通過git reset即可。命令如下:
git reset
此時使用git log會發現第四次提交的記錄消失了。
3.8 查看所有的操作記錄
git reflog
可以查到使用git log查不到的提交記錄。(可以查看到上一個指令介紹中的第四次提交記錄)
git log 與 git reflog顯示的commitID的哈希值不一樣,但其實是一樣的。因爲哈希值的前7位就可以鎖定哈希值了,所以你輸全稱和前7位是一樣的。
3.9 git reset模式
- –hard:不保存所有變更,所有一切都會反原之前commit ID對應的狀態(常用)
- –soft:保留變更變更內容處於Staged
- –mixed:保留變更且變更內容處於Modeified,這個是get reset後面的默認
3.10 分支
通常我們家master做爲主分支,
-
創建新的分支:
git checkout -b <name> <template>
如果template不是本地的,是遠程的,則需要加個origin。
git checkout -b <name> origin <template>
第一個參數name是建立的分支名,第二個參數指以哪個分支或者commit爲模版,第二個參數不填,以當前分支爲模版。加入我們以當前分支爲模版,新切一個分支,新分支的commit記錄會繼承模版分支,但切完分支之後,新分支的改動和模版分支不再有關係。
-
切換分支:
git checkout 分支名
-
查看所有的分支(本地):
git branch
其中高亮的條目代表我們當前所處的分支。
3.11 合併
合併其它分支的變更,並不是分支的內容哦。
git merge
3.12 遠程操作
-
下載遠程倉庫至本地
使用遠程倉庫作爲中央倉庫來管理所有的分支。
在遠程倉庫github或gitee中創建一個倉庫,在創建倉庫完成後複製下載鏈接,分別將遠程倉庫下載到本地,執行命令:git clone
會發現電腦出現了這個倉庫的文件夾。
-
本地分支的commit推送至遠程倉庫
使用git push將本地創建的分支br-a推送至遠端會發現無法推送,提示我們當前分支br-a沒有上流分支,它是指bc-a僅存在你的本地,而遠端沒有這個分支。爲了推送這個分支,並將遠端分支設置爲上流分支,可以使用如下命令:
get push --set-upstream origin br-a
其中–setup-stream是指設置上流分支,origin是指遠端倉庫。所以上述命令的意思是指將遠程倉庫的br-a分支作爲本地br-a分支的上流分支。我們到github或gitee上可以看到有兩個分支:master、br-a。
將本地推送變更推送至遠端:
git push
簡單總結下,如果分支是本地新切的,沒有設置上流分支,則需要使用get push --set-upstream先設置上流分支,之後的commit都可以通過git push進行提交。
-
拉取遠程倉庫信息
-
把遠程倉庫的分支信息拉取到本地倉庫(只是獲知遠程倉庫信息)
git fetch
-
查看本地倉庫(只展示本地的fetch,看不到遠程倉庫分支信息)
git brach
-
切換新分支(本地不存在的新分支)
git checkout br-a(遠程倉庫分支名)
可以順利的切換出br-a。此時的br-a也是本地的,只不過模版分支來自遠程倉庫。
注意:如果不先git fetch的話,git checkout br-a 這條指令是沒用的。
此時本地切的分支本身就來自遠程倉庫,所以不需要設置遠程的上流分支。
-
爲什麼需要fetch機制呢?
每次check out的時候,直接去遠程倉庫檢測,是否有該分支不行嗎?爲什麼要設置fetch機制呢?在我們使用git的絕大數場景下,git都是在本地切換切去,只有在團隊協作時才需要和遠程倉庫交互,所以每次check out都檢測遠程倉庫,這無疑是一件很浪費網絡資源的事。
-
3.13 git pull
git pull是將遠程的上流分支的內容與本地分支merage,所以git pull等效於先fetch再自動merge,是一種便捷的方式。
3.14 變基(Rebase)
rebase重新排列base,base指的是commit。對於這塊,網上很多文章,可以去網上找下,很容易理解的。