Git發(fā)展
- Linus -> Linux
- 分布式: 每一臺(tái)電腦, 都可以下載完整的代碼和歷史消息, 都是獨(dú)立的倉(cāng)庫(kù)
- 離線方式: 可以離線, 在沒(méi)有網(wǎng)絡(luò)的情況下, 繼續(xù)使用, 可以訪問(wèn)所有的歷史
- 倉(cāng)庫(kù): 存儲(chǔ)代碼修改歷史空間
- 本地倉(cāng)庫(kù): 本地電腦中保存所有修改歷史的空間
- 遠(yuǎn)程倉(cāng)庫(kù): 保存修改歷史, 并且多臺(tái)電腦可以同步修改
- 本地, 遠(yuǎn)程: 遠(yuǎn)程倉(cāng)庫(kù), 只保留歷史修改, 不保存實(shí)際的目錄和文件; 本地倉(cāng)庫(kù)包含倉(cāng)庫(kù)數(shù)據(jù), 以及工作目錄
- 工作目錄: 本地倉(cāng)庫(kù)外會(huì)包含當(dāng)前最新的一套可以修改操作的文件內(nèi)容
創(chuàng)建Git本地倉(cāng)庫(kù)
-
git init
1). 如果執(zhí)行g(shù)it init沒(méi)有參數(shù), 代表把當(dāng)前目錄作為GIt本地倉(cāng)庫(kù)來(lái)初始化
- 如果執(zhí)行 git init --bare 代表創(chuàng)建遠(yuǎn)程服務(wù)器倉(cāng)庫(kù)
- 執(zhí)行之后, 在指定的目錄中創(chuàng)建.git文件夾;可以認(rèn)為.git就是倉(cāng)庫(kù), 存儲(chǔ)修改歷史的記錄;
獲取工作目錄的狀態(tài)
- git status 獲取當(dāng)前工作目錄的狀態(tài): 顯示出當(dāng)前工作目錄中, 哪些文件是新添加, 哪些是刪除, 以及哪些是未添加的
添加修改, 變化
任何新的文件, 放到工作目錄中, 默認(rèn)Git不會(huì)管理它, 只有g(shù)it add之后才能夠進(jìn)行管理; 相當(dāng)于把修改添加到git倉(cāng)庫(kù)中的一個(gè)緩沖區(qū)里;
只有在緩沖區(qū)的內(nèi)容才可以提交給倉(cāng)庫(kù)管理;
指令格式:
1). git add 文件全名 添加特定的文件;
2). git add 目錄名 把指定目錄的變化添加;
3). git add . 提交當(dāng)前文件夾中的所有文件;
提交緩沖區(qū)修改 到 倉(cāng)庫(kù)
git commit
提交: 把緩沖區(qū)的內(nèi)容提交到倉(cāng)庫(kù)內(nèi)部的數(shù)據(jù)庫(kù), 修改的歷史;
-
如果是git 第一次安裝執(zhí)行, git 需要配置的當(dāng)前用戶的名稱和郵箱 (Please tell me who you are ?)
1). 配置名稱: git config --global user.name "XXX"
2). 配置郵箱: git config --global user.email "XXX@XX.XXX"
Vim的基本命令
- a -> 進(jìn)入INSERT編輯模式
- esc -> 退出當(dāng)前模式
- : -> 寫指令
- w -> 保存寫文件
- wq -> 保存退出
- !q -> 強(qiáng)制退出
快速提交
-
git commit -am "message"
1). git commit -a : 提交所有的改動(dòng) (包括刪除, 修改, 添加的文件)
2). git commit -m : 代表后面跟隨 提交的日志
3). -am -> -a -m
4). 支持單行輸入日志
修改并且提交
- 修改指定的文件;
- git status 查看當(dāng)前工作目錄中文件的修改狀態(tài)
- git add 被修改的文件
- git commit 提交修改
刪除文件并且提交
- rm 文件 (不用太關(guān)注)
- git status 查看當(dāng)前工作目錄中文件的修改狀態(tài)
- git rm 文件 相當(dāng)于把刪除文件的操作, 保存到緩沖區(qū); 只有這樣, 在提交的時(shí)候, 才會(huì)把刪除的操作提交; 刪除的文件必須是之前提交過(guò)的
遠(yuǎn)程倉(cāng)庫(kù)
常見(jiàn)的遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器
- github.com 公開(kāi)倉(cāng)庫(kù)免費(fèi), 私有倉(cāng)庫(kù)收費(fèi)
- bitbucket.org 無(wú)限私有倉(cāng)庫(kù), 國(guó)外的JIRA
- 開(kāi)源中國(guó) git.oschina.net 1000個(gè)倉(cāng)庫(kù)
如何創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)
- 網(wǎng)站管理: 指定倉(cāng)庫(kù)名稱, 獲取git網(wǎng)址
- 創(chuàng)建時(shí), 注意: 不要選擇README, 忽略和License
- 因?yàn)橄葎?chuàng)建本地倉(cāng)庫(kù)了, 提交到遠(yuǎn)程的時(shí)候, 第一次提交遠(yuǎn)程服務(wù)器必須是空的, 不能有任何文件
關(guān)于遠(yuǎn)程倉(cāng)庫(kù)的網(wǎng)址
- HTTPS網(wǎng)址: 需要每次提交, 查看日志都需要輸入用戶名和密碼 (盡量不要使用)
- SSH + git 網(wǎng)址: git@xxx.xxx.xxx:username/repp.git, 必須設(shè)置公鑰到服務(wù)器才可以用, 不需要輸入用戶名和密碼(強(qiáng)烈推薦)
- SSH公鑰生成: ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
本地倉(cāng)庫(kù)與遠(yuǎn)程服務(wù)器的鏈接
- git remote add <別名> <網(wǎng)址>
- 作用, 添加服務(wù)器配置信息;
- 當(dāng)服務(wù)器與本地倉(cāng)庫(kù)配置好, 就可以提交了!
- 新工程提交到服務(wù)器: git push -u origin master (-u 是讓本地和遠(yuǎn)程服務(wù)器連接, 首次需要)
- 查看遠(yuǎn)程倉(cāng)庫(kù): git remote -v
代碼提交流程
- 本地提交 git commit;
- 測(cè)試完成;
- 從服務(wù)器同步代碼;
- 合并代碼, 再次測(cè)試代碼
- push代碼: 通過(guò)這種方式提交到服務(wù)器;
- 對(duì)于第三方或者是開(kāi)源的工程, 需要第5步申請(qǐng)PullRequest
Git的代碼下載
Clone 從已有的倉(cāng)庫(kù)中同步代碼
- git clone <網(wǎng)址> [目標(biāo)目錄](méi)
- 只能下載, 如果希望提交, 那么需要在網(wǎng)站設(shè)置權(quán)限
Android Studio中使用Git
基本配置
- Settings -> Git -> Path to Git executable: 找到安裝的git的目錄 例: C:\Git\cmd\git.exe
- VCS -> Enable Version Control .. : 選擇Git
創(chuàng)建工程的注意事項(xiàng)
- 創(chuàng)建工程, git init
- 設(shè)置忽略 : .gitignore文件, 可以設(shè)置忽略的內(nèi)容
- 忽略好才可以添加和提交
- Android Studio的.gitignore模板位置: C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle-projects\NewAndroidProject\root
附: .gitignore文件
# IntelliJ IDEA
.idea/
*.iml
*.ipr
*.iws
out/
# Gradle build folder
/build
.gradle/
# Android files
local.properties
bin/
gen/
# JNI compile files
*.o
*.o.d
# Android 2.2 C/C++ complile
.externalNativeBuild/
# OS autogen folder information
.DS_Store
Thumbs.db
# Temp files
*.bak
*.tmp
*.temp
*.swp
*.*~
~*.*