git的使用簡介 常用命令

git簡介:

Git是目前世界上最先進的分佈式版本控制系統,管理代碼賊6,目前很多編譯器都支持git,是一個很好的團隊開發工具。

一、下載git

Windows:

官網下載: https://git-scm.com/downloads

國內鏡像下載:https://pan.baidu.com/s/1kU5OCOB#list/path=%2Fpub%2Fgit

安裝完成後,在開始菜單裏找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功!

這個地方的git bash操作類似於Linux上的命令行操作,我在自己搭建的Linux系統服務器上研究過,用來同步服務器和本機代碼。

安裝完成後,還需要最後一步設置,在命令行輸入:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Linux:

$ sudo apt-get install git  //或 $sudo yum install git

 

Mac Os X:

(沒錢買,沒用過,這裏借用了廖雪峯網站裏面的教程)

一是安裝homebrew,然後通過homebrew安裝Git,具體方法請參考homebrew的文檔:http://brew.sh/

第二種方法更簡單,也是推薦的方法,就是直接從AppStore安裝Xcode,Xcode集成了Git,不過默認沒有安裝,你需要運行Xcode,選擇菜單“Xcode”->“Preferences”,在彈出窗口中找到“Downloads”,選擇“Command Line Tools”,點“Install”就可以完成安裝了。

Xcode是Apple官方IDE,功能非常強大,是開發Mac和iOS App的必選裝備,而且是免費的!

 

二、創建版本庫(命令行窗口裏粘貼快捷鍵是shift+ins)

(windows版本作爲介紹,Linux類似,需要用命令找到合適的路徑,然後直接輸入git命令就好)

1、找到合適的地方用作版本庫

這個目錄就是你的代碼庫的位置,一般就是一個單獨的項目作爲一個版本庫,不一定要是空文件夾

創建版本庫的方法很簡單,找到項目目錄,然後鼠標右鍵調出git bash窗口

2、以當前文件夾作爲版本庫的命令 

$ git init

命令執行前後的對比(多了個叫.git的隱藏文件夾,這就說明ok了,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,不然改亂了,就把Git倉庫給破壞了)。  Linux下執行命令 ls -a可查看是否有這個.git文件夾。

注:路徑中不要有中文漢字,避免各種亂七八糟的問題。

 

三、版本提交,版本回退,管理修改,撤銷修改,刪除文件

1、版本提交

$ git add 文件名或文件夾名稱
$ git commit -m "這次的提交描述"

如git add ./就是上傳所有代碼,這個地方要注意的就是有的框架裏會有個叫.gitignore的文件,裏面的內容會讓git在上傳代碼的時候忽略掉一些框架本身的東西,如果你是從github上下載的代碼,很多時候就需要自己再去下載個框架填進去。

git commit -m""就是將這次的git add 的內容提交到一個叫commit的快照裏面。一次commit可以提交很多個add的內容。

2、版本回退

回退到上一個版本(可以多次使用)

$ git reset --hard HEAD^

回退到上兩個版本

$ git reset --hard HEAD^^

git log查看提交歷史,然後git reset 回退到指定版本 。這也是每次commit -m" "中寫內容的重要性,說不定什麼時候就拯救了你寫了好幾天的代碼。hard後面跟的版本號沒必要全部寫出來,git會自動去補全匹配。

$ git log 
$ git reset --hard d954ae

 

3、管理修改(引用廖雪峯的git教程)

我們來一個操作,第一次修改 -> git add -> 第二次修改 -> git commit

然後git status查看狀態,咦,怎麼第二次的修改沒有被提交?

Git管理的是修改,當你用git add命令後,在工作區的第一次修改被放入暫存區,準備提交,但是,在工作區的第二次修改並沒有放入暫存區,所以,git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提交。

提交後,用git diff HEAD -- readme.txt命令可以查看工作區和版本庫裏面最新版本的區別。

那怎麼提交第二次修改呢?你可以繼續git addgit commit,也可以彆着急提交第一次修改,先git add第二次修改,再git commit,就相當於把兩次修改合併後一塊提交了:

