1.定義:
Git不僅是一款開源的分布式版本控制系統
2.特點:
Git則是關注于檔案資料整體的變化,直接會将檔案送出時的資料儲存成快照,而非僅記錄差異内容,并且使用SHA-1加密算法保證資料的完整性。Git為了提高效率,對于沒有被修改的檔案,則不會重複存儲,而是建立一個連結指向之前存儲過的檔案。

3.Git的三種重要模式,分别是已送出、已修改和已暫存:
已送出(committed):表示資料檔案已經順利送出到Git資料庫中。
已修改(modified):表示資料檔案已經被修改,但未被儲存到Git資料庫中。
已暫存(staged):表示資料檔案已經被修改,并會在下次送出時送出到Git資料庫中。
4.安裝:
yum install -y git
配置個人的使用者名和郵箱
git config --global user.name "wensong"
git config --global user.email "[email protected]"
配置預設編輯器為vim
git config --global core.editor vim
5.指令
1.送出資料:
a.初始化, git init
b.将建立的檔案添加到暫存區 git add file
c.将添加到暫存區的檔案送出到本地倉庫 git commit -m ‘備注’
d.檢視本次修改和上次送出的檔案内容的差異 git diff readme.txt
f.添加忽略檔案.gitignore 放到根目錄就行
e.強制将忽略的檔案添加到暫存區 git add -f git.c
7.對目前某個檔案的修改不想送出到暫存區,可以使用 git checkout readme.txt
2.移除資料
a.将暫存區的檔案删除掉,但是本地工作目錄還保留着該檔案git rm —cached file.txt
b.将暫存區/本地倉庫的檔案删除掉。但是本地工作目錄不保留該檔案。git rm -f file.txt
3.移動資料
a.修改版本庫中某個檔案的名字 git mv readme.txt introduction.txt
b.a的步驟也可以這樣 mv readme.txt introduction.txt , git rm read.txt
- 檢視曆史記錄
-
檢視曆史記錄。git log
一行顯示更舒服:git log --pretty=oneline
-
5.還原資料
a. 還原到某個版本
還原到上一個版本 git reset —hard head^
還原到上上一個版本 git reset —hard head^^
還原到某個版本号的版本: git reset --hard 58104b3505211c7d3ed368072132564f8c85b439
b. 檢視未來的某個版本:git reflog
回到未來的某個版本. git reset --hard 9ecfd50
6.标簽管理
a.建立标簽 git tag v1, 可以使用-m 來添加備注
b.檢視所有标簽 git tag
c.檢視某個标簽的修改 git show v1
d.删除某個标簽 git tag -d v1
7.分支管理
1.建立分支, 分支之間是平行的空間
a. 檢視目前分支 git branch
b. 建立分支 git branch bOne, 然後切換到該分支 git checkout bOne
c. 建立分支并且切換到該分支。git checkout -b bOne
d.删除分支,此時不能在該分支内 git branch -d bOne
2.合并分支
a. 将本地的bOne合并到master,首先我必須切換到master,git checkout master, 然後使用 git merge bOne, 确認合并成功之後,删除bOne分支 git branch -d bOne
3.内容沖突,解決沖突
沖突的産生原因:
兩個已經送出的分支的相同檔案相同位置的的不同操作進行了合并.
避免沖突的辦法: 每次送出,先合并别的分支
沖突出現的情況如圖:
a.沖突的檔案内容中 =======上面的是目前分支的代碼,=======下面内容是其他分支的代碼,針對性的處理一下,然後重新送出到本地即可解決沖突(去掉<<<<<, >>>>>, ========, 留下你想要留下的代碼,然後git add ,git commit, 确認合并之後,删除掉沒用的分支git branch -d bTwo
)
b.檢視解決沖突後的master分支情況
git log --graph --pretty=oneline. 或者git log --graph --pretty=oneline --abbrev-commit
6.部署Git伺服器
1. 建立遠端倉庫, 這個就是最好把遠端倉庫初始化成bare倉庫的原因
a.建立空目錄,一般以.git結尾 mkdir linuxprobe.git
b.修改所屬者和所屬組 chown -Rf git:git linuxprobe.git, 如果沒有git使用者就使用useradd git 建立
c. 切換到linuxprobe.git目錄, git —bare init 。這個時候遠端倉庫已經建立好了。
2. 克隆遠端倉庫 git clone, 目前使用https和ssh協定來克隆。這裡測試我們使用ssh協定。
a.在另一台伺服器上,先生成公鑰和私鑰(ssh-keygen
),将公鑰上傳到伺服器上(ssh-copy-id 192.168.10.10
),
b.在另一台伺服器上安裝git, 通過git clone [email protected]:/root/testgit/linuxprobe.git. 将倉庫拉下來
c 設定本地的git config資訊
git config --global user.name "Liu Chuan"
git config --global user.email "[email protected]"
git config --global core.editor vim
d.送出一個資訊并推向伺服器
git add readme.txt
git commit -m ‘readme’
git push origin master. 推向到伺服器上 搞定
7.Github托管服務
1.可以在github中https://github.com/yuwensong 部署你的git倉庫,使用https或者ssh協定進行通信都可以
2. 檢視目前的所有遠端倉庫 git remote
3. 建立遠端倉庫
git remote add linuxprobe [email protected]:K130/linuxprobe.git
4. push到遠端倉庫
git push -u linuxprobe master. 推送目前master分支到代碼到遠端倉庫linuxprobe 的master分支中
1:分布式版本控制系統對比傳統版本控制系統有那些優勢?
答案:去中心化設計讓資料更加安全,管理檔案資料更加的有效率。
2:将Git工作目錄中的檔案送出到暫存區的指令是?
答案:git add
3:将Git暫存區的檔案上傳到版本倉庫的指令是?
答案:git commit
4:Git是一種非常智能的程式,它能夠為我們自動解決任何分支的内容沖突情況?
答案:錯誤,很多時候内容沖突後需要由人來解決合并沖突。
5:為什麼我們要将ssh公鑰上傳到Github資料中?
答案:為了讓Github能夠驗證使用者身份,進而才能順利的管理檔案資料。