最近朋友都問我有關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)建晚后是這樣的:
在你的電腦中可能你已經有了一個Android項目了,現在我們開始把我們的Android項目給推到我們的遠程倉庫上去.
有兩種方式,一種是https,一種是ssh,怎么看不懂?看下圖:
用https這種方式在提交代碼的時候是需要用戶名和郵箱的.
ssh這種方式無需用戶名和郵箱,但是要配置一個密鑰.
打開git 客戶端
鍵入 ssh-keygen然后回車
自己的項目一般不用設置密碼,不過這個根據個人喜好,看到上面的圖后你可以按回車.
接著鍵入cat ~/.ssh/id_rsa.pub,看到下面一大堆東西了嗎?這個就是你的公鑰,把它復制到coding平臺里面,個個平臺不一樣,這里我就不演示了,自己找.
好了,現在我們已經設置好了接下來回到原來位置,現在你已經有了一個Android項目了.找到你項目的位置打開,就像這樣:
在git里面進入你的項目所在的目錄然后把你的項目作為倉庫,進行初始化
這時候你會發(fā)現你的項目里面多了這么一個文件
現在你可以把你的項目和你的遠程倉庫關聯起來了
到了這里,你就已經關聯成功了,現在是上傳代碼的時候了.
查看一下狀態(tài):git status
看到那一堆紅色的東西沒有,那就是你的項目文件.你需要做的是把這些文件提交到你的遠程倉庫里面去
執(zhí)行git add --all
我們再看一下狀態(tài)
看到沒有,已經全部變成綠色了,證明添加成功了,現在我們可以提交了
執(zhí)行git commit -m "first commit"
白花花的一片,到了這里你已經添加成功,還沒完,因為你會發(fā)現你的遠程倉庫并沒有看到任何代碼.
執(zhí)行git push -u origin master
你會發(fā)現提交失敗了.看提示他叫你先獲取最新的數據,好吧
執(zhí)行git pull
天啊,還錯,這是怎么了?其實這是在說你沒有關聯成功,你可以看到上面提示你
執(zhí)行git branch --set-upstream-to=origin/<branch>master.
注意:<branch>表示你的分支名字,這里寫master
看到上圖說明已經關聯成功了.
再執(zhí)行git pull
看到了吧,已經在你的平臺上pull下來一個文件了.別搞訴我你不知道是什么文件.
現在我們執(zhí)行git push -u origin master
回到我們的coding平臺,刷新一下
看到了吧.這就已經提交上去了.以后修改項目只需執(zhí)行上面基礎操作即可同步了.
就說到這里了.可能說的很亂,但是按著步驟走應該不會有問題.