開發工具篇:Git和Github

開發工具篇:Git和Github

Git是什麼?linux

Git是目前世界上最早進的分佈式版本控制系統。工做原理 / 流程:git

  • Workspace:工做區
  • Index / Stage:暫存區
  • Repository:倉庫區(或本地倉庫)
  • Remote:遠程倉庫 (通常公司內網選擇GitLab,外網能夠選擇GitHub或者碼雲)

若是沒有Git!github

  1. 不能多人並行修改服務器的同一個文件。
  2. 不能對文件的每一次提交的歷史記錄進行查閱,回退。
  3. 不能對團隊中的人進行權限控制
  4. 不能使用分支去進行多線做戰

SVN與Git的最主要的區別?chrome

SVN是集中式版本控制系統,版本庫是集中放在中央服務器的,而幹活的時候,用的都是本身的電腦,因此首先要從中央服務器那裏獲得最新的版本,而後幹活,幹完後,須要把本身作完的活推送到中央服務器。集中式版本控制系統是必須聯網才能工做,若是在局域網還能夠,帶寬夠大,速度夠快,若是在互聯網下,若是網速慢的話,就納悶了。最主要的問題是,若是服務器掛了,那麼子節點上的內容只是當前狀態,這種單點故障,想恢復之前的內容就很難了。shell

Git是分佈式版本控制系統,那麼它就沒有中央服務器的,每一個人的電腦就是一個完整的版本庫,這樣,工做的時候就不須要聯網了,由於版本都是在本身的電腦上。既然每一個人的電腦都有一個完整的版本庫,那多我的如何協做呢?好比說本身在電腦上改了文件A,其餘人也在電腦上改了文件A,這時,大家兩之間只需把各自的修改推送給對方,就能夠互相看到對方的修改了。並且每一個人的機器就是一整套版本庫,能夠直接去恢復服務器的故障。centos

1 下載安裝

https://git-scm.com/服務器

1.1 window傻瓜安裝

安裝完成後能夠在開始菜單或者鼠標右鍵中看見Git logo,點擊Git Bash會出現命令窗口,則說明成功。ssh

1.2 linux(Centos)傻瓜安裝

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum -y install git-core

2 基本使用篇

2.1 自報家門(全局標識)

由於Git是分佈式版本控制系統,因此須要填寫用戶名和郵箱做爲一個標識。curl

注意:git config --global 參數,有了這個參數,表示你這臺機器上全部的Git倉庫都會使用這個配置。固然你也能夠對某個倉庫指定的不一樣的用戶名和郵箱。(針對某個項目不帶--global參數)分佈式

git config --global user.name Heaton
git config --global user.email tzy70416450@163.com
#查詢當前配置信息
git config --list
#經過文件查看全局配置信息
cat ~/.gitconfig

2.2 初始化版本庫與局部標識

什麼是版本庫?版本庫又名倉庫,英文名repository,你能夠簡單的理解一個目錄,這個目錄裏面的全部文件均可以被Git管理起來,每一個文件的修改,刪除,Git都能跟蹤,以便任什麼時候刻均可以追蹤歷史,或者在未來某個時刻還能夠將文件」還原」。簡單的理解,就是讓咱們的項目交給Git大管家來幫咱們管理,須要讓Git知道是哪一個項目。

  1. 建立一個版本庫也很是簡單,選擇一個文件夾目錄,例如:D:\testgit。
  2. 經過命令 git init 把這個目錄變成git能夠管理的倉庫。
  3. 這時候你當前testgit目錄下會多了一個.git的目錄,這個目錄是Git來跟蹤管理版本的,沒事千萬不要手動亂改這個目錄裏面的文件,不然,會把git倉庫給破壞了。

而咱們的標識信息就在config文件下。

沒有局部標識就會使用全局標識,通常狀況下(推薦),使用全局標識就行了。

局部標識優先級大於全局標識。

