Git使用

一询筏、GIT的安裝


#Ubuntu的安裝;

sudo apt-get install git

#老一些的版本的Ubuntu可能用的安裝命令

sudo apt-get install git-core

#windows下的安裝负蚊;

#下載地址:https://git-scm.com/downloads

#安裝完以后,在開始菜單下會(huì)有一個(gè)git bash的圖標(biāo);

二实辑、配置GIT

#安裝完成后漱病,還需要配置一下用戶信息买雾;

$git config --global user.name 'overad'

$git config --global user.email 'overad@163.com'

#注意config 的--global參數(shù),用了這個(gè)參數(shù)杨帽,表示這臺(tái)機(jī)器上的所有的GIT倉(cāng)庫(kù)都會(huì)使用這個(gè)配置漓穿,當(dāng)然也可以對(duì)某個(gè)倉(cāng)庫(kù)指定不同的用戶名和Email地址;

三注盈、創(chuàng)建GIT版本

$mkdir git

$cd git

#可以通過pwd查看文件的位置晃危;

#通過git init 命令吧這個(gè)目錄變成GIT可以管理的倉(cāng)庫(kù)

$git init

四、管理文件:

#通過git add告訴GIT老客,把文件添加到倉(cāng)庫(kù)

$git add readme.txt

#git add可以一次提交很多文件僚饭,在同一提交后,用git commit命令說明備注胧砰;

#使用git commit告訴git鳍鸵,吧文件提交到倉(cāng)庫(kù)git commit -m "wrote a readme file"

#git commit命令,-m后面輸入的是本次提交的說明尉间;可以輸入任何內(nèi)容偿乖,說明改動(dòng)記錄

#git status命令可以讓我們時(shí)刻掌握倉(cāng)庫(kù)的當(dāng)前狀態(tài)击罪;

#可以使用git diff查看difference,顯示的格式是Unix通用的diff格式汹想;

git diff readme.txt ?

#查看改動(dòng)記錄(日志)

git log

#所有的記錄顯示在一起外邓;

git log --pretty=oneline

五、回滾

#使用git reset回滾古掏,

#其中HEAD表示當(dāng)前版本损话;HEAD^表示上一個(gè)版本;HEAD^^表示上上個(gè)版本槽唾;

#回滾

$git reset --hard HEAD^

#查看文本文件里面的詳細(xì)內(nèi)容丧枪;

$cat learngit.txt

#版本回滾后,要繼續(xù)恢復(fù)怎么辦庞萍;如果命令行的窗口還沒有關(guān)閉的話拧烦,可以往上找,找到他的commit id钝计;

$git reset --hard?fe7ced362e9

#commit id 沒必要寫完整恋博,git會(huì)自動(dòng)去找;但是不能太短私恬,以免不能唯一識(shí)別债沮;

#如果關(guān)閉了電腦或者關(guān)閉了命令行的窗口的話,就不能直接找到指定的commit id本鸣;

$git reflog

總結(jié):

git有暫緩區(qū)和工作區(qū)兩個(gè)概念:當(dāng)我們?cè)趃it add提交文件的時(shí)候疫衩,我們的文件提交到的是暫緩區(qū);等我們?cè)趃it commit提交的時(shí)候荣德,才一次性提交到工作區(qū)(分支)

六闷煤、撤銷修改:

#git系統(tǒng)是記錄修改,每次修改完以后通過git add命令添加到緩存區(qū)涮瞻;針對(duì)已添加到緩存區(qū)的修改需要撤回鲤拿;

$git checkout --learngit.txt

#此命令就是退回到上次的git commit的狀態(tài);

#git check --file 的--很重要署咽,如果沒有“--”就變成了“切換到另一個(gè)分支”的命令近顷;

#當(dāng)提交到了緩存區(qū),我們需要撤回艇抠;

$git reset HEAD learngit.txt

#git reset 命令既可以回退版本幕庐,也可以吧暫存區(qū)回退到工作區(qū);當(dāng)我們用HEAD時(shí)家淤,表示最新的版本异剥;

總結(jié):

當(dāng)你改亂了工作區(qū)的某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改的時(shí)候絮重,用命令 get checkout --file

