Git基礎(chǔ)



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密碼蓖扑,接著輸入suEnter鍵唉铜,輸入設(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹄胰,一起剝皮案震驚了整個濱河市岳遥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裕寨,老刑警劉巖浩蓉,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宾袜,居然都是意外死亡捻艳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門庆猫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來认轨,“玉大人,你說我怎么就攤上這事月培∴易郑” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵杉畜,是天一觀的道長纪蜒。 經(jīng)常有香客問我,道長此叠,這世上最難降的妖魔是什么纯续? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上猬错,老公的妹妹穿的比我還像新娘牙丽。我一直安慰自己,他們只是感情好兔魂,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布烤芦。 她就那樣靜靜地躺著,像睡著了一般析校。 火紅的嫁衣襯著肌膚如雪构罗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天智玻,我揣著相機與錄音遂唧,去河邊找鬼。 笑死吊奢,一個胖子當著我的面吹牛盖彭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播页滚,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼召边,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了裹驰?” 一聲冷哼從身側(cè)響起隧熙,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎幻林,沒想到半個月后贞盯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡沪饺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年躏敢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片整葡。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡件余,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掘宪,到底是詐尸還是另有隱情蛾扇,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布魏滚,位于F島的核電站镀首,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鼠次。R本人自食惡果不足惜更哄,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一芋齿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧成翩,春花似錦觅捆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至术羔,卻和暖如春赢赊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背级历。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工释移, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寥殖。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓玩讳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嚼贡。 傳聞我的和親對象是個殘疾皇子熏纯,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容