cat .git/config
git config user.name Heaton_1
git config user.email tzy70416450@163.com_1

2.3 基礎操做

2.3.1 工做區->暫存區->本地庫基礎操做

  • 使用git restore撤銷工做區修改

  • 使用git add而後使用git commit將文件添加到本地庫

  • 使用git commit -a 將文件添加到本地庫

2.3.2 日誌分析

2.3.3 版本跳躍

  • 使用git reset --hard 版本號,跳躍到該版本

  • 使用git reset --hard HEAD^ ,跳躍到以前的版本 (^一個就是一個版本,^^兩個就是兩個版本)
  • 使用git reset --hard HEAD~1 ,跳躍到以前的版本 (數字就是要回退的版本數)
  • 以上兩個命令只能後退版本號

  • --soft --mixed -- hard 參數對比
    • --soft (軟回退)僅僅在本地庫移動HEAD指針
    • --mixed (混合回退)在本地庫移動HEAD指針,重置暫存區
    • --hard (硬回退)在本地庫移動HEAD指針,重置暫存區,重置工做區

2.3.4 刪除文件找回

2.3.5 比較文件改動

3 分支使用篇:多人協做

3.1 分支操做流程

在實際開發中,咱們經常會有不少開發分支,每一個小夥伴在本身的開發分支上作完了事情,就會將代碼提交到測試分支上面,由測試同窗去測試,修改問題後會將代碼合併到主分支上發佈。

固然有些公司還會有預發佈分支,修改bug分支,原理是同樣的,根據規範和喜愛來咯。

3.2 分支操做

  • 查看分支:git branch -v
  • 建立分支:git branch [分支名]
  • 切換分支:git checkout [分支名]
  • 合併分支:git merge [分支名]

3.2.1基礎分支操做

3.2.2沒有衝突的合併操做

3.2.3有衝突的合併操做

4 遠程倉庫操做

https://github.com/

github是其中一種遠程倉庫,註冊帳號,建立倉庫就可使用了。

還有碼雲,gitlab等等遠程倉庫產品。

4.1 建立

image-20200201190311591

4.2 保存遠程倉庫地址

  • git remote -v 查看遠程倉庫
  • git remote add [遠程倉庫別名] [遠程倉庫地址]

4.3 推送遠程倉庫

  • git push [遠程倉庫地址] [分支名]

4.4克隆

  • git clone [遠程倉庫地址]

4.5 ssh免密操做

  • 建立SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,若是有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,若是有的話,直接跳過此以下命令,若是沒有的話,打開命令行,
    輸入以下命令(三次回車):
    • ssh-keygen

  • 登陸github,用戶頭像下打開」 settings」中的SSH Keys頁面,而後點擊「Add SSH Key」,填上任意title,在Key文本框裏黏貼id_rsa.pub文件的內容。

4.6 邀請其餘開發者

4.7 拉取操做

  • git fetch [遠程庫地址] [分支名]
  • git merge [分支名]
  • git pull -->(git fetch 和 git merge 兩步操做)

4.7.1 用戶1修改文件推送到遠程庫

4.7.2 用戶2拉取遠程庫改動(2步)

4.7.3 用戶2拉取遠程庫改動(1步)

重複4.7.1操做

4.8 多人協做衝突解決

用戶1改變文件

用戶2改變文件

修改衝突的文件

4.9 遠程協做

若是未加入團隊,不是開發者,想提交一些代碼怎麼辦呢。github有遠程協做功能。

  • 使用另外一個帳戶,訪問項目地址,Fork,克隆一個項目下來

  • 修改文件內容,提交遠程倉庫

  • pull request

  • 主帳號登錄在pull request中就能夠看見該次請求了,審覈代碼,發現主庫被修改了。

5 idea中操做git

  • 添加帳號密碼->添加修改提交推送(全部的git操做均可以在idea中進行哦)

6 github插件

chrome --> Octotree

idea --> ignore

相關文章
相關標籤/搜索