Git 一款免費、開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項目。
官網(wǎng)下載地址https://git-scm.com/downloads/
Git是用于Linux內(nèi)核開發(fā)的版本控制工具。采用分布式版本庫的作法,不需要服務器端軟件,就可以運作版本控制,使得源代碼的發(fā)布和交流極其方便。速度快,最為出色的是它的合并追蹤(merge tracing)能力。
工作實際開發(fā)操作步驟(簡化):
一、如何從GitLab上clone項目:
Android Studio工具VCS-->Checkout from Version Control-->Git Git Repository URL:填寫剛剛復制的項目地址 Parent Directory:項目路徑 Directory Name:項目文件夾名稱
二、如何創(chuàng)建上傳至GitLab:
1.輸入用戶名與郵箱,--global 參數(shù)表示你這臺機器上所有的Git倉庫都會使用這個配置。
git config -- global user.name "Your Name"
git config -- global user.email "email@example.com"
2.檢查電腦是否已經(jīng)有 SSH Keys
cd~/.ssh
ls
3.創(chuàng)建一個 SSH Keys 第一個Enter表示Keys存儲的位置,默認按回車鍵即可。第二個和第三個Enter表示Push文件的時候要輸入的密碼,不需要密碼就默認按回車鍵即可
$ ssh-keygen -t rsa -C "your_email"
4.開發(fā)工具中修改項目外部.gitignore
*.iml
.gradle
/local.properties
.idea
.DS_Store
/build
/captures
.externalNativeBuild
5.創(chuàng)建本地Git倉庫 Android Studio頂部菜單欄上的VCS-->Import into Version Control-->Create Git Repository
6.關聯(lián)遠程倉庫 git remote add origin git@gitlab.com:wildma/WildmaGit.git 項目的遠程地址
7.添加文件 VCS-->Git-->Add...
8.提交文件 每次提交前需要先更新項目VCS-->Update Project 選中Merge,點擊OK 然后提交文件VCS-->Git-->Commit Directory...
9.將提交的文件推送到遠程倉庫 VCS-->Git-->Push...
Git基本常用命令:
mkdir: XX (創(chuàng)建一個空目錄 XX指目錄名)
pwd: 顯示當前目錄的路徑。
git init 創(chuàng)建新的 git 倉庫(把當前的目錄變成可以管理的git倉庫,生成隱藏.git文件)
git add XX 把xx文件添加到暫存區(qū)去。(git add -A .來一次添加所有改變的文件 git add -A表示添加所有內(nèi)容 git add . 表示添加新文件和編輯過的文件不包括刪除的文件 git add -u 表示添加編輯或者刪除的文件,不包括新添加的文件)
git commit –m “XX” 提交文件 –m 后面的是注釋。
git push origin master Git會把master分支推送到遠程庫對應的遠程分支上(可以把 master 換成你想要推送的任何分支)
git status 查看倉庫狀態(tài)
git log 查看歷史記錄
git diff XX 查看XX文件修改了那些內(nèi)容
git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一個版本
(如果想回退到100個版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件內(nèi)容
git reflog 查看歷史記錄的版本號id
git checkout -- XX 把XX文件在工作區(qū)的修改全部撤銷。
git rm XX 刪除XX文件
git remote add origin https://github.com/tugenhua0707/testgit 關聯(lián)一個遠程庫
git push –u(第一次要用-u 以后不需要) origin master 把當前master分支推送到遠程庫
git clone /path/to/repository創(chuàng)建一個本地倉庫的克隆版本
git clone username@host:/path/to/repository遠端服務器上的倉庫
git checkout –b dev 創(chuàng)建dev分支 并切換到dev分支上
git branch 查看當前所有的分支
git checkout master 切換回master分支
git merge dev 在當前的分支上合并dev分支
git branch –d dev 刪除dev分支
git branch name 創(chuàng)建分支
git stash 把當前的工作隱藏起來 等以后恢復現(xiàn)場后繼續(xù)工作
git stash list 查看所有被隱藏的文件列表
git stash apply 恢復被隱藏的文件,但是內(nèi)容不刪除
git stash drop 刪除文件
git stash pop 恢復文件的同時 也刪除文件
git remote 查看遠程庫的信息
git remote –v 查看遠程庫的詳細信息
git remote add origin <server>如果你還沒有克隆現(xiàn)有倉庫,并欲將你的倉庫連接到某個遠程服務器
Git特點:
1.分布式:Git系統(tǒng)是一個分布式的系統(tǒng),是用來保存工程源代碼歷史狀態(tài)的命令行工具。
2.保存點:Git的保存點可以追蹤源碼中的文件, 并能得到某一個時間點上的整個工程項目的狀態(tài);可以在該保存點將多人提交的源碼合并, 也可以回退到某一個保存點上。
3.Git離線操作性:Git可以離線進行代碼提交,因此它稱得上是完全的分布式處理,Git所有的操作不需要在線進行;這意味著Git的速度要比SVN等工具快得多,因為SVN等工具需要在線時才能操作,如果網(wǎng)絡環(huán)境不好, 提交代碼會變得非常緩慢。
4.Git基于快照:SVN等老式版本控制工具是將提交點保存成補丁文件,Git提交是將提交點指向提交時的項目快照,提交的東西包含一些元數(shù)據(jù)(作者,日期,GPG等)。
5.Git的分支和合并:分支模型是Git最顯著的特點,因為這改變了開發(fā)者的開發(fā)模式,SVN等版本控制工具將每個分支都要放在不同的目錄中,Git可以在同一個目錄中切換不同的分支。
6.分支即時性:創(chuàng)建和切換分支幾乎是同時進行的,用戶可以上傳一部分分支,另外一部分分支可以隱藏在本地,不必將所有的分支都上傳到GitHub中去。
7.分支靈活性:用戶可以隨時創(chuàng)建、合并、刪除分支,多人實現(xiàn)不同的功能,可以創(chuàng)建多個分支進行開發(fā),之后進行分支合并,這種方式使開發(fā)變得快速、簡單、安全。
工作流
你的本地倉庫由 git 維護的三棵“樹”組成。第一個是你的 工作目錄,它持有實際文件;第二個是 緩存區(qū)(Index),它像個緩存區(qū)域,臨時保存你的改動;最后是 HEAD,指向你最近一次提交后的結果。

SVN與Git的主要區(qū)別:
SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務器的,而干活的時候,用的都是自己的電腦,所以首先要從中央服務器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服務器。集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)還可以,帶寬夠大,速度夠快,如果在互聯(lián)網(wǎng)下,如果網(wǎng)速慢的話,就納悶了。
Git是分布式版本控制系統(tǒng),那么它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,這樣,工作的時候就不需要聯(lián)網(wǎng)了,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協(xié)作呢?比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。