個人github https://github.com/wuhaining/-wuhaining.github.io
操作系統:window7
學習參考:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
http://www.cnblogs.com/BeginMan/p/3591005.html
http://blog.csdn.net/wirelessqa/article/details/20152651
一、下載軟件
https://git-for-windows.github.io/
二、安裝
安裝成功
三、配置
1、打開“Git”->“Git Bash”
2、配置使用用戶
因爲git是分佈式版本控制系統,所以每個機器都必須自報家門:名字和email
在命令行中輸入
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
注意
git
config
命令的--global
參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。3、創建版本庫
版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄裏面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。
(1)、進入一個目錄
ls命令---列出所有的目錄
pwd命令----顯示當前路徑
(2)、創建一個空目錄myGit
使用命令 mkdir
注:如果你使用windows系統,爲了避免遇到各種莫名其妙的問題,請確保目錄名(包括父目錄)不含中文。
(3)、把這個目錄變成git可以管理的倉庫
使用命令 git init
瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發現當前目錄下多了一個.git
的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,不然改亂了,就把Git倉庫給破壞了。
如果你沒有看到.git
目錄,那是因爲這個目錄默認是隱藏的,用ls
-ah
命令就可以看見。
(4)、把文件添加到版本庫
編寫一個test.txt文件
一定要放在myGit目錄下(子目錄也行)。【這是一個git倉庫】
***********把一個文件放到git倉庫需要兩步**********
第一步:使用命令 git add,把文件添加到倉庫。
沒有任何消息顯示,說明添加成功。【Unix的哲學是“沒有消息就是好消息”】
第二步:使用命令git commit,把文件提交到倉庫。
-m
後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裏方便地找到改動記錄。
一次添加多個文件
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
1、git status命令查看結果
修改前
修改後
2、git diff命令查看具體修改了什麼內容
3、git log命令查看歷史操作記錄
git log --pretty=oneline命令簡化信息
4、git reset命令版本回退
1)、HEAD
首先,Git必須知道當前版本是哪個版本,在Git中,用HEAD
表示當前版本,也就是最新的提交3628164...882e1e0
(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^
,上上一個版本就是HEAD^^
,當然往上100個版本寫100個^
比較容易數不過來,所以寫成HEAD~100
。
2)、版本號
5、git reflog命令用來記錄你的每一次命令
6、git checkout -- file在工作區的修改全部撤銷。
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作區的修改全部撤銷,這裏有兩種情況:
一種是readme.txt
自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt
已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個文件回到最近一次git commit
或git
add
時的狀態。
注:git
checkout -- file
命令中的--
很重要,沒有--
,就變成了“切換到另一個分支”的命令。
7、cat命令查看文件內容
總結:
場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file
。
場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file
,就回到了場景1,第二步按場景1操作。
8、rm命令刪除文件
rm----直接在文件管理器中刪除文件,但是工作區和版本庫會不一致。
git rm---使用命令git rm刪除文件,在使用命令git commit
如果不小心刪除了,可以重新從版本庫中checkout一份下來。
使用命令git checkout -- file
五、遠程倉庫
1、準備工作
第1步:創建SSH
Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa
和id_rsa.pub
這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git
Bash),創建SSH Key:
如下:
第2步:登陸GitHub,打開“Account
settings”,“SSH Keys”頁面:
然後,點“Add
SSH Key”,填上任意Title,在Key文本框裏粘貼id_rsa.pub
文件的內容:
點擊“Add Key”,如下:
爲什麼GitHub需要SSH Key呢?因爲GitHub需要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,所以,GitHub只要知道了你的公鑰,就可以確認只有你自己才能推送。
當然,GitHub允許你添加多個Key。假定你有若干電腦,你一會兒在公司提交,一會兒在家裏提交,只要把每臺電腦的Key都添加到GitHub,就可以在每臺電腦上往GitHub推送了。
最後友情提示,在GitHub上免費託管的Git倉庫,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放進去。
如果你不想讓別人看到Git庫,有兩個辦法,一個是交點保護費,讓GitHub把公開的倉庫變成私有的,這樣別人就看不見了(不可讀更不可寫)。另一個辦法是自己動手,搭一個Git服務器,因爲是你自己的Git服務器,所以別人也是看不見的。這個方法我們後面會講到的,相當簡單,公司內部開發必備。
2、新建遠程倉庫
3、關聯遠程庫
命令:
$ git remote add origin [email protected]:wuhaining/wuhaining.github.io.git
查看
$git remote -v
推送本地內容到遠程庫
把本地庫的內容推送到遠程,用git push
命令,實際上是把當前分支master
推送到遠程。
由於遠程庫是空的,我們第一次推送master
分支時,加上了-u
參數,Git不但會把本地的master
分支內容推送的遠程新的master
分支,還會把本地的master
分支和遠程的master
分支關聯起來,在以後的推送或者拉取時就可以簡化命令。
到了這裏遇到一個問題?
按照網上分析所說:
遠程倉庫中代碼版本與本地不一致衝突導致的。
解決:
git pull
再自動merge或手動merge衝突
再次git push
這樣就同步了
總結:
要關聯一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git
;
關聯後,使用命令git push -u origin master
第一次推送master分支的所有內容;
此後,每次本地提交後,只要有必要,就可以使用命令git push origin master
推送最新修改;
4、創建分支
首先,我們創建dev
分支,然後切換到dev
分支:
$ git checkout -b dev
Switched to a new branch 'dev'
git checkout
命令加上-b
參數表示創建並切換,相當於以下兩條命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
然後,用git branch
命令查看當前分支:
$ git branch
* dev
master
git branch
命令會列出所有分支,當前分支前面會標一個*
號。
測試
改變內容
提交
現在,dev
分支的工作完成,我們就可以切換回master
分支:
$ git checkout master
Switched to branch 'master'
切換回master
分支後,再查看一個readme.txt文件,剛纔添加的內容不見了!因爲那個提交是在dev
分支上,而master
分支此刻的提交點並沒有變:
現在,我們把dev
分支的工作成果合併到master
分支上:
$ git merge dev
Updating d17efd8..fec145a
Fast-forward
test.txt | 1 +
1 file changed, 1 insertion(+)
git merge
命令用於合併指定分支到當前分支。合併後,再查看test.txt的內容,就可以看到,和dev
分支的最新提交是完全一樣的。
注意到上面的Fast-forward
信息,Git告訴我們,這次合併是“快進模式”,也就是直接把master
指向dev
的當前提交,所以合併速度非常快。
當然,也不是每次合併都能Fast-forward
,我們後面會將其他方式的合併。
合併完成後,就可以放心地刪除dev
分支了:
$ git branch -d dev
Deleted branch dev (was fec145a).
刪除後,查看branch
,就只剩下master
分支了:
$ git branch
* master
因爲創建、合併和刪除分支非常快,所以Git鼓勵你使用分支完成某個任務,合併後再刪掉分支,這和直接在master
分支上工作效果是一樣的,但過程更安全。
Git鼓勵大量使用分支:
查看分支:git branch
創建分支:git branch <name>
切換分支:git checkout <name>
創建+切換分支:git checkout -b <name>
合併某分支到當前分支:git merge <name>
刪除分支:git branch -d <name>
5、克隆git