Git是一個開源的分布式版本控制系統(tǒng)嫌拣,用于敏捷高效地處理任何或小或大的項目吼砂。
Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件舔哪。
Git 與常用的版本控制工具 CVS, Subversion 等不同臀脏,它采用了分布式版本庫的方式虏冻,不必服務(wù)器端軟件支持痪署。
Git與SVN區(qū)別
- 1、GIT是分布式的兄旬,SVN不是:這是GIT和其它非分布式的版本控制系統(tǒng)狼犯,例如SVN,CVS等领铐,最核心的區(qū)別悯森。
- 2、GIT把內(nèi)容按元數(shù)據(jù)方式存儲绪撵,而SVN是按文件:所有的資源控制系統(tǒng)都是把文件的元信息隱藏在一個類似.svn,.cvs等的文件夾里瓢姻。
- 3、GIT分支和SVN的分支不同:分支在SVN中一點不特別音诈,就是版本庫中的另外的一個目錄幻碱。
- 4绎狭、GIT沒有一個全局的版本號,而SVN有:目前為止這是跟SVN相比GIT缺少的最大的一個特征褥傍。
- 5儡嘶、GIT的內(nèi)容完整性要優(yōu)于SVN:GIT的內(nèi)容存儲使用的是SHA-1哈希算法。這能確保代碼內(nèi)容的完整性恍风,確保在遇到磁盤故障和網(wǎng)絡(luò)問題時降低對版本庫的破壞蹦狂。
文章目錄
一、Git安裝配置
二朋贬、Git基本操作
三凯楔、Git分支管理
四、Git.遠程倉庫
一锦募、Git安裝配置
Git目前支持Mac摆屯、Windows、Linux/Unix和Solaris平臺糠亩。
各平臺安裝包下載地址:http://git-scm.com/downloads
Windows平臺安裝
下載安裝包之后根據(jù)提示進行安裝
安裝完成后就可以使用命令行的git工具了(自帶ssh客戶端)鸥拧,和一個帶圖像界面的git項目管理工具(Git GUI)。
可以通過桌面圖標或者開始菜單找到->"Git"->"Git Bash"削解,點擊會彈出Git命令窗口富弦,可在該窗口進行Git操作。
Mac平臺下的安裝
1.下載git客戶端氛驮,地址:https://git-scm.com/download/mac
mac平臺下的圖像化git安裝工具腕柜,地址:http://sourceforge.net/projects/git-osx-installer/
2.打開安裝包,進行安裝矫废。
Linux平臺安裝
Linux操作系統(tǒng)git安裝命令參考:https://git-scm.com/download/linux
- Ubuntu安裝命令:
$ apt-get install git
- 若提示需要權(quán)限則輸入:
sudo passwd root
盏缤,首先輸入登陸密碼,然后設(shè)置新的root密碼蓖扑,接著輸入su
按Enter
鍵唉铜,輸入設(shè)置好的root密碼獲取root權(quán)限。
安裝過程需要輸入幾次y
+回車
律杠,之后等待自動下載安裝潭流。
- 輸入
git --version
查看git版本
安裝完成
二、Git基本操作
配置用戶信息
- 以下兩條命令用于配置個人用戶名稱和電子郵件地址:
git config --global user.name "XXX"
git config --global user.email xxxx@gmail.com
--global:添加了此命令柜去,那么更改的配置文件就是位于用戶主目錄下的灰嫉,以后的項目都將默認使用此用戶信息。若需要為某個項目使用其他用戶信息嗓奢,只需要去掉--global重新配置即可讼撒,新的配置保存在當前項目的.git/config中。
- 查看配置信息命令:
git config --list //也可以將--list換為具體的某個環(huán)境變量如:user.name
創(chuàng)建倉庫
Git的很多命令都需要在Git倉庫中運行,所以我們最先做的就是創(chuàng)建一個倉庫根盒。
- 我們可以使用一下命令將當前目錄作為git倉庫钳幅,并初始化:
git init
- 或者使用指定目錄作為倉庫:
git init newrepo
- 初始化后,目錄下會生成一個名為.git的目錄炎滞,我們要將當前目錄下的幾個文件納入git版本控制下敢艰,需要先用git add讓git對文件開始跟蹤,之后提交厂榛。
git add *.c //將以.c結(jié)尾的文件提交到倉庫
git add README //將README文件提交到倉庫
git commit -m '初始化項目版本'
克隆倉庫
使用git clone命令從現(xiàn)有Git倉庫中拷貝項目盖矫,類似于svn checkout丽惭。
- 克隆倉庫的命令:
git clone <repo> //repo:Git倉庫地址
- 克隆到指定目錄:
git clone <repo> <directory> //directory:本地目錄
基本快照
Git 的工作就是創(chuàng)建和保存你的項目的快照及與之后的快照進行對比击奶。
git status
git status 可以查看在你上次提交之后是否有修改。
- 使用git status命令查看項目當前狀態(tài):
git status -s //-s:簡短輸出
??: 未添加到緩存
A: 已添加到緩存
M: 有改動
AM: 添加到緩存后又有改動
git diff
git status 顯示你上次提交更新后的更改或者寫入緩存的改動责掏, 而 git diff 一行一行地顯示這些改動具體是啥柜砾。
- 使用git diff命令查看git status執(zhí)行結(jié)果的詳細信息:
git diff //尚未緩存的改動
git diff --cached //已緩存的改動
git diff HEAD //已緩存和未緩存的所有改動
git diff --stat //顯示摘要
git commit
使用 git add 命令將想要快照的內(nèi)容寫入緩存區(qū), 而執(zhí)行 git commit 將緩存區(qū)內(nèi)容添加到倉庫中换衬。
- 將內(nèi)容添加到倉庫:
git commit -m '第一次提交版本'
-m:提交注釋痰驱,如果不設(shè)置-m選項,那么git會嘗試打開一個編輯器以填寫提交信息瞳浦,默認vim担映。效果如下:
- 如果覺得git add提交緩存比較麻煩,也可以使用-a跳過:
git commit -a
git commit -am '第二次提交版本'
git reset HEAD
git reset HEAD 命令用于取消已緩存的內(nèi)容叫潦。
git reset HEAD //也可以使用 --文件名 的形式指定具體文件
git rm
git rm 會將條目從緩存區(qū)中移除蝇完。這與 git reset HEAD 將條目取消緩存是有區(qū)別的。 git reset HEAD是將緩存區(qū)恢復(fù)為做出修改之前的樣子矗蕊。git rm file 會將文件從緩存區(qū)和你的硬盤中(工作目錄)刪除短蜕。
- 不從工作區(qū)刪除文件:
git rm --cached 文件名
git mv
git mv 命令做得所有事情就是 git rm --cached 命令的操作, 重命名磁盤上的文件傻咖,然后再執(zhí)行 git add 把新文件添加到緩存區(qū)朋魔。
git mv 原文件名 修改后文件名
三、Git分支管理
幾乎每種版本控制系統(tǒng)都支持類似的分支卿操,使用分支從開發(fā)主線中分離警检,在不影響主線的同時繼續(xù)工作。Git的分支模型是最贊的
- 創(chuàng)建分支命令:
git branch (branchname)
- 切換分支命令:
git checkout (branchname)
切換分支時害淤,Git會用該分支最新的快照替換工作目錄的內(nèi)容解滓,所以多個分支只需要一個目錄。
- 列出分支命令:
git branch //沒有參數(shù)時筝家,會列出本地的分支
當執(zhí)行g(shù)it init 時洼裤,Git會默認創(chuàng)建"master"分支。
當我們創(chuàng)建了一個分支,在該分支的的上下文中新增刪除了一些文件后腮鞍,切換回主分支值骇,那些修改的東西都不見了。
使用分支就可以讓我們在不同的上下文中工作移国,來回切換吱瘩,而不影響主線。
- 刪除分支命令:
git branch -d (branchname)
- 合并分支命令:
git merge
合并沖突
合并并不僅僅是簡單的文件添加迹缀、移除的操作使碾,Git 也會合并修改。
我們可以在master分支中創(chuàng)建文件test.txt,并寫入github.com
祝懂,提交到倉庫票摇。
然后創(chuàng)建一個change_site分支,并切換過去。
git branch change_site
git checkout change_site
修改test.txt文件內(nèi)容為 https://github.com
,提交后切換回master分支砚蓬。
git commit -am 'merge test 1'
git checkout master
將change_site分支合并到master分支矢门。
git merge change_site
此時會提示我們文件沖突,需要我們手動修改灰蛙。
修改完成后可以通過git add告訴Git文件沖突已解決祟剔。
git add test.txt
git commit
Git查看提交歷史
在提交了多次更新后,想要查看提交歷史摩梧,可以使用以下命令:
git log
輸出結(jié)果:
查看歷史記錄簡介版本:
git log --oneline
輸出結(jié)果:
使用--graph查看什么時候出現(xiàn)了分支物延、合并:
git log --oneline --graph
輸出結(jié)果:
其他log命令:https://git-scm.com/docs/git-log
--reverse 逆向顯示日志
--author 指定具體某一個作者
--since 和 --before 指定日期
--decorate 查看標簽
Git 標簽
如果你想要記住或標記某個重要的快照,就可以使用標簽仅父。
- 比如我們提交了項目v2.0版本叛薯,可以使用以下命令:
git tag -a v2.0
- -a是創(chuàng)建一個帶注解的標簽,記錄標簽作者驾霜、生成時間等.
- 使用了-a案训,Git會打開一個編輯器讓你輸入標簽注解,就和寫提交注解一樣粪糙。
- 使用命令
git tag
可以查看所有標簽强霎。 - 如果想給已提交的某個快照追加標簽,可以使用如下命令:
git tag -a v1.0 64ff8e3 //64ff8e3是上圖日志最后一行
快速指定標簽信息:
git tag -a v3.0 -m 'author:噫那里有條咸魚'
四蓉冈、Git遠程倉庫(Github)
添加遠程倉庫
由于你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的城舞,所以我們需要配置驗證信息:
1.創(chuàng)建ssh
- 檢查ssh
打開終端,運行cd ~/.ssh
如果路徑下無文件跳過下一步操作寞酿,如果有文件代表已有ssh key家夺,需要進行備份 - 備份已有ssh
mkdir key_backup
mv id_rsa* key_backup
- 生成ssh key
ssh-keygen -t rsa -C xxxx@gamil.com //注冊的main郵箱
執(zhí)行后終端會顯示
2.將ssh key添加到github上
- 在終端輸入,mac平臺:
open ~/.ssh id_rsa.pub
伐弹,Windows平臺:start ~/.ssh id_rsa.pub
,打開文件id_rsa.pub拉馋,拷貝key值。 - 打開https://github.com/官網(wǎng),登錄后煌茴,點擊賬戶-ssh公鑰随闺,輸入拷貝的key值,提交蔓腐。
3.測試鏈接是否成功
- 在終端輸入
ssh -T git@github.com
這里會要求你輸入SSH key密碼矩乐,如果剛才生成SSH key時未輸入密碼,密碼就為空回论。 - 看到:
Hi 用戶名! You’ve successfully authenticated
說明配置成功散罕。
配置成功后SSH會由黑色變?yōu)榫G色。
4.New repository(新建倉庫)
登錄Github點擊New repository
傀蓉,之后在repository name
填入test(遠程倉庫名)欧漱,其他設(shè)置默認即可,之后點擊Create repository
僚害,就成功創(chuàng)建了一個Git倉庫硫椰。
5.本地上傳文件到遠程庫
依次執(zhí)行以下命令:
mkdir test //創(chuàng)建測試目錄
cd test //進入測試目錄
echo "git測試" >> README.md //創(chuàng)建README.md文件并寫入內(nèi)容
git init //初始化
git add README.md //添加文件到緩存
git commit -m "添加 README.md 文件" //提交并添加備注
git remote add origin git@github.com:賬戶名/倉庫名 //提交到遠程倉庫
git push -u origin master
查看遠程庫
實例:-v參數(shù)—— 查看每個別名的實際鏈接地址
$ git remote
origin
$ git remote -v
origin https://github.com/賬戶名/test (fetch)
origin https://github.com/賬戶名/test (push)
提取遠程倉庫
- 從遠程倉庫下載新分支與數(shù)據(jù):
git fetch
- 從遠程倉庫提取數(shù)據(jù)并嘗試合并到當前分支:
git pull
當我們需要提取更新的數(shù)據(jù)繁调,可以先執(zhí)行 git fetch[別名]
讓Git去獲取本地沒有的數(shù)據(jù)萨蚕,然后執(zhí)行git merge[別名]/[branch]
將更新的數(shù)據(jù)合并到當前分支。
實例:
通過在線修改README.md文件:
在本地提取更新:
將更新同步到本地:
查看README.md文件內(nèi)容:
刪除遠程倉庫
- 刪除遠程倉庫命令:
git remote rm [別名]
實例:
新建倉庫origin2:git remote add origin2 git @github.com:別名/test
查看倉庫:git remote -v
刪除倉庫origin2:git remote rm origin2
Git命令練習:點我
2017-04-07 施工ing