git首次安裝後的設置:git
首先打開hash.exe輸入用戶名和郵箱github
1
2
|
$ git config --global user.name
"Your Name"
$ git config --global user.email
"email@example.com"
|
利用git本地倉庫進行版本控制能夠簡單的理解爲:a 持有實際文件的物理工做目錄,b 暫存區,c 本地倉庫(git在本地默認創建的一個master分支)web
其中a-->b是由add實現,而b-->c是由commit實現。bash
利用git在本地進行版本庫存儲:
(打開D:/Git/bin/bash.exe)服務器
1.git在本地指定地點創建倉庫(或者是指向克隆下來的倉庫):ssh
1
|
cd e:/github_projects/tisikcci.github.io
|
2.初始化一個git倉庫:測試
1
|
git init
|
初始化以後,會在tisikcci.github.io文件夾下生成一個默認隱藏的.git文件夾加密
3.向這個隱藏的文件夾中添加文件:README.md(能夠是別的文件,要將這個文件放在.git同級文件夾下):spa
1
|
git add README.md
|
也能夠一次添加多個文件,相似於:版本控制
1
|
git add README1.md README2.md README3.md
|
4.將文件存入本地倉庫(當前分支),同時添加改動或者說是更新說明:(這裏的‘first commit’應該是與本次提交或者更新有關係有實際意義的說明,方便之後溯源)
1
|
git commit - m
'first commit'
|
5.在上面的3,4步驟過程後可使用如下命令看到內容的變更
1
|
git status
|
6.可使用如下代碼查看git版本庫的修改或者說是更新次數(使用q能夠退出這個命令)
1
|
git log
|
若是以爲這樣獲得的信息太多,可使用下面的命令,使得每次修改信息漂亮的顯示在同一行
1
|
git log --pretty=oneline
|
也能夠選定查看最近2次的版本更新信息:
1
|
git log -n
2
|
7.能夠利用reset實現版本回退:
1
|
git reset --hard head^
|
注意:HEAD表示當前版本(就是一個指針),在後面加一個^,表示(指向)上一個版本,前第N個版本是HEAD~N,
回退之後想恢復以前最新的版本或者是某次特定的版本,能夠利用以下代碼查找操做代碼庫的關鍵步驟歷史記錄的ID實現:
1
|
git reflog
|
根據ID,好比是441736f,前進到回退前的某個版本
1
|
git reset --hard 441736f
|
8.commit以後又對項目中的某個文件內容進行了更新,能夠利用如下命令回到離commit最近的狀態(就是丟棄掉沒有進行add操做的更改內容,回到上次commit操做時的狀態)
1
|
git checkout -- 文件名
|
這裏本質是利用本地版本庫中的相同文件替換了本地文件夾中的文件,因此看起來是回到以前commit操做時的狀態了(可是若是更改已經add了,除非放棄add操做內容,不然下次commit又會更新本地倉庫)
更進一步,撤銷已經add到暫存區但沒有commit到本地分支的文件
1
|
it reset head 文件名
|
以上過程當中可使用如下命令查看具體文件的內容
1
|
cat 文件名
|
9.刪除本地版本庫中的文件
首先說一下一種特殊狀況:本地的文件夾中的項目相關文件被刪除了,但沒有更新本地的版本庫,若是這時想恢復被刪除的項目相關文件,能夠利用如下命令:
1
|
git checkout -- 文件名
|
第二種狀況是真的想刪除本地倉庫中的相關文件,利用如下代碼刪除本地文件夾中的文件(也能夠手動刪除)
1
|
rm 文件名
|
而後利用如下代碼刪除本地倉庫中的文件
1
|
git rm 文件名
|
而且利用git commit進行保存
1
|
git commit -m
"remove 文件名"
|
10.新建一個分支,能夠利用
1
2
|
git branch 分支名
git checkout 分支名
|
上面的代碼分別表示新建一個分支,並將head(指針)指向新建的指針
也可使用下面的方式直接實現新建一個分支並使head指向它
1
|
git checkout -b 分支名
|
能夠利用下面的命令分別查看本地分支,遠程分支和全部分支,當前指向分支前會加*號
1
|
git branch<br>git branch -r<br>git branch -a
|
刪除已經存在的指定本地分支,遠程分支(注意要先將指針指向其餘分支才能刪除此分支)
1
2
|
git branch -d 分支名
git push origin :分支名
|
重命名分支
1
|
git branch -m 原分支名 新分支名
|
11.在新分支上提交內容,對以前的主分支master並不會有影響,能夠利用以下方式再切換回主分支
1
|
git checkout master
|
此時head會從新指向master,將master替換爲別的分支,能夠實現切換到任意指定分支
12.將新創建的分支合併到主分支(首先要切換回主分支)
1
|
git merge 新分支
|
合併後,就能夠利用上面給出的方法刪除新分支
14.若是想保留新建的分支,並推送到遠程倉庫,能夠利用
1
|
git push origin 新建的分支
|
15.能夠給項目進度添加版本號,經過添加標籤的方式實現
1
|
git tag 版本號
|
經過省略版本號能夠直接查看已經添加的版本號
1
|
git tag
|
能夠給之前的某次提交補加版本號,只要查找到以前commit操做對應的ID,好比:441736f
1
|
git tag 版本號 441736f
|
能夠利用以下的方式實如今添加標籤時添加說明
1
|
git tag -a 版本號 -m
"版本說明"
|
能夠經過如下命令查看指定版本內容
1
|
git show 版本號
|
刪除不想要的標籤
1
|
git tag -d 已經存在的標籤(版本號)
|
能夠將本地標籤推送到遠程倉庫
1
|
git push 遠程主機名(好比origin) 版本號
|
好比:
1
|
git push origin v1.
0
|
將本地全部的版本號都推送到遠程倉庫
1
|
git push origin --tags
|
若是想刪除遠程倉庫的版本號,須要進行兩步
a. 首先要刪除本地版本號(標籤)
b.再刪除遠程版本號
1
|
git push origin :refs/tags/版本號
|
*******************************************************************************************************************************
利用以上步驟,基本能夠實現利用git本地進行操做,如下要實現將本地git倉庫同步到遠程倉庫(例如github,固然也能夠本身在一臺PC上搭建一個服務器,做爲遠程倉庫)
利用github充當遠程倉庫是一種很不錯的方式,git本地倉庫和github能夠經過SSH加密,利用多種方式進行數據傳輸:HTTP(s)、SSH、Git、本地協議等,前兩種比較經常使用。
*******************************************************************************************************************************
1.要想將本地倉庫同步到Github上,首先須要創建本地和Github上使用的SSH私鑰和公鑰,在git的bash.exe中輸入
1
|
ssh-keygen -t rsa -C 「tisikcci@foxmail.com」
|
2.在電腦上生成公鑰和私鑰,將公鑰上傳到github上
3.測試是否鏈接成功
1
|
ssh -T git@github.com
|
4.在Github上創建一個你想和本地倉庫進行同名的倉庫(名字相同)
5.利用上面的cd...指向本地倉庫的位置,而後關聯到Github的遠程倉庫:
1
|
git remote add origin git@github.com:tisikcci/tisikcci.github.com.git
|
6.關聯好以後,能夠把本地倉庫中的內容推送到Github上的遠程倉庫了
在首次進行推送的時候,須要:
1
|
git push -u origin master
|
此處加 -u 是用來將本地master和遠程master進行關聯的,之後再次推送就不須要再加了,origin是遠程主機的名字,能夠經過如下代碼來查看
1
|
git remote
|
或者是
1
|
git remote -v
|
這個主機名字是能夠人爲指定的。
首次推送以後,下次再向遠程倉庫master分支推送項目時,只須要
1
|
git push origin master
|
7.上面提到能夠人爲指定遠程主機的名字,在將遠程倉庫克隆到本地的時候,能夠實現
1
|
git clone -o 新主機名 https:
//github.com/tisikcci/first-static-web-page.git/
|
若是使用默認的主機名而且克隆到本地指定的位置,能夠利用
1
|
git clone https:
//github.com/tisikcci/first-static-web-page.git/ 本地地址
|
最好是直接利用SSH協議進行clone,以下
1
2
|
git clone 倉庫的SSH地址 本地創建的空文件夾地址
git clone git@github.com:tisikcci/test.git e:/github_projects/zz
|
就將遠程倉庫的test克隆到了本地的zz文件夾中。