github--git的使用
一、下載軟體
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@example.com"
注意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 git@github.com: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 devSwitched to a new branch 'dev'
git checkout命令加上-b參數表示建立並切換,相當於以下兩條命令:
$ git branch dev$ git checkout devSwitched to branch 'dev'
然後,用git branch命令查看當前分支:
$ git branch* dev master
git branch命令會列出所有分支,當前分支前面會標一個*號。
測試
改變內容
提交
現在,dev分支的工作完成,我們就可以切換回master分支:
$ git checkout masterSwitched to branch 'master'
切換回master分支後,再查看一個readme.txt檔案,剛才添加的內容不見了!因為那個提交是在dev分支上,而master分支此刻的提交點並沒有變:
現在,我們把dev分支的工作成果合并到master分支上:
$ git merge devUpdating d17efd8..fec145aFast-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 devDeleted branch dev (was fec145a).
刪除後,查看branch,就只剩下master分支了:
$ git branch* master
因為建立、合并和刪除分支非常快,所以Git鼓勵你使用分支完成某個任務,合并後再刪掉分支,這和直接在master分支上工作效果是一樣的,但過程更安全。
Git鼓勵大量使用分支:
查看分支:git branch
建立分支:git branch
切換分支:git checkout
建立+切換分支:git checkout -b
合并某分支到當前分支:git merge
刪除分支:git branch -d