https://git-scm.com
http://www.runoob.com/manual/git-guide/
Git分布式版本控制系統(tǒng)。
SVN集中式和Git分布式版本控制系統(tǒng)有什么區(qū)別呢?
集中式:
1、必須聯(lián)網(wǎng),且?guī)拤虼?,速度夠快?br>
2、依賴控制系統(tǒng)的中央服務(wù)器,如果中央服務(wù)器出了問題,則沒法干活;
分布式:
1、沒有中央服務(wù)器的概念,每臺電腦都是一個完整的版本庫,互相不依賴;
2、提交時才需要聯(lián)網(wǎng)處理修改的文件;
Git工作原理
Git管理的是修改(如新增文件、新增字符、刪除文件、刪除字符、修改字符等),而不是文件。
1、概念
工作區(qū):個人電腦里的文件夾目錄。
版本庫:工作區(qū)的隱藏目錄.git。
暫存區(qū):版本庫里的stage,或index。
分支:版本庫里自動創(chuàng)建的唯一一個master分支。branch。
HEAD:
2、操作命令執(zhí)行
步驟1 添加文件 git add (git add . 或git add 文件名稱),即把工作區(qū)的文件添加到版本庫中的暫存區(qū);
步驟2 提交文件 git commit (git commit -m "說明"),即把版本庫中暫存區(qū)的所有內(nèi)容提交到當前分支;
步驟3 刪除文件 git rm (git rm 文件名稱),即把版本庫當前分支的文件刪除;
步驟4 提交到遠程倉庫 git push(git push origin master)
Git的安裝
1、在Linux上安裝Git:sudo apt-get install git
2、Mac OS X上安裝Git:
方法1
安裝homebrew,然后通過homebrew安裝Git,具體方法請參考homebrew的文檔:http://brew.sh/。
// 安裝
brew install git
// 檢測git是否安裝成功:
git --version
// 顯示當前git的路徑
which git
方法2
安裝Xcode,Xcode集成了Git,不過默認沒有安裝,你需要運行Xcode,選擇菜單“Xcode”->“Preferences”,在彈出窗口中找到“Downloads”,選擇“Command Line Tools”,點“Install”就可以完成安裝了。
Git的配置
1、指定用戶名:git config --global user.name "Your Name"。如:
git config --global user.name "devZhang"
2、指定郵件地址:git config --global user.email "email@example.com"。如:
git config --global user.email "xxxx@163.com"
如何取消設(shè)置?
Git的使用倉庫,也叫版本庫repository,即文件管理(修改、刪除)的目錄1、創(chuàng)建目錄步驟1、創(chuàng)建存放文件的目錄:mkdir 目錄名。
mkdir learnGit
步驟2、進入目錄:cd 目錄名。如:
cd learnGit
步驟3、查看目錄路徑:pwd。如:
pwd
2、將目錄變成git可以管理的倉庫
步驟1、git init。如:
git init
創(chuàng)建成功后,目錄下會多一個Git用來跟蹤管理版本庫的 .git 的目錄。注意:空目錄,或已經(jīng)有資料的目錄都可以創(chuàng)建Git倉庫。
3、把文件添加到版本庫
注意:Git版本庫只能管理以純文本(txt文件、網(wǎng)頁、程序代碼等)編寫的文件,而圖片文件,或音視頻文件則只知道如從100KB變成120KB的改變,而不像知道文本文件第幾行新增,或修改,或刪除了某個單詞這么詳細。
步驟1、把文件添加到倉庫:git add 文件名。如:
git add learnGit.txt
// .表示所有修改,或添加的文件
git add .
步驟2、把文件提交到倉庫:git commit -m 備注。如:
git commit -m “添加文件learnGit.txt”
步驟3、把文件提交到服務(wù)器:git push。如:
git push origin master
4、查看倉庫狀態(tài)
步驟1、倉庫當前的狀態(tài):git status步驟2、倉庫文件修改內(nèi)容:git diff,或git diff 文件名。如:
git diff
// 或
git diff learnGit.txt
5、查看倉庫記錄
顯示從最近到最遠的提交日志。
步驟1、歷史記錄:git log。如:
git log
或單行歷史記錄:git log --pretty=oneline。
git log --pretty=oneline
6、查看命令歷史
顯示每一次命令的記錄。
步驟1、命令歷史:git reflog。如:
git reflog
7、版本回退
版本回退,上個版本head,上上個版本head^,……,100個版本head~100。
步驟1 回退版本:git reset —-hard HEAD版本,或git reset —-hard 版本號。如:
// 上個版本
git reset —-hard HEAD^
// 上上個版本
git reset —-hard HEAD^^
// 或指定版本號
git reset —-hard 655645645。
8、修改撤銷
情況1、文件修改后但沒有add到暫存區(qū)時,即在工作區(qū)中修改的可以撤銷;
情況2、文件add到暫存區(qū)后做了修改時,即在暫存區(qū)中修改的可以撤銷;
步驟1、撤銷修改內(nèi)容:git checkout —- 文件名稱。如:
git checkout —- learnGit.txt
9、暫存區(qū)的修改回退到工作區(qū)
步驟1、git reset HEAD 文件名稱。如:
git reset HEAD learnGit.txt
10、刪除文件
先將文件從目錄文件夾中刪除,再從版本庫中刪除
步驟1、刪除文件:git rm 文件名稱。如:
git rm test.txt
步驟2、提交刪除文件:git commit -m 備注。如:
git commit -m “remove file:test.txt”
11、設(shè)置版本號
(1)添加本地版本號
git tag x.x.x -m "版本號說明"
或添加標簽(記錄某人某時打的標簽)
git tag -a vx.x.x -m "版本號說明"
(2)提交到遠程倉庫:
git push origin master --tags
(3)查看所有版本號:
git tag
(4)刪除本地版本號
// 格式:git tag -d x.x.x,示例
git tag -d 1.0.2
// 提交到遠程倉庫,即把與之對應(yīng)的遠程倉庫的版本號也刪除
// 格式(注意冒號前有個空格):git push origin :x.x.x,示例:
git push origin :1.0.2
12、其他
(1)查看修改詳情
git show
// 或
git log -p
(2)查看某個文件的包含提交人員,日期、版本號等記錄信息,不包括修改詳情
git whatchanged
13、git分支
(1)查看分支信息
// 本地分支
git branch
// 遠程分支
git branch -a
(2)創(chuàng)建分支
git branch branchName
// 示例
git branch IMTeam
(3)切換分支
git checkout branchName
// 示例
git checkout IMTeam
(4)合并分支:git merge 合并時,先切換回主干
// 切換回主分支
git checkout master
// 合并分支到主干
git merge IMTeam
(5)創(chuàng)建并切換分支
git checkout -b branchName
// 示例
git checkout -b IMTeam
(6)刪除本地分支
git branch -d branchName
// 示例
git branch -d IMTeam
(7)刪除遠程分支
git branch -r -d origin/分支名稱
git push origin :分支名稱
(8)本地工作區(qū)的分支提交到遠程倉庫
git push origin 分支名稱
注意:
(1)通常遠程倉庫分支不會一起下載下來,如果要進行分支開發(fā),可以這樣設(shè)置 git checkout -b 分支名 origin/分支名。另外再次說明,分支可以是本地分支,也可以是遠程倉庫分支,本地分支要提交到遠程倉庫時,可以使用語句 git push origin 分支名稱。
(2)使用地址下載源碼后,進行切換分支則當前操作的源碼只會對分支源碼有影響,即下載的源碼目錄也會跟著分支改變。合并分支時,先將分支的修改提交到緩存區(qū)(git add . ; git commit -m “xxx”),然后切換回主干(git checkout master),接著進行合并(git merge IMTeam),最后再次將主干的修改進行提交(git add . ; git commit -m “xxx”)。
具體步驟如下:
a)查看分支:git branch
b)查看狀態(tài):git status
c)提交:git add . ; git commit -m “說明”
d)先切換回主分支:git checkout master
e)查看狀態(tài):git status——無變化
f)合并分支:git merge IMTeam
g)查看狀態(tài):git status——有變化
h)提交:git add . ; git commit -m “說明”
i)提交:git push
14、查看遠程倉庫信息
git remote
顯示更詳細的遠程倉庫信息
git remote -v
15、本地倉庫與遠程倉庫的關(guān)聯(lián)
- 存在遠程倉庫DemoTest,但沒有在終端通過命令 git clone 遠程倉庫地址"克隆到本地
- 在本地創(chuàng)建與遠程倉庫同名稱的目錄DemoTest
- 通過終端命令 cd .... 進入本地目錄路徑DemoTest
- 通過終端命令 git init 將本地目錄DemoTest初始化成一個代碼倉庫
- 本地代碼倉庫關(guān)聯(lián)遠程倉庫,在終端使用命令 git remote add 遠程倉庫地址"
- 查看 git remote
- 將遠程倉庫代碼克隆到本地代碼倉庫 git pull origin master
注意事項:
1、遠程倉庫源碼下載到電腦A,電腦B;
2、電腦A中進行修改,但沒有提交到遠程倉庫;
3、電腦B中進行修改,且提交到了遠程倉庫;
4、再次對電腦A進行操作時,需要將遠程倉庫中的最新源碼下載到電腦A中;
5、查看電腦A中是否有變更操作(git status),有變更時,需要把在工作區(qū)中的變更提交到緩存區(qū)(git add . git commit -m "說明");
6、提交到緩沖區(qū)后,再將遠程倉庫的最新源碼下載到本地緩沖區(qū)(git pull);
7、查看源碼是否存在沖突,有沖突時解決沖突,并重新提交到緩存區(qū)(git add . git commit -m "說明");
8、解決沖突后,或沒有沖突時,再將電腦A中的源碼提交到遠程倉庫(git push origin master);