超簡潔且實用的git教程

最近朋友都問我有關git的問題,對于一個初學者包括我來說,剛學的時候是有點蒙的.所以寫下這篇文章作為一個記錄,如果你是老鳥,路過就行,當然也希望指出當中不對的地方,此教程簡單,可以立即派上用場,不深入講解高級功能,只講一些基礎的只是.

關于git的優(yōu)點,這里我就不說了,大家網上一搜一大堆.所以今天只講解如何關聯到github等代碼托管平臺.
首先,你要有一個git客戶端.
安裝完git之后會彈出一個界面,表示安裝成功
git config --global user.name 你的用戶名 (給git配置用戶名)
git config --global user.email 你的郵箱(給git配置郵箱)

//-----------一次完整的提交--------------------------
第一步:
創(chuàng)建版本庫(倉庫 repository):
進入你想創(chuàng)建版本庫的盤符例如D盤轩娶,在命令行中可以用 cd d:命令進入颜启。
mkdir mygitRepository(在D盤創(chuàng)建一個文件夾 mygitRepository)
cd mygitRepository(進入該文件夾)
pwd (用于顯示當前目錄)
第二步:

git init(把目錄變成git可以管理的倉庫)
git add test.txt(添加test.txt文件到倉庫中)
git commit -m "第一次提交"(把該文件提交到倉庫中帽衙。-m后面輸入的是本次提交的說明)注:也可以同時添加多個文件比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
//-----------一次完整的提交--------------------------
//---------------版本的回退----------------------------------------

場景:對test.txt文件進行修改,然而在提交的時候卻發(fā)生了錯誤的提示

git status(查看當前版本的狀態(tài))
$ 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: test.txt#

no changes added to commit (use "git add"and/or"git commit -a")
上面的提示說我們的test.txt文件已經發(fā)生了改變叫编,也就是該文件被修改過了援雇。
git diff(看看具體被修改了什么內容)
$ git diff test.txt
diff --git a/test.txt b/test.txt
index 46d49bf..9247db6 100644
--- a/test.txt
+++ b/test.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
知道了文件修改了以后我們可以繼續(xù)提交
git add 文件名
git commit -m 描述

$ git commit -m "add distributed"
[master ea34578] add distributed
1 file changed, 1 insertion(+), 1 deletion(-)
再用 git status查看當前的狀態(tài)
$ git status

On branch master

nothing to commit (working directory clean)

現在,我們已經學會了修改文件臣嚣,然后把修改提交到Git版本庫
git log(顯示從最近到最遠的提交日志)

git log --pretty=oneline(這樣會顯示的更美觀)

現在我們要回退到上一個版本
git reset --hard HEAD^(回退到上一個版本)

git reset --hard HEAD^^(回退到上上一個版本)
如果有一百個版本呢?
git reset --hard HEAD~100(回退到上一個版本)
再用git log查看

紅色箭頭表示已經回退到了上一個版本剥哑。cat test.txt.查看文檔內容會發(fā)現回到了修改前
黃色箭頭表示當前有兩個版本(回退前有三個的) 黃色箭頭指的文字表示你提交時對該版本的描述硅则。
前面的一大竄黃色的編碼就是commit id.我們可以通過這些id.來恢復最新版本,也就是該試驗中第三個版本(之前已經被我們回退到了第二個版本了株婴。)
有時候版本太多怎虫,而且又忘記了commit id。這怎么辦困介?
git reflog(記錄你每一次的命令)

看到了吧大审。head 1開始就是我們一共提交的版本了。黃色就是commit id了
第一行顯示的是我們的回退歷史座哩。第二行就是我們現在要恢復的目標

以上命令就是恢復(回退)到最新版本

我們在git log --pretty=oneline一次看

我們可以看到上面就是我們提交的版本了徒扶。已經回退到了最新的版本
現在總結一下:
HEAD指向的版本就是當前版本,因此根穷,Git允許我們在版本的歷史之間穿梭姜骡,使用命令git reset --hard commit_id导坟。
穿梭前,用git log可以查看提交歷史圈澈,以便確定要回退到哪個版本乍迄。
要重返未來,用git reflog查看命令歷史士败,以便確定要回到未來的哪個版本。

//------------------------版本的回退----------------------
//----------------撤銷修改-------------------
場景一:在文件中修改了內容,但并沒有git add
場景二:在文件中修改了內容,又使用了 git add
注意:如果修改了內容,且又使用了 git add和git commit.這就表示文件已經被提交了.
根據場景一查看版本狀態(tài)

我們對文件進行了修改(增加了"這是第三行").
git checkout -- test.txt(撤銷對文件的修改,該文件會恢復到修改前即丟棄工作區(qū)的修改)

從上面可以看到使用了 git checkout.git幫我們恢復了第二次提交的狀態(tài)(第三次修改并未提交)
場景二:在文件中修改了內容,又使用了 git add(我在文件中增加了一行內容"我是第三行",并且對改行進行修改,把"三"改成"四"現在我用git add提交文件.)
現在使用 git checkout.再回到文件中,我們會發(fā)現文件恢復到了"我是第三行"而不是"我是第四行".接下來可以使用git commit提交文件.
/------------------撤銷修改-------------------------------------
/------------------刪除文件-------------------------------------
場景:往倉庫里添加一個文件tt.txt
1.提交(提交步驟不多說了.不懂的回到前面看)
2.刪除該文件
git rm tt.txt(刪除tt.txt文件)
git commit -m "刪除tt.txt文件"
如何恢復?
git reset --hard HEAD^(可以指定任意版本)
注意:目前知道刪除文件并恢復的方法就這個.其他的不知道.
/------------------刪除文件-------------------------------------
好了,上面的操作基本都能解決日常所需.
下面我們可以添加遠程倉庫了以coding平臺為例.

