什麼是Git
Git是目前世界上最先進的分布式版本控制系統。最初由Linus Torvalds編寫,用作Linux內核代碼的管理。如果你是windows用戶,看到這裡你可能會擔心“是不是只能用在linux上?或者Git對於windows不是那麼友好。” ,那麼我告訴你你的擔心是多余的,GitHub 發布了GitHub for Windows,為 Windows 平台開發者提供了一個易於使用的 Git 圖形客戶端;微軟也通過CodePlex向開發者提供 git 版本控制系統。
為什麼學習Git
除了你可以使用Git來管理自己的項目之外,還因為越來越多的人使用Github來托管自己的開源項目, 你可以找到適合你的開源項目進行學習,加入到一個團隊來提高自己。同時GitHub也可以幫助你找到滿意的工作!! 沒錯,可能有公司看到你托管到GitHub的項目而向你發出offer,在簡歷中 你的GitHub 可能成為加分項。
安裝設置Git
1.msysgit是 Windows版的Git 點擊下載 安裝完成後,點擊開始菜單—》Git文件夾—》Git Bash 打開後 會出現下面的命令行窗體, 證明你安裝成功了。
2. 設置你的名字與Email,你的名字與Email會出現在你的提交記錄中。
git config --global user.name "你的名字" git config --global user.email "你的Email"
注意:git config使用--system參數時, Git 會讀寫/etc/gitconfig文件,該文件含有 對系統上所有用戶及他們所擁有的倉庫都生效的配置值
git config使用--global參數時, Git 會讀寫~/.gitconfig文件,該文件含有只適用於該用戶的配置值
git config使用--local參數時, Git 會讀寫 由用戶定義的各個庫中Git 目錄下的配置文件(.git/config),該文件含有只適用於該Git庫的配置值
以上闡述的三層配置從一般到特殊層層推進,如果定義的值有沖突,以後面層中定義的為准,例如:在.git/config和/etc/gitconfig有沖突會采用.git/config值
你可以使用下面的命令來產看config的配置值
git config --list
3.在工作目錄中初始化新倉庫
倉庫,英文名repository,你可以簡單的理解一個目錄,這個目錄裡面的所有文件都可以被Git管理起來,每個文件的修改,刪除,Git都能跟蹤。
首先我們從命令行進入到倉庫的文件夾:
使用
git init
命令來將文件夾變成Git可以管理的倉庫。
這時倉庫目錄下多了一個.git
的目錄(如果沒有,可能你的windows設置不顯示隱藏的文件、文件夾,在文件夾選項中修改一下設置就好了。),這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裡面的文件,不然改亂了,就把Git倉庫給破壞了。
我們也可以從現有倉庫克隆
git clone http://git.oschina.net/xxxxxx/xxxxxx.git
這裡使用的是 clone
而不是 checkout,
Git 收取的是項目歷史的所有數據(每一個文件的每一個版本),服務器上有的數據克隆之後本地也都有了。實際上,即便服務器的磁盤發生故障,用任何一個克隆出來的客戶端都可以重建服務器上的倉庫,回到當初克隆時的狀態。
我們來clone 院子裡尋找和諧大大的PaPaPa項目:
我先fork了一下這個項目,獲取他的地址:
開始clone:
clone 完成,查看一下倉庫的文件夾:
Git各種操作
Git添加文件
在學習怎麼添加文件之前我們先了解一下Git的工作流:
你的本地倉庫由 git 維護的三棵“樹”組成。第一個是你的 工作目錄,它持有實際文件;第二個是 緩存區(Index),它像個緩存區域,臨時保存你的改動;最後是 HEAD,指向你最近一次提交後的結果
首先使用git add命令將計劃的改動提交到緩存區,
然後使用git commit -m 代碼提交信息"命令,將代碼提交到HEAD,此時還沒有提交到服務器,
執行git push origin master命令以將這些改動提交到服務器,可以把 master 換成你想要推送的任何分支。
下面我們來嘗試添加文件
1.在倉庫文件夾內我新建了個readme.txt
2.使用命令 git add readme.txt添加到緩存區裡面去。
3.用命令 git commit -m 把文件提交到HEAD。
4.使用 git status 檢查當前文件狀態
Git提交修改
1.首先我們先修改一下 readme.txt
2. 我們使用 git status 查看結果:
上面的信息告訴我們,readme.txt被修改過了,但還沒有准備提交的修改。
3. 我們可以使用 git diff +文件名 ,查看具體修改的內容。
4.使用git commit 提交修改的文件。
Git版本回退
1.使用git log 查詢提交的歷史記錄
2.如果感覺顯示的信息太多, 我們可以使用git log --pretty=oneline 命令
第一列一大串的字符為commit id ,是一個SHA1計算出來的一個非常大的數字,用十六進制表示,第二列為我們提交時填寫的注釋。
3.這時我們回退到上個版本可以使用git reset --hard HEAD^ 命令,回退上上個版本 git reset --hard HEAD^^ ,依次類推, 當我們回退100個版本時,可以寫成git reset --hard HEAD~100
可以看到 HEAD目前指向的是 commit id為9d3830c的版本。
4.我們已經回退了一個版本,我們可以撤銷這次的回退 當然可以,我們使用 git reset --hard +commit id 形式版本號(沒必要寫全,前幾位就可以了,Git會自動去找)。
可以看到 HEAD又重新指向了 commit id為4332ee4的版本。
Git刪除文件與恢復文件
1.我們可以使用 git rm+文件名 命令來刪除文件
2.我們使用 git status 命令 產看目前倉庫狀態
可以看到deleted:顯示了 我們剛剛刪除的文件,我們再看看倉庫的文件夾,發現readme.txt 也沒有了。
3.這時我們用git checkout命令來恢復剛剛刪除的文件。
git checkout
其實是用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。
添加遠程倉庫
添加SSH Keys
SSH keys 是為了防止任何人隨意clone 或 push 代碼而產生的.
SSH keys 有公匙和密匙,你在本地生成了密匙和公匙之後,把你的公匙告訴給服務器或者其他協作者,那麼你就可以在他們的git版本庫clone和push代碼等操作.相對於一台服務器來說,一台協作者機器對應一個SSH keys. 1.首先使用 $ ssh-keygen -t rsa -C "你的郵箱" 1.這裡是輸入你的SSH keys 保存的位置,就是前面括號內的路徑。 2.輸入口令,可以直接回車。 3.再次輸入口令,可以直接回車。 打開剛剛ssh keys 保存的文件夾: id_rsa 存放的就是私鑰 , id_rsa.pub存放的是公鑰,我們可以cat 路徑/id_rsa.pub查看公鑰。 也可以用文件管理器打開文件。 2.在github或者git@osc 添加你的公鑰遠程倉庫
1.在git@osc新建倉庫
2.創建完成後添加後使用命令:$ git remote add origin [email protected]:你的用戶名/gitstudy.git
遠程庫的名字是origin
,這是Git默認的叫法,也可以改成別的,但是origin
這個名字一看就知道是遠程庫。
下一步,就可以把本地庫的所有內容推送到遠程庫上:
3.使用$ git push -u origin master
把本地庫的所有內容推送到遠程庫上
小結
關於Git,本篇文章也沒講到分支,感興趣的同學先去看看廖雪峰老師的教程吧,這篇文章以後也會更新這部分內容,春節假期就這麼匆匆過去了,感覺也沒學到什麼,希望繼續努力。能堅持住寫博客的習慣。
參考資料
1.廖雪峰老師的Git教程
2.Git使用簡易教程:http://www.bootcss.com/p/git-guide/
3.Pro Git(中文版):http://www.linuxidc.com/Linux/2013-05/85066.htm
GitHub 教程系列文章:
GitHub 使用教程圖文詳解 http://www.linuxidc.com/Linux/2014-09/106230.htm
Git 標簽管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm
Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm
Git 遠程倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm
Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm
Git 服務器搭建與客戶端安裝 http://www.linuxidc.com/Linux/2014-05/101830.htm
Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm
分享實用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm
Git 的詳細介紹:請點這裡
Git 的下載地址:請點這裡