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
$ 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 進入到建立的目錄
$ git init Initialized empty Git repository in C:/Android/git-repositories/new_repository_1/.git/ (顯示信息意思爲:初始化了一個空的Git倉庫,new_repository_1目錄下多了一個.git目錄,時用來管理版本庫的)
$ git add . 添加全部的文件、文件夾 $ git add <file> 添加指定名稱的文件,<>內部寫文件全稱 注:若是文件沒有作出任何修改,則默認不會添加任何文件
$ git commit –m 「commit info」 提交本次事務,即將add的文件提交到git倉庫,引號內部表示本次提交的提示信息
$ git status 顯示提交的狀態:已經添加,等待提交事務的文件(綠色字體表示);已經改變可是沒有添加(not staged)的文件(紅色字體表示);
$ 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
1. 須要安裝的軟件:msysgit 2. 須要申請的帳號: 2.1 公司GitLab帳號:向公司GitLab管理人員申請 – *** 2.2 項目GitLab權限:向本項目的建立/管理人員申請 – 好比**app管理者 *** 3. 進入到GitBash命令行操做:
本機地址爲:C:\Android\git-repositories,本身建立的git倉庫地址
$ git config --global http.sslVerify false
$ git clone https://***.***.***.***/android/salestool.git (輸入用戶名和密碼以後,將開始下載遠程倉庫,這裏僅僅下的是主分支-master)
$ cd salestool/
$ git branch –a 顯示以下: * master remotes/origin/HEAD -> origin/master HEAD-遠程倉庫的當前分支是主分支 remotes/origin/dev dev分支(全部操做都會合併到該分支) remotes/origin/master master分支-主分支
$ git checkout -b dev
$ git pull origin dev (因爲公司服務器比較慢,因此你懂得... ...) 以上操做以下圖所示:
$ git status On branch dev -只有一個本地dev分支(可是內容已是遠程倉庫dev的內容了) nothing to commit, working directory clean -此時沒有任何修改,工做區很乾淨
$ git branch –a 上面顯示的是本地分支,綠色字體和」*」表示的是當前所在的分支, 下面紅色部分顯示的是遠程倉庫的分支。
$ git checkout -b dai
$ git add . 注意:確保此時在本身的分支上進行操做,eg:dai(我本身的名字) $ git commit –m 「」 將本地暫存區的代碼提交到本身的分支上
$ git checkout dev $ git pull origin dev (此時,本地倉庫的dev分支已經確保是最新的了)
$ git checkout dai $ git merge dev 將本地dev分支合併到本身的分支上 注意:此時已經將dev分支合併到本地的本身的分支上了,有時候可能須要解決代碼衝突問題,解決完畢後進行下面的操做。 若是有衝突,則須要再次進行add,commit操做。
$ git checkout dev $ git merge dai 以上操做的代碼以下:
接下來的操做,就是將本地dev分支推到遠程倉庫的dev分支上了... ...
$ git push origin dev
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
注意:我的建議使用命令行方式進行版本管理,可是可使用圖形化界面看本次代碼的改動,比較方便。 1. 在所在項目,右鍵選擇git gui
2. 界面以下,若是會使用命令行,那麼一看就明白了
3. 配置
UTF-8:Edit-Options:
若是以前設置好了,直接在項目中右鍵進入,那麼這些都不用設置:
4. Add commit push很快完成,不用輸i入命令
5. 查看代碼對比
若是想要查看全部的改動歷史,能夠:
就能夠看到全部的代碼改動歷史,而不用去網上看。注意,這裏能看到全部人的改動哦!!!很是強大!
6. 設置和遠程倉庫關聯(若是從項目根目錄進入,則自動關聯,不用設置)
若是須要設置,選擇remote-Add,參考以下:
7. 新建項目,從遠程倉庫克隆
右鍵選擇git gui:
選擇克隆已有版本庫: github
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,使用效果是同樣的。