你可以在coding平臺或github等平臺創(chuàng)建你的項目,這里我以Android項目為例:
在coding平臺創(chuàng)建晚后是這樣的:

Paste_Image.png

在你的電腦中可能你已經有了一個Android項目了,現在我們開始把我們的Android項目給推到我們的遠程倉庫上去.
有兩種方式,一種是https,一種是ssh,怎么看不懂?看下圖:

Paste_Image.png

用https這種方式在提交代碼的時候是需要用戶名和郵箱的.

Paste_Image.png

ssh這種方式無需用戶名和郵箱,但是要配置一個密鑰.

打開git 客戶端
鍵入 ssh-keygen然后回車

Paste_Image.png

自己的項目一般不用設置密碼,不過這個根據個人喜好,看到上面的圖后你可以按回車.
接著鍵入cat ~/.ssh/id_rsa.pub,看到下面一大堆東西了嗎?這個就是你的公鑰,把它復制到coding平臺里面,個個平臺不一樣,這里我就不演示了,自己找.

Paste_Image.png

好了,現在我們已經設置好了接下來回到原來位置,現在你已經有了一個Android項目了.找到你項目的位置打開,就像這樣:

Paste_Image.png

在git里面進入你的項目所在的目錄然后把你的項目作為倉庫,進行初始化

Paste_Image.png

這時候你會發(fā)現你的項目里面多了這么一個文件

Paste_Image.png

現在你可以把你的項目和你的遠程倉庫關聯起來了

Paste_Image.png

到了這里,你就已經關聯成功了,現在是上傳代碼的時候了.
查看一下狀態(tài):git status

Paste_Image.png

看到那一堆紅色的東西沒有,那就是你的項目文件.你需要做的是把這些文件提交到你的遠程倉庫里面去
執(zhí)行git add --all

Paste_Image.png

我們再看一下狀態(tài)

Paste_Image.png

看到沒有,已經全部變成綠色了,證明添加成功了,現在我們可以提交了
執(zhí)行git commit -m "first commit"

Paste_Image.png

白花花的一片,到了這里你已經添加成功,還沒完,因為你會發(fā)現你的遠程倉庫并沒有看到任何代碼.
執(zhí)行git push -u origin master

Paste_Image.png

你會發(fā)現提交失敗了.看提示他叫你先獲取最新的數據,好吧
執(zhí)行git pull

Paste_Image.png

天啊,還錯,這是怎么了?其實這是在說你沒有關聯成功,你可以看到上面提示你
執(zhí)行git branch --set-upstream-to=origin/<branch>master.
注意:<branch>表示你的分支名字,這里寫master

Paste_Image.png

看到上圖說明已經關聯成功了.
再執(zhí)行git pull

Paste_Image.png

看到了吧,已經在你的平臺上pull下來一個文件了.別搞訴我你不知道是什么文件.
現在我們執(zhí)行git push -u origin master

Paste_Image.png

回到我們的coding平臺,刷新一下

Paste_Image.png

看到了吧.這就已經提交上去了.以后修改項目只需執(zhí)行上面基礎操作即可同步了.
就說到這里了.可能說的很亂,但是按著步驟走應該不會有問題.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末褥伴,一起剝皮案震驚了整個濱河市谅将,隨后出現的幾起案子,更是在濱河造成了極大的恐慌重慢,老刑警劉巖饥臂,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異似踱,居然都是意外死亡隅熙,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門核芽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來囚戚,“玉大人,你說我怎么就攤上這事轧简〕鄯唬” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵哮独,是天一觀的道長拳芙。 經常有香客問我,道長皮璧,這世上最難降的妖魔是什么舟扎? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮悴务,結果婚禮上睹限,老公的妹妹穿的比我還像新娘。我一直安慰自己讯檐,他們只是感情好邦泄,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著裂垦,像睡著了一般顺囊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蕉拢,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天特碳,我揣著相機與錄音诚亚,去河邊找鬼。 笑死午乓,一個胖子當著我的面吹牛站宗,可吹牛的內容都是我干的。 我是一名探鬼主播益愈,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼梢灭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蒸其?” 一聲冷哼從身側響起敏释,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摸袁,沒想到半個月后钥顽,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡靠汁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年蜂大,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝶怔。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡奶浦,死狀恐怖,靈堂內的尸體忽然破棺而出踢星,到底是詐尸還是另有隱情财喳,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布斩狱,位于F島的核電站耳高,受9級特大地震影響,放射性物質發(fā)生泄漏所踊。R本人自食惡果不足惜泌枪,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秕岛。 院中可真熱鬧碌燕,春花似錦、人聲如沸继薛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遏考。三九已至慈鸠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灌具,已是汗流浹背青团。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工譬巫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人督笆。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓芦昔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親娃肿。 傳聞我的和親對象是個殘疾皇子咕缎,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內容