第一次修改 -> git add -> 第二次修改 -> git add -> git commit

4、撤銷修改(引用廖雪峯的git教程)

自然,你是不會犯錯的。不過現在是凌晨兩點,你正在趕一份工作報告,你在readme.txt中添加了一行:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
My stupid boss still prefers SVN.

在你準備提交前,一杯咖啡起了作用,你猛然發現了stupid boss可能會讓你丟掉這個月的獎金!

既然錯誤發現得很及時,就可以很容易地糾正它。你可以刪掉最後一行,手動把文件恢復到上一個版本的狀態。如果用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會告訴你,git checkout -- file可以丟棄工作區的修改:

$ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷,這裏有兩種情況:

一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。

總之,就是讓這個文件回到最近一次git commitgit add時的狀態。

現在,看看readme.txt的文件內容:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

文件內容果然復原了。

git checkout -- file命令中的--很重要,沒有--,就變成了“切換到另一個分支”的命令,我們在後面的分支管理中會再次遇到git checkout命令。

5、刪除文件(引用廖雪峯的git教程)

在Git中,刪除也是一個修改操作,我們實戰一下,先添加一個新文件test.txt到Git並且提交:

$ git add test.txt

$ git commit -m "add test.txt"
[master b84166e] add test.txt
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

一般情況下,你通常直接在文件管理器中把沒用的文件刪了,或者用rm命令刪了:

$ rm test.txt

這個時候,Git知道你刪除了文件,因此,工作區和版本庫就不一致了,git status命令會立刻告訴你哪些文件被刪除了:

$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    deleted:    test.txt

no changes added to commit (use "git add" and/or "git commit -a")

現在你有兩個選擇,一是確實要從版本庫中刪除該文件,那就用命令git rm刪掉,並且git commit

$ git rm test.txt
rm 'test.txt'

$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test.txt

現在,文件就從版本庫中被刪除了。

 

四、添加遠程庫

1、綁定ssh kyes(不能忽略的步驟!)

本機上創建ssh key,如果你的用戶目錄下已經有.ssh目錄並且有這兩個文件的話,跳過生成這一步,直接去綁定。

$ ssh-keygen -t rsa -C "[email protected]"

用記事本打開pub這個文件,複製裏面的內容。

打開GitHub節目,設置裏面,ssh and gpg keys 裏面 new ssh key 

輸入標題,然後再key裏面粘貼剛剛複製的ssh key即可。

 

2、添加到github遠程庫

在GitHub裏面創建一個新的repository

目前,在GitHub上的這個test倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然後,把本地倉庫的內容推送到GitHub倉庫。

現在,我們根據GitHub的提示,在本地的learngit倉庫下運行命令:

$ git remote add origin 你自己github上面看到的那個ssh鏈接

添加後,遠程庫的名字就是origin,這是Git默認的叫法,也可以改成別的,但是origin這個名字一看就知道是遠程庫。

下一步,就可以把本地庫的所有內容推送到遠程庫上:

$ git push -u origin master

提交後看到的github項目裏面就會有你本地的文件,

由於遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。

從現在起,只要本地作了提交,就可以通過命令:

$ git push origin master

過程中第一次提交的話ssh會給你一個警告,就是是否相信這個鏈接,點確定就好,問題不大。

 

五、從遠程倉庫下載

1、機器裏添加版本庫,GitHub賬號

裏添加機器的ssh key

方法上面有介紹,這裏不再重複介紹,一臺機器只需要添加一回,我這裏指的是沒添加過的需要添加,否則就會失敗。

2、克隆下來

$ git clone 剛剛那個鏈接,類似[email protected]:yourname/test.git的

慢慢的等着就好了,

 

更多的內容就不寫了,如分支管理,標籤管理啥的,還有碼雲,可以參考廖雪峯的教程:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

 

 

 

 

注:本博客僅供學習交流使用,內容有借用廖雪峯網站中部分內容,如有侵權請聯繫我刪帖,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章