當(dāng)你不但改亂了工作區(qū)的某個(gè)文件的內(nèi)容冤寿,還添加到了暫存區(qū)時(shí)歹苦,想丟棄修改,分兩步督怜,第一步用命令git reset Head file殴瘦,就回到了上面的場(chǎng)景,第二部按照上面操作号杠;

當(dāng)已經(jīng)提交了不合適的修改版本到版本庫(kù)時(shí)蚪腋;想要撤銷本次提交,參考版本回退姨蟋;不過前提是沒有推送到遠(yuǎn)程庫(kù)

七屉凯、遠(yuǎn)程連接

#Windows系統(tǒng)下一一般都是需要自己創(chuàng)建SSH KEY的;郵件處填寫你前面創(chuàng)建git的時(shí)候的郵件名眼溶;區(qū)分用戶悠砚;

$ssh-keygen -t rsa -C "overad@163.com"

#一路next(enter)

#添加成功后,在.shh的文件下面會(huì)生成兩個(gè)文件堂飞;id_rsa 和 id_rsa.pub灌旧;其中id_rsa是私鑰,不能泄露出去绰筛,id_rsa.pub是公鑰枢泰,可 #登錄GitHub可以通過添加ssh(復(fù)制id_rsa.pub中的內(nèi)容到github中)

#一切準(zhǔn)備就緒以后;我們根據(jù)GitHub的提示别智,在本地的git倉(cāng)庫(kù)下運(yùn)行命令git remote add overgit git@github.com:overad/spides.git

#其中:overgit是遠(yuǎn)程庫(kù)的名稱宗苍,可以存在很多個(gè)稼稿;

#overad是GitHub的用戶名薄榛;

#spides是項(xiàng)目名稱;(如果沒有的話让歼,需要提前創(chuàng)建)

#把本地庫(kù)的內(nèi)容推送到遠(yuǎn)程庫(kù)上敞恋;(第一添加u,以后可以不添加,添加U參數(shù)谋右,git不僅會(huì)把本地的master分支內(nèi)容推送到遠(yuǎn)程新的master分支硬猫,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,在以后的推送或者拉去時(shí)就可以簡(jiǎn)化命令)

git push -u overgit master

#以后的提交git push overgit master

從遠(yuǎn)程克赂闹础啸蜜;

#我們先在GitHub的下創(chuàng)建好了遠(yuǎn)程庫(kù)(勾選Initialize this respository with a README)

#從遠(yuǎn)程克隆一個(gè)本地庫(kù)git clone git@github.com:overad/spides.git

八、分支

#首先辈挂,創(chuàng)建dev分支衬横,然后切換到dec分支

git checkout -b dev

#git checkout命令加上 -b 參數(shù)表示創(chuàng)建并切換,相當(dāng)于以下兩條命令终蒂;

git branch dev?

git checkout dev?

#然后用git branch命令查看當(dāng)前分支蜂林;

git branch

#git branch命令會(huì)列出所有分支遥诉,當(dāng)前分支前會(huì)有一個(gè)*號(hào);#然后我們就可以在dev分支上正常提交噪叙,比如對(duì)readme.txt做個(gè)修改矮锈;

creating a new branch is quick

#然后提交;

git add readme.txtgit commit -m 'branch test'

#現(xiàn)在dev的分支工作完成睁蕾,我們就可以切換回master分支苞笨;

git checkout master

#現(xiàn)在,我們把dev分支的工作成果合并到master分支上:

git merge dev

#git merge命令用于合并指定分支到當(dāng)前分支子眶,合并后猫缭,在查看readme.txt的內(nèi)容。

#注意到Fast-Forward信息壹店,GIT告訴我們猜丹,這次合并是“快速模式”,也就是直接把master指向dev的當(dāng)前提交硅卢;

#合并完成后就可以放心的刪除dev分支了射窒;

git branch -d dev

#刪除后,查看branch将塑,就只剩下master分支了脉顿;git branch

總結(jié):

#GIT鼓勵(lì)大量使用分支;

#查看分支:git branch

#創(chuàng)建分支:git branch

#切換分支:git checkout

#創(chuàng)建+切換分支:git checkout -b

#合并某分支到當(dāng)前分支:git merge

#刪除分支:git branch -d

九点寥、創(chuàng)建標(biāo)簽艾疟;

