Git使用總結

學習網址

1. http://www.liaoxuefeng.com/   Git的完整學習教程
2. https://git-for-windows.github.io/   windows上安裝msysgit,內部包含模擬環境和Git
3.若是英文很差,可使用中文版,而後直接使用圖形化界面Git Gui,而不使用Git bash

其餘學習網址:
https://blog.cnbluebox.com/blog/2014/04/15/gitlabde-shi-yong/
http://www.oschina.net/translate/10-tips-git-next-level

基本命令

初始化設置

配置本機的用戶名和Email地址

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

建立版本庫(倉庫)

版本庫又叫倉庫(repository),這個目錄裏面的全部文件均可以被Git管理起來,每一個文件的修改、刪除都能被跟蹤。
在合適的位置直接鼠標右鍵建立一個空目錄做爲倉庫,而後從Git-Bash命令行進入到該目錄,或者也可使用命令行建立空目錄,再進入到該空目錄中。  
如下給出建立並初始化git倉庫的代碼:  
進入到倉庫的位置,我將倉庫放在了C:\Android\git-repositories目錄下,注意,使用cd命令進入到目錄中時,在Git-Bash中應該使用斜線」/」,  
而不是反斜線」\」  

$ cd C:/Android/git-repositories
$ mkdir new_repository_1           建立新的目錄
$ cd new_repository_1              進入到建立的目錄

使用init命令將當前目錄初始化爲Git倉庫

$ git init
Initialized empty Git repository in C:/Android/git-repositories/new_repository_1/.git/
(顯示信息意思爲:初始化了一個空的Git倉庫,new_repository_1目錄下多了一個.git目錄,時用來管理版本庫的)

將數據提交到git倉庫(本地倉庫)

第一步:添加文件

$ git add .        添加全部的文件、文件夾
$ git add <file>   添加指定名稱的文件,<>內部寫文件全稱
注:若是文件沒有作出任何修改,則默認不會添加任何文件

第二步:提交文件

$ git commit –m 「commit info」      提交本次事務,即將add的文件提交到git倉庫,引號內部表示本次提交的提示信息

查詢提交狀態

$ git status       顯示提交的狀態:已經添加,等待提交事務的文件(綠色字體表示);已經改變可是沒有添加(not staged)的文件(紅色字體表示);

查詢該文件和git倉庫中的文件的區別,即作了什麼修改

$ git diff <文件全稱>      若是已經add了,就打印不出有什麼修改了,這一步驟應該在add以前,即添加以前能夠用來看看作了什麼修改。

打印歷史記錄

$ git log
Commit xxx              commit id 版本號
Author:xxx<xxx@xxx.com> 提交人和郵箱
Date:xxx                提交的時間
    XXXXXXXXXXXXXX      提交的信息(因此說,提交信息很重要!!!)
$ cat <文件全名稱>      顯示整個文件的內容

版本回退

$ git reset --hard head^
在Git中,HEAD表示當前版本,就是最新提交的版本,即便用git log打印出來的位於第一位的版本,上一個版本就是HEAD^,上上個版本就是HEAD^^,  
當前向上100個能夠寫成HEAD~100。固然,還有一種方式就是直接使用commit id來代替HEAD^,好比版本號是cadab353589f3eef075817b890dafe8b722d802b,  
那麼就能夠直接使用命令:  
$ git reset --hard cadab353589f            使用前幾位表示便可,git會自動查找  
注:版本回退之後,使用git log打印的歷史記錄都是回退版本以前的數據,以後的都沒有了,不過放心,git總有後悔藥能夠吃噠~  
1.若是命令行窗口沒有關閉,直接去前面找commit id便可;  
2.若是命令行窗口關閉了,或者次日後悔了,能夠進入到該目錄下,使用git reflog命令來查看之前的每一次命令,能夠得到每次提交的commit id,  
就能夠版本回退了。  
$ git reflog                           能夠查看命令歷史,包含提交的commit id

