Git使用總結(包含Git Bash和Git GUI的使用)(轉自CSDN)


基本命令

初始化設置

配置本機的用戶名和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從當前版本指向了指定的版本,然后將工作區的文件也修改了。

工作區和暫存區

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: 

項目開發實戰-**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 GUI簡單使用#

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

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

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,使用效果是一樣的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM