Git初級入門1

· git 官方文檔推薦 https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5

一、創(chuàng)建版本庫

1創(chuàng)建一個版本庫搀缠,

1.1

第一步選擇一個合適的地方捌浩,創(chuàng)建一個空目錄

$ mkdir learngit
$ cd learngit
$ pwd

代碼說明: mkdir 用于創(chuàng)建目錄
cd 切換工作目錄到指定目錄
pwd 用于顯示當前目錄路徑

1.2

第二步通過git init命令把這個目錄變成Git可以管理的倉庫:

$ git init

反饋為:

Initialized empty Git repository in /User/michael/learngit/.git

會告訴你這個一個空目錄甩恼,倉庫就建好了每瞒。

2把文件添加到版本庫

先編寫一個readme.rtf文件偶摔,內容如下:
Git is a version control system.
Git is free software.

2.1

第一步暇唾,用命令git add 告訴Git,把文件添加到倉庫

$ git add redme.rtf

執(zhí)行尚明的命令辰斋,沒有任何顯示就對的了

2.2

第二步策州,用命令git commit告訴Git,把文件提交到倉庫

$  git commit -m "wrote a readme file"

代碼說明:-m 后面輸入的是本次提交的說明亡呵,可以輸入任意內容

git commit 命令執(zhí)行成功會告訴你抽活,一個文件被改動,插入了行的內容

為什么Git添加文件需要add,commit兩步锰什?

因為commit可以一次提交很多文件下硕,所以可以多次add不同的文件

二、時光機穿梭

1.修改文件內容并上傳

我們已經成功并且添加了一個readme.rdf文件汁胆,修改文件內容梭姓。

現在,運行git status命令:

$ git status

反饋為:

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working
directory)
#
#    modified:   readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

代碼說明:git status命令可以讓我們時刻掌握倉庫當前的狀態(tài)嫩码,上面的命令告訴我們誉尖,readme.rdf被修改過了,但還沒有準備提交的修改铸题。

$ git diff readme.rdf

反饋為:

diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

代碼說明:git diff 就是查看difference 铡恕,查看不同.我們可以看到我們在第一排添加了一個單詞。
知道了對文件做了什么修改后丢间,在提交到倉庫探熔,提交修改和提交新文件是一樣的兩步,第一步是git add:

$ git add readme.rdf

同樣沒有任何輸出烘挫。在執(zhí)行第二步git commit之前诀艰,我們在運行git status查看倉庫狀態(tài)

$ git status

git status告訴我們,將要被提交的修改包括readme.rdf饮六,下一步就可以放心提交了

$ git commit -m "add distributed"

就成功提交了
然后我們在使用git status命令查看倉庫的當前狀態(tài):

git status

反饋為:

# On branch master
nothing to commit (working directory clean)

Git告訴我們當前沒有需要提交的修改其垄,而且,工作目錄是干凈的(working directory clean)

2.版本回退
輸入代碼:

$ git log

反饋

commit 9b4e64a05be468ecaf4bedc1deb18b365079d72c (HEAD -> master)
Author: 趙航翊 <zhaohangyi@zhaohangyideMacBook-Pro.local>
Date:   Wed Jul 18 11:35:44 2018 +0800

    append GRL

commit cec15c8aaf4f1b83e60e4457bf91cbe64b49468a
Author: 趙航翊 <zhaohangyi@zhaohangyideMacBook-Pro.local>
Date:   Wed Jul 18 09:19:26 2018 +0800

    wrote a readme file

代碼說明:git log 命令顯示從最近到最遠的提交日志卤橄。如果嫌輸出信息太多绿满,加上參數--pretty=oneline

$ git log --pretty=oneline
9b4e64a05be468ecaf4bedc1deb18b365079d72c (HEAD -> master) append GRL
cec15c8aaf4f1b83e60e4457bf91cbe64b49468a wrote a readme file

代碼說明:前面的類似9b4e64a的是commit id (版本號)

退回上一個版本:

$ git reset --hard HEAD^

退回到指定版本:

$ git reset --hard (commit id)

commit id 不需要寫全,前幾位就行窟扑,Git會自動去尋找棒口。

$ git reflog 

Git提供一個命令git reflog用來記錄每一次命令寄月。
穿梭前,用git log 命令查看提交歷史无牵,以便確定要回退到哪個版本
要重返未來,用git reflog查看命令歷史厂抖,以便確定要回到未來的哪個版本

部分Git命令總結

命令 作用 備注
mkdir 創(chuàng)建目錄
cd 切換工作目錄當指定目錄
pwd 顯示當前工作目錄路徑
git init 把當前目錄變成Git可以管理的倉庫
git add 把文件添加到倉庫
git commit -m"" 把文件提交到倉庫 -m后面輸出的是本次提交的說明
git status 查看倉庫當前的狀態(tài)
git diff 查看修改的不同
git log 查看歷史記錄
git log --pretty=oneline 查看歷史記錄 簡化版
git reset --hard HEAD^ 回退到上一個版本
git reset --hard commit_id 回退到指定版本
cat 打開指定文件

三 Git名詞解釋

1.工作區(qū):就是在電腦里能看到的目錄茎毁,比如說learngit文件夾就是一個工作區(qū)
2.版本庫:工作區(qū)有個隱藏目錄“.git”,這個不算工作區(qū)忱辅,而是Git的版本
Git的版本庫里存了很多東西七蜘,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動創(chuàng)建的第一個分子master墙懂,以及指向master的一個指針叫HEAD

前面講我們把文件往Git版本庫里添加的時候橡卤,是分兩步執(zhí)行的:
第一步用git add把文件添加進去,實際上就是把文件修改添加到暫存區(qū)
第二步用git commit 提交更改损搬,實際上就是把暫存區(qū)的所有內容提交到當前分支

可以簡單理解為:需要提交的文件修改通通放到暫存區(qū)碧库,然后,一次性提交暫存區(qū)的所有文件修改

四 撤銷修改

4.1未上傳到暫存區(qū)

命令:

$ git checkout --readme.rtf 

代碼說明:撤銷在工作區(qū)的修改巧勤。
兩種情況嵌灰,一種是文件修改后還沒有上傳在暫存區(qū),
一種是修改過的文件已經上傳到暫存區(qū)區(qū)颅悉,又做了修改沽瞭,現在撤銷修改就回到添加到暫存區(qū)的暫態(tài)

4.2上傳到暫存區(qū)

命令

git reset HEAD readme.rtf

代碼說明:把暫存區(qū)的修改撤銷掉,重新放回工作區(qū)剩瓶。
git reset命令既可以回退版本驹溃,也可以把暫存區(qū)的修改回退到工作區(qū)。當我們使用HEAD時延曙,表示最新的版本豌鹤。

小結:
場景1:當你改亂了?工作區(qū)某個?文件的內容,想直接丟棄?工作區(qū)的修改時搂鲫,?用命令git checkout -- file傍药。
場景2:當你不但改亂了?工作區(qū)某個?文件的內容,還添加到了暫存區(qū)時魂仍,想丟棄修改拐辽,分兩步,第?一步?用命令git reset HEAD file擦酌,就回到了場景1俱诸,第?二步按場景1操作。
場景3:已經提交了不合適的修改到版本庫時赊舶,想要撤銷本次提交睁搭,參考版本回退?一節(jié)赶诊,不 過前提是沒有推送到遠程庫

五 刪除文件

在Git中,刪除也是一個修改操作园骆。一般情況下舔痪,用rm命令刪除:

rm test.rtf

這個時候,Git知道你刪除了文件锌唾,因此锄码,工作區(qū)和版本庫就不一樣了,git status命令會立刻告訴你哪些文件被刪除了晌涕。

$ git status



deleted:    test.txt

5.1確認刪除該文件

用命令git rm刪除掉滋捶,并且commit

git rm test.rtf
git commit -m "remove"

這樣文件就從版本庫中刪除了

5.2取消刪除

因為版本庫中還有,恢復到最新版本就好余黎。
$ git checkout -- test.rtf

六 遠程倉庫

6.1關聯遠程倉庫GitHub

首先請自行注冊GitHub賬號重窟。由于你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以請先設置一點東西惧财。

第一步 創(chuàng)建SSH Key巡扇。

在用戶主目錄下,看有沒有.SSH目錄可缚,.文件默認情況下是隱藏的霎迫,具體方法請自行百度。如果有帘靡,看下文件夾里面有沒有id_rsa和id_rsa.pub這兩個文件知给,如果已經有了,就直接一下步描姚,如果沒有就打開Shell涩赢,創(chuàng)建SSH Key:

$  ssh-keygen -t rsa -C  "youremail@example.com"

PS:在這里你需要把郵件地址換成你自己的郵件地址,然后一路回車轩勘,密碼也無需設置筒扒。

如果一切順利,就可以在用戶主目錄里面找到.ssh目錄绊寻,里面有上面提到的兩個文件花墩,這兩個是SSH Key的密匙對,id_rsa是私匙澄步,不能泄露出去冰蘑。另外一個id_rsa.pub是公鑰,可以告訴別人

第二步 登陸GitHub

點擊右上角的頭像村缸,選擇“settings”祠肥,“SSH and GPG keys”頁面。然后點“Add SSH Key”,填上任意title 梯皿,然后在下面的KEY文本框里粘貼上id_rsa.pub?文件的內容仇箱。
完成后點擊ADD KEY 县恕,你就可以看到已經添加到的KEY.

6.2 添加遠程庫

現在你已經在本機創(chuàng)建了一個Git倉庫,又想在GitHub上創(chuàng)建一個倉庫并且使兩個倉庫進行遠程同步剂桥。

第一步

登陸GitHub忠烛,然后在右上角頭像的左邊找到?按鈕,選擇 New repository渊额,創(chuàng)建一個新倉庫况木。在name處填入倉庫的名字,其他保持默認旬迹,點擊 create repository按鈕創(chuàng)建一個新的Git倉庫

PS:務必保持兩個倉庫的名字一樣

第二步

在本地的learngit倉庫下運行命令:

$ git remote add origin git@github.com:Fizzyi/learngit.git

把上面的Fizzyi換成你的GitHub賬戶名。

添加后求类,遠程庫的名字就是origin奔垦,這是Git的默認叫法。

第三步

把本地庫的所有內容推送到遠程庫上:

$ git push -u origin master

用git命令尸疆,實際上是把當前分支master推送到遠程庫椿猎。

由于這是第一次推送,我們加上了-u參數寿弱,Git不但會把本地的master分支內容推送的遠程新的master分支犯眠,還會把本地的master分支利和遠程的master分支關聯起來,在以后的推送中就可以簡化命令症革。

成功后筐咧,就可以在GitHub上面看到和本地一模一樣的文件。

從此之后噪矛,只要本地add,commit后量蕊,就可以通過這個命令把本地master分支的最新修改推送到github中。

$ git push origin master

6.3從遠程庫克隆

現在艇挨,假設我們從零開發(fā)残炮,那么最好的方法是先創(chuàng)建遠程庫,然后缩滨,從遠程庫克隆势就。

命令:

$git clone git@github.com:Fizzyi/JS.git

Fizzyi替換成你的GitHub賬號,JS換成你需要克隆的文件夾名稱

分支總結
查看分支:git branch
創(chuàng)建分支:git branch name
切換分支:git checkout name
創(chuàng)建+切換分?=支:git checkout -b name
合并某分支到當前分支:git merge name
刪除分支:git branch -d name

7更新文件

第一步:

git add 更新文件名

第二步:

git commit -m '更新說明'

第三步:
拉取當前分支最新代碼

git pull

第四步:
push到遠程分支master

git push origin master

這樣就成功更新了文件

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末脉漏,一起剝皮案震驚了整個濱河市苞冯,隨后出現的幾起案子,更是在濱河造成了極大的恐慌鸠删,老刑警劉巖抱完,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異刃泡,居然都是意外死亡巧娱,警方通過查閱死者的電腦和手機碉怔,發(fā)現死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來禁添,“玉大人撮胧,你說我怎么就攤上這事±锨蹋” “怎么了芹啥?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長铺峭。 經常有香客問我墓怀,道長,這世上最難降的妖魔是什么卫键? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任傀履,我火速辦了婚禮,結果婚禮上莉炉,老公的妹妹穿的比我還像新娘钓账。我一直安慰自己,他們只是感情好絮宁,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布梆暮。 她就那樣靜靜地躺著,像睡著了一般绍昂。 火紅的嫁衣襯著肌膚如雪啦粹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天治专,我揣著相機與錄音卖陵,去河邊找鬼。 笑死张峰,一個胖子當著我的面吹牛泪蔫,可吹牛的內容都是我干的。 我是一名探鬼主播喘批,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼撩荣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饶深?” 一聲冷哼從身側響起餐曹,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎敌厘,沒想到半個月后台猴,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年饱狂,在試婚紗的時候發(fā)現自己被綠了曹步。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡休讳,死狀恐怖讲婚,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情俊柔,我是刑警寧澤筹麸,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站雏婶,受9級特大地震影響物赶,放射性物質發(fā)生泄漏。R本人自食惡果不足惜留晚,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一块差、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧倔丈,春花似錦、人聲如沸状蜗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轧坎。三九已至宏邮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缸血,已是汗流浹背蜜氨。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捎泻,地道東北人飒炎。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像笆豁,于是被迫代替她去往敵國和親郎汪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359