版本回退原理

 
簡單講,就是說只要進行了代碼提交,Git內部都會按照時間節點進行記錄,每條記錄都有commit id做爲惟一標識(就像是鏈表每一個節點都有惟一的地址同樣),HEAD老是指向當前版本(就像指針同樣)。所謂的版本回退,僅僅是講Head從當前版本指向了指定的版本,而後將工做區的文件也修改了。linux

工做區和暫存區

Git和其餘版本控制系統的一個不一樣之處就是有暫存區的概念。
- 工做區
就是電腦裏能看到的目錄,好比上面建立的C:\Android\git-repositories\new_repository_1文件夾就是一個工做區。
- 版本庫
工做區中有一個隱藏目錄.git,就是Git的版本庫,版本庫裏存放了不少的東西,其中最重要的就是state(或者叫index)的暫存區,  
還有Git爲咱們自動建立的第一個分支master,以及指向master的一個指針叫HEAD。

前面講到,將文件存入到Git版本庫裏,分兩步執行:
第一步:用git add命令將工做區的修改文件添加到暫存區;  (屢次操做)

 
第二步:用git commit命令將暫存區的全部修改內容提交到當前分支。(事務提交,包含第一步屢次操做,注意,不在暫存區的修改不會被commit) 
 
一旦事務提交以後,若是對工做區沒有作什麼修改,那麼工做區就是乾淨的。 
由於建立Git版本庫的時候,Git自動建立了一個master分支,因此如今git commit 就是往master分支上提交事務。 
Eg: 
android

項目開發實戰-**app

1.  須要安裝的軟件:msysgit
2.  須要申請的帳號:
2.1 公司GitLab帳號:向公司GitLab管理人員申請 – ***
2.2 項目GitLab權限:向本項目的建立/管理人員申請 – 好比**app管理者 ***
3.  進入到GitBash命令行操做:

在合適的位置點擊右鍵,選擇GitBash Here

本機地址爲:C:\Android\git-repositories,本身建立的git倉庫地址

關閉證書驗證:緣由是由於本公司服務器證書已通過期,因此直接關閉證書驗證便可

$ git config --global http.sslVerify false

使用克隆命令將遠程倉庫的代碼複製一份到本地,注意此處應該用https訪問

$ git clone https://***.***.***.***/android/salestool.git
(輸入用戶名和密碼以後,將開始下載遠程倉庫,這裏僅僅下的是主分支-master)

進入到項目,即從命令行進入已經下載下來的git倉庫,saletool/表示本項目的目錄名

$ cd salestool/

查看倉庫的分支狀況

$ git branch –a
顯示以下:
* master
  remotes/origin/HEAD -> origin/master      HEAD-遠程倉庫的當前分支是主分支
  remotes/origin/dev                        dev分支(全部操做都會合併到該分支)
  remotes/origin/master                 master分支-主分支

建立本地倉庫的dev分支

$ git checkout -b dev

將遠程倉庫的dev分支代碼複製到本地dev分支

$ git pull origin dev
(因爲公司服務器比較慢,因此你懂得... ...)

以上操做以下圖所示:

查看本地git倉庫狀態

$ git status
On branch dev       -只有一個本地dev分支(可是內容已是遠程倉庫dev的內容了)
nothing to commit, working directory clean      -此時沒有任何修改,工做區很乾淨

查看分支狀態

$ git branch –a
上面顯示的是本地分支,綠色字體和」*」表示的是當前所在的分支,
下面紅色部分顯示的是遠程倉庫的分支。

建立本身的本地分支,並切換到該分支,本身在此分支上寫代碼

$ git checkout -b dai

此時開始在Android studio中對該項目進行編程~~~

將全部修改文件提交到本地暫存區(staged),等待提交

$ git add .        注意:確保此時在本身的分支上進行操做,eg:dai(我本身的名字)
$ git commit –m 「」     將本地暫存區的代碼提交到本身的分支上

切換到本地dev分支,並將遠程倉庫的dev分支的最新代碼拉下來

$ git checkout dev
$ git pull origin dev
(此時,本地倉庫的dev分支已經確保是最新的了)

切換到本身的分支,將dev分支合併到本身的分支上

