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 add
再git 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 commit
或git 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
注:本博客僅供學習交流使用,內容有借用廖雪峯網站中部分內容,如有侵權請聯繫我刪帖,謝謝。