#在GIT中打標(biāo)簽非常簡(jiǎn)單,首先切換到需要打標(biāo)簽的分支上敢辩;

git branchgit checkout master

#然后敲命令git tag 就可以打一個(gè)新標(biāo)簽

git tag v1.0

#可以用命令git tag 查看所有標(biāo)簽蔽莱;

git tag

#默認(rèn)標(biāo)簽是打在最新提交的commit上的,有時(shí)候戚长,如果忘記打標(biāo)簽盗冷,可以找到歷史提交的commit id 然后大打上就可以

git log --pretty=oneline --abbrev-commit

#比方說要對(duì)add merge這次提交打標(biāo)簽;他對(duì)應(yīng)的commit id 是6223454同廉,仪糖;

git tag v0.9 6223454

#再用命令git tag查看標(biāo)簽;

git tag

#注意迫肖,標(biāo)簽不是按時(shí)間順序列出锅劝,而是按照字母排序的,可以用git show 查看標(biāo)簽信息git show v0.9

#還可以創(chuàng)建自帶說明的標(biāo)簽蟆湖,用-a指定標(biāo)簽名故爵,-m指定說明文字;

git tag -v0.1 -m "version 0.1 released"?6223454

#用命令git show 可以看到說明文字帐姻;

git show v0.1

#可以通過-s用私鑰簽名一個(gè)標(biāo)簽稠集;

git tag -s v0.2 -m "signed version 0.2 released" fec145a

#簽名采用PGP簽名奶段,因此,必須首先安裝gpg剥纷。如果沒找到gpg或者沒有g(shù)pg密鑰對(duì)痹籍,就會(huì)報(bào)錯(cuò);

操作標(biāo)簽晦鞋;

#如果標(biāo)簽打錯(cuò)了的話蹲缠,可以刪除;

git tag -d v0.1

#創(chuàng)建的標(biāo)簽都是儲(chǔ)存在本地悠垛,如果要推送到遠(yuǎn)程的話线定,需要使用

git push overgit git push overgit v1.0

#或者一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽

git push overgit --tags

#但是如果標(biāo)簽已經(jīng)推送到了遠(yuǎn)程,要?jiǎng)h除遠(yuǎn)程的標(biāo)簽就麻煩一點(diǎn)确买,先充本地刪除斤讥;

git tag -d v0.9

#再?zèng)_遠(yuǎn)程刪除,刪除的命令也是push湾趾,格式:

git push overgit :refs/tags/v0.9

總結(jié):

git push overgit ? ? #可以推送一個(gè)本地標(biāo)簽芭商;

git push overgit --tags?? ?? ? #可以推送全部未推送過得本地標(biāo)簽;

git tag -d ?? ??? ?? ?#可以刪除一個(gè)本地標(biāo)簽

git push overgit :refs/tags/? ? #可以刪除一個(gè)遠(yuǎn)程標(biāo)簽搀缠;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末铛楣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子艺普,更是在濱河造成了極大的恐慌簸州,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歧譬,死亡現(xiàn)場(chǎng)離奇詭異岸浑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缴罗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門助琐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祭埂,“玉大人面氓,你說我怎么就攤上這事∏穑” “怎么了舌界?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)泰演。 經(jīng)常有香客問我呻拌,道長(zhǎng),這世上最難降的妖魔是什么睦焕? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任藐握,我火速辦了婚禮靴拱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猾普。我一直安慰自己袜炕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布初家。 她就那樣靜靜地躺著偎窘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪溜在。 梳的紋絲不亂的頭發(fā)上陌知,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音掖肋,去河邊找鬼仆葡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛志笼,可吹牛的內(nèi)容都是我干的浙芙。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼籽腕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嗡呼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起皇耗,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤南窗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后郎楼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體万伤,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年呜袁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敌买。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阶界,死狀恐怖虹钮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膘融,我是刑警寧澤芙粱,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站氧映,受9級(jí)特大地震影響春畔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一律姨、第九天 我趴在偏房一處隱蔽的房頂上張望振峻。 院中可真熱鬧,春花似錦择份、人聲如沸铺韧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哈打。三九已至,卻和暖如春讯壶,著一層夾襖步出監(jiān)牢的瞬間料仗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工伏蚊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留立轧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓躏吊,卻偏偏與公主長(zhǎng)得像氛改,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子比伏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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