$ git checkout dai
$ git merge dev        將本地dev分支合併到本身的分支上
注意:此時已經將dev分支合併到本地的本身的分支上了,有時候可能須要解決代碼衝突問題,解決完畢後進行下面的操做。

若是有衝突,則須要再次進行add,commit操做。

解決衝突完畢後,切換到本地dev分支,將合併完畢的本身的分支合併到本地dev

$ git checkout dev
$ git merge dai


以上操做的代碼以下:

接下來的操做,就是將本地dev分支推到遠程倉庫的dev分支上了... ...

推送到遠程服務器

$ git push origin dev

git進階

其餘命令

1.  git remote –v   顯示遠程分支的名稱和url

忽略文件

有一些文件並不能上傳到git上。
1.Android Studio自動生成配置文件:不能上傳到git上,不然的話,若是你的同事下載下來,可是它的studio(gradle)版本和你的不同,  
或者其餘配置的各類路徑不同,就須要重建項目,嚴重的話,根本沒法重建項目,一片爆紅!網上的方法也解決不了。
2.保存了數據庫密碼或者什麼不能上傳的文件;
。。。
因此須要在項目的根目錄下建立一個名稱爲.gitignore文件,而後把要忽略的文件名填進去,Git就會自動忽略這些文件。  
不須要從頭寫.gitignore文件,GitHub已經爲咱們準備了各類配置文件,只須要組合一下就可使用了。

忽略文件的原則是:
1.忽略操做系統自動生成的文件,好比縮略圖等;
2.忽略編譯生成的中間文件、可執行文件等,也就是若是一個文件是經過另外一個文件自動生成的,那自動生成的文件就不必放進版本庫,  
好比Java編譯產生的.class文件;
3.忽略你本身的帶有敏感信息的配置文件,好比存放口令的配置文件。

想知道忽略那些文件嗎,很簡單,找個大神的github,看看他的項目中怎麼寫的,就ok了!!!
例如,下面是我從張鴻祥哪裏copy的,僅作參考:
/captures

# Built application files *.apk *.ap_ # Generated files bin/ gen/ # Gradle files .gradle/ /build /*/build/ # Local configuration file (sdk path, etc) local.properties # Proguard folder generated by Eclipse proguard/ # Log Files *.log # Eclipse project files .classpath .project .settings/ # Intellij project files *.iml *.ipr *.iws .idea/ # System files .DS_Store 下面是比較清晰的目錄結構:git

GIT GUI簡單使用#

注意:我的建議使用命令行方式進行版本管理,可是可使用圖形化界面看本次代碼的改動,比較方便。   
1.  在所在項目,右鍵選擇git gui

 
2. 界面以下,若是會使用命令行,那麼一看就明白了 
 
3. 配置 
UTF-8:Edit-Options: 
 
若是以前設置好了,直接在項目中右鍵進入,那麼這些都不用設置: 
 
4. Add commit push很快完成,不用輸i入命令 
 
5. 查看代碼對比 
 
若是想要查看全部的改動歷史,能夠: 
 
就能夠看到全部的代碼改動歷史,而不用去網上看。注意,這裏能看到全部人的改動哦!!!很是強大! 
 
6. 設置和遠程倉庫關聯(若是從項目根目錄進入,則自動關聯,不用設置) 
若是須要設置,選擇remote-Add,參考以下: 
 
7. 新建項目,從遠程倉庫克隆 
右鍵選擇git gui: 
 
選擇克隆已有版本庫: 
github

linux命令

1. $ pwd       用於顯示當前目錄
2.$ ls –ah 用於顯示當前目錄下的全部子目錄和文件(包含隱藏的)
3.$ clear  清屏
4.$ exit   退出linux模式

注意:經過cmd進入linux模式,命令是   adb s4.hell

注意事項
1.不要使用記事本打開編輯任何文本文件,可使用Notepad++,默認編碼格式設置爲UTF-8 無BOM;
2.開發Android studio項目,GitBash命令行和as中的Terminal,使用效果是同樣的。
相關文章
相關標籤/搜索