Git 分佈式版本控制系統
目錄
一、簡介
Git 是分佈式版本控制系統,與時下較爲流行的svn版本控制系統最爲顯著的區別如下:
Git版本控制系統:
svn版本控制系統:
Git中的每臺主機均可以作爲一臺獨立的服務器來保存一個項目的所有文件,即使遠程服務器宕機了,本地的任何一臺主機均可以作爲服務器使用
二、Git環境配置
下載Git的安裝包,打開後一頓下一步就好了
- 安裝好的標誌:
- 在任何人位置單擊鼠標右鍵可以看到有Git Bash Here和Git GUI Here證明已經安裝成功
三、Git基本命令
命令 | 含義 |
---|---|
mkdir | XX (創建一個空目錄 XX指目錄名) |
pwd | 顯示當前目錄的路徑 |
git init | 把當前的目錄變成可以管理的git倉庫,生成隱藏.git文件。 |
git add XX | 把xx文件添加到暫存區去。 |
git commit –m “XX” | 提交文件 –m 後面的是註釋。 |
git status | 查看倉庫狀態 |
git diff XX | 查看XX文件修改了那些內容 |
git log | 查看歷史記錄 |
git reset –hard HEAD^ 或者 git reset –hard HEAD~ | 回退到上一個版本 (如果想回退到100個版本,使用git reset –hard HEAD~100 ) |
cat XX | 查看XX文件內容 |
git reflog | 查看歷史記錄的版本號id |
git checkout – XX | 把XX文件在工作區的修改全部撤銷。 |
git rm XX | 刪除XX文件 |
git remote add origin https://xxx.git | 關聯一個遠程庫 |
git push –u origin master (第一次要用-u 以後不需要) | 把當前master分支推送到遠程庫 |
git clone https://xxx.git | 從遠程庫中克隆 |
git checkout –b dev | 創建dev分支 並切換到dev分支上 |
git branch | 查看當前所有的分支 |
git checkout master | 切換回master分支 |
git merge dev | 在當前的分支上合併dev分支 |
git branch –d dev | 刪除dev分支 |
git branch name | 創建分支 |
git stash | 把當前的工作隱藏起來 等以後恢復現場後繼續工作 |
git stash list | 查看所有被隱藏的文件列表 |
git stash apply | 恢復被隱藏的文件,但是內容不刪除 |
git stash drop | 刪除文件 |
git stash pop | 恢復文件的同時 也刪除文件 |
git remote | 查看遠程庫的信息 |
git remote –v | 查看遠程庫的詳細信息 |
git push origin master | Git會把master分支推送到遠程庫對應的遠程分支上 |
四、命令詳解
4.1 配置賬號
git config --global user.name "yourname"
git config --global user.email "email"
這裏的--global
參數含義爲全局的,在這臺電腦上的所有 Git 倉庫均使用該配置。(當然也可以單獨設置)
4.2 創建本地倉庫
倉庫(關鍵字repository
)用於跟蹤文件的修改狀態
在 Git Bash 中操作 Git :
mkdir 創建一個文件夾(該文件夾模擬爲項目目錄)
cd 進入目標文件夾
pwd 顯示當前目錄
cat test.txt 查看文件內容
命令:
git init
直接爲該文件夾(工程)創建 Git 倉庫,此時文件夾中便多了一個名爲.git
的文件夾(Linux中以.
開頭的文件爲隱藏文件)
4.3 創建文件test.txt
在目標文件夾中新建記事本文件test.txt,使用命令:
git add test.txt
將該文件添加到暫存區
,使用命令:
git commit -m "修改了text.txt文件"
將暫存區中的修改提交到本地倉庫(.git文件夾
)管理,其中-m
參數的作用是添加註釋,其後面的字符串爲註釋。使用命令:
git status
查看當前狀態。該命令將顯示出兩種顏色來區分當前文件狀態:
Git 中文件有三類存放位置:
暫存區、本地倉庫、遠程(GitHub或GitLab)倉庫
未添加到Git | 暫存區 | 本地倉庫 | 遠程(GitHub或GitLab)倉庫 | |
---|---|---|---|---|
狀態 | 文件修改後 | git add 命令執行後 | git commit 命令執行後 | push 命令執行後 |
status命令顯示顏色 | 紅色 | 綠色 | N/A | N/A |
4.4 查看文件修改內容
如果文件被修改過未 add 到暫存區,此時的改變可以被以下命令捕捉到:
git diff test.txt
顯示如下:
*紅色的-部分爲缺少的,綠色的+部分爲新增的內容
4.5 查看歷史記錄
git log
可選參數:-pretty = oneline 使查詢到的log每一行顯示一條
4.6 版本回退
git rteset --hard HEAD^
回退兩個版本:
git rteset --hard HEAD^^
回退100個版本:
git rteset --hard HEAD~100
回退到指定版本:
git rteset --hard 版本號
查看版本號:
git reflog
每次 commit
爲一個版本
五、工作區與暫存區
工作區:當前目錄
暫存區:版本庫(.git文件夾
)中的stage ,自動創建的 master 分支,指向 master 分支的首指針HEAD
5.1 丟棄未添加到暫存區的內容
git checkout test.txt
- 該命令有兩種情況:
- 1.當文件內容已經放到暫存區後,又發生了修改,執行此命令將丟棄修改
- 2.未放到暫存區的修改將會直接丟棄
5.2 刪除文件
rm test.txt
相當於放到了回收站
,想繼續刪除的話就執行
git commit
如果想還原文件就執行
git checkout -- test.txt
六、遠程倉庫與Git分支
6.1 遠程倉庫配置
- 遠程倉庫分爲兩種:
- 1.GitHub倉庫
- 2.GitLab倉庫
區別:GitHub倉庫爲開源的,GitLab倉庫是閉源的,企業常用
本地倉庫和遠程倉庫的連接使用SSH加密,使用需先配置SSH服務
1.創建SSH key,先看C盤用戶目錄下有無.ssh
目錄,如果沒有則:
ssh-keygen -t rsa -C "email"
2.登陸GitHub,Settings -> SSH keys -> Add SSH key -> 粘貼.ssh
目錄下的公鑰內容
6.2 本地倉庫和遠程倉庫建立連接
git remote add origin https://xxx.git
此處的origin爲遠程倉庫的別名,可隨意起。網址爲遠程倉庫的url
同步本地代碼到遠程倉庫:
git push -u origin master:master
-u
爲關聯的意思,第一次push時使用。冒號前是本地分支名,冒號後爲遠程分支名
6.3 創建分支
git checkout -b dev
創建一個名爲dev的分支,並切換到該分支。此命令相當於以下兩個命令:
git branch dev
git checkout dev
查看分支命令:
git branch
6.4 合併某分支到當前分支
git merge name
如果在合併的過程中產生了衝突,Git會標記衝突,手動將衝突代碼解決後再commit
6.5 刪除分支
git branch -d dev
*參數-d
爲刪除
6.6 分支管理策略
在合併分支時Git默認的分支管理策略是FastForward,該模式下的分支被刪除後將不會保留任何該分支的信息。使用以下命令禁用FastForward模式。
git merge -no-ff -m "註釋內容" dev
6.7 查看分支
查看遠程分支
git branch -r
查看所有分支:
git branch -a
6.8 將分支推到GitHub
git push origin dev
6.9 刪除GitHub上的分支
git push origin : dev
:
爲刪除之意
6.10 推送分支
git push origin master
6.11 建立分支連接
git branch --set-upstream dev origin/dev
6.12 抓取
git pull https://xxx.git
如果有衝突,需解決衝突後再執行 add、commit、push
七、工作現場
在實際應用時,會出現當前的分支上的任務還未完成,不能add到暫存區,此時卻出現了bug,需要到bug分支上解決問題
保存當前工作現場(棧):
git stash
恢復現場:
git stash list 查看保存的現場
git stash pop 恢復並刪除現場
相當於以下兩個命令:
git stash apply 恢復現場
git stash drop 刪除現場