Git基本操作

安裝Git:

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"

git config命令的--global參數(shù),用了這個參數(shù),表示你這臺機(jī)器上所有的Git倉庫都會使用這個配置。

安裝版本庫:

$ mkdir learngit //當(dāng)前位置創(chuàng)建learngit文件夾

$ cd learngit //跳轉(zhuǎn)到learngit

$ pwd //顯示當(dāng)前目錄

$ git init //把這個目錄變成Git可以管理的倉庫

ls -ah//用來打印出當(dāng)前目錄的清單,-a包含以.開頭的隱含文件,-h列出文件大小

把文件添加到版本庫:

將textname.TXT文件放入learngit文件

$ git add textname.txt //添加到暫存庫

$ git commit -m "note"http://-m 后面輸入的是本次提交的說明

時光機(jī)穿梭:

$ git status //查看倉庫當(dāng)前的狀態(tài)

$ git diff readme.txt //查看倉庫的變化?

版本回退:

$ git log //版本歷史記錄,所有的

$ git log --pretty=oneline //數(shù)字為版本號

$ git reset --hard HEAD~n //回退n個版本,或者HEAD^...

$ git reset --hard number //回到未來的某個版本號number

$ cat readme.txt//查看當(dāng)前版本的內(nèi)容

$ git reflog//記錄你的每一次命令

版本庫=stage(暫存區(qū))+master(分支)

倉庫=工作區(qū)

Untrack files://某個文件沒有被添加過

管理修改:

git diff HEAD -- readme.txt//可以查看工作區(qū)和版本庫里面最新版本的區(qū)別

撤銷修改:

$ git checkout -- readme.txt//撤銷工作區(qū)的全部修改。用版本庫里的最新版本替換工作區(qū)的版本,“一鍵還原”。

$ git reset HEAD file//可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū)。

git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)。當(dāng)我們用HEAD時,表示最新的版本。

場景1:當(dāng)你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時,用命令git checkout -- file。

場景2:當(dāng)你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。

刪除文件:

$ rm test.txt //刪除倉庫文件

$ git rm test.txt

$ git commit -m "remove test.txt"http://刪除版本庫文件

遠(yuǎn)程倉庫:

第1步:$ ssh-keygen -t rsa -C "youremail@example.com"http://創(chuàng)建SSH Key

可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

第2步:登陸GitHub,打開“Account settings”,“SSH Keys”頁面:然后,點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容:

添加遠(yuǎn)程庫:

首先,登陸GitHub,然后,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個新的倉庫:

在Repository name填入learngit,其他保持默認(rèn)設(shè)置,點擊“Create repository”按鈕,就成功地創(chuàng)建了一個新的Git倉庫:

在本地的learngit倉庫下運行命令(關(guān)聯(lián)):$ git remote add origin git@github.com:yourgithubid/learngit.git

添加后,遠(yuǎn)程庫的名字就是origin,這是Git默認(rèn)的叫法

下一步,就可以把本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上:$ git push -u origin master//第一次使用將本地的master分支推送到origin主機(jī),同時指定origin為默認(rèn)主機(jī),后面就可以不加任何參數(shù)使用git push了。

之后就用:$ git push origin master

SSH警告:

當(dāng)你第一次使用Git的clone或者push命令連接GitHub時,會得到一個警告:這是因為Git使用SSH連接,而SSH連接在第一次驗證GitHub服務(wù)器的Key時,需要你確認(rèn)GitHub的Key的指紋信息是否真的來自GitHub的服務(wù)器,輸入yes回車即可。

Git會輸出一個警告,告訴你已經(jīng)把GitHub的Key添加到本機(jī)的一個信任列表里了:

這個警告只會出現(xiàn)一次,后面的操作就不會有任何警告了。

從遠(yuǎn)程庫克隆:

首先,登陸GitHub,創(chuàng)建一個新的倉庫,名字叫g(shù)itskills:

我們勾選Initialize this repository with a README,這樣GitHub會自動為我們創(chuàng)建一個README.md文件。創(chuàng)建完畢后,可以看到README.md文件:

下一步是用命令git clone克隆一個本地庫:$ git clone git@github.com:yourgithubid/gitskills.git

$ cd gitskills //進(jìn)入子目錄

$ ls //顯示

分支管理:

創(chuàng)建與合并分支:

$ git checkout -b dev //創(chuàng)建dev分支,并切換到dev分支

$ git branch //列出所有分支,當(dāng)前分支前面會標(biāo)一個*號

$ git checkout master //切換到master分支

$ git merge dev //合并指定分支到當(dāng)前分支,F(xiàn)ast forward

$ git branch -d dev //刪除dev分支,-D強(qiáng)制刪除

$ git log --graph --pretty=oneline --abbrev-commit //查看分支合并情況

$ vi text.txt //進(jìn)入某個文件

分支管理策略:

$ git merge --no-ff -m "merge with no-ff" dev //普通合并,--no-ff參數(shù),表示禁用Fast forward,(可查看歷史)并且提交了一個commit

Bug分支:

$ git stash //把當(dāng)前工作現(xiàn)場(工作區(qū))“儲藏”起來

$ git stash list //查看工作現(xiàn)場

一是用git stash apply恢復(fù),但是恢復(fù)后,stash內(nèi)容并不刪除,你需要用git stash drop來刪除;

另一種方式是用git stash pop,恢復(fù)的同時把stash內(nèi)容也刪了:

$ git stash apply stash@{0} //恢復(fù)到制定stash

多人合作:

推送分支:

$ git remote //查看遠(yuǎn)程庫 -v表示詳細(xì)信息

$ git push origin master //推送分支,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠(yuǎn)程庫對應(yīng)的遠(yuǎn)程分支上:

抓取分支:

(在另一臺電腦(注意要把SSH Key添加到GitHub)或者同一臺電腦的另一個目錄下克隆)

默認(rèn)情況下,你的小伙伴只能看到本地的master分支

$ git clone git@github.com:YourID/learngit.git

現(xiàn)在,你的小伙伴要在dev分支上開發(fā),就必須創(chuàng)建遠(yuǎn)程origin的dev分支到本地,于是他用這個命令創(chuàng)建本地dev分支:?

$ git checkout -b dev origin/dev

推送失敗,因為你的小伙伴的最新提交和你試圖推送的提交有沖突,解決辦法也很簡單,Git已經(jīng)提示我們,先用git pull把最新的提交從origin/dev抓下來,然后,在本地合并,解決沖突,再推送:

$ git branch --set-upstream dev origin/dev //本地dev分支與遠(yuǎn)程origin/dev分支的鏈接

$ git pull

創(chuàng)建標(biāo)簽:(只存儲在本地,不會自動推送到遠(yuǎn)程)

$ git tag v1.0 //切換到需要打標(biāo)簽的分支上后,默認(rèn)標(biāo)簽是打在最新提交的commit上的。

$ git tag //查看所有標(biāo)簽

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

$ git tag v0.9 commitid //找到歷史提交的commit id,然后打上

標(biāo)簽不是按時間順序列出,而是按字母排序的

$ git show v0.9 //查看標(biāo)簽信息

$ git tag -a v0.1 -m "version 0.1 released" commitid //創(chuàng)建帶有說明的標(biāo)簽,用-a指定標(biāo)簽名,-m指定說明文字

$ git tag -s v0.2 -m "signed version 0.2 released" commit //通過-s用私鑰簽名一個標(biāo)簽:簽名采用PGP簽名,因此,必須首先安裝gpg(GnuPG),如果沒有找到gpg,或者沒有g(shù)pg密鑰對,就會報錯

操作標(biāo)簽:

$ git tag -d v0.1 //刪除標(biāo)簽

$ git push origin v1.0 //送某個標(biāo)簽到遠(yuǎn)程

$ git push origin --tags //推送全部

如果標(biāo)簽已經(jīng)推送到遠(yuǎn)程,先從本地刪除:$ git tag -d v0.9

從遠(yuǎn)程刪除。刪除命令也是push:$ git push origin :refs/tags/v0.9

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,516評論 2 379

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

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,694評論 4 54
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,697評論 9 163
  • 創(chuàng)建本地倉庫 使用git bash進(jìn)入需要創(chuàng)建倉庫的目錄下: cd xxxx git init 創(chuàng)建本地倉庫 此時...
    xiang205012閱讀 323評論 0 0
  • 聲明:這篇文章來源于廖雪峰老師的官方網(wǎng)站,我僅僅是作為學(xué)習(xí)之用 Git簡介 Git是什么? Git是目前世界上最先...
    橫渡閱讀 3,973評論 3 27
  • 先要回顧最初加入寫作群的目的,一是能將生活中的點滴,特別是有感動的地方清楚表達(dá);二是能持之以恒,形成習(xí)慣。 現(xiàn)在看...
    田心月兒閱讀 127評論 1 0