Git 是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。git
Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。github
Git 與經常使用的版本控制工具 CVS, Subversion 等不一樣,它採用了分佈式版本庫的方式,沒必要服務器端軟件支持。數據庫
對於任何一個文件,在 Git 內都只有三種狀態:vim
已修改表示修改了某個文件,但尚未提交保存;緩存
已暫存表示把已修改的文件放在下次提交時要保存的清單中。安全
已提交表示該文件已經被安全地保存在本地數據庫中了;服務器
由此咱們看到 Git 管理項目時,文件流轉的三個工做區域:Git 的工做目錄,暫存區域,以及本地倉庫。app
地址:https://git-scm.com/分佈式
第一次安裝完成git後,咱們在全局環境下配置基本信息:我是誰工具
$ git config -l 查看配置信息 $ git config --globla -l 查看全局配置信息 配置全局信息:用戶名和郵箱 $ git config --global user.name 'xxx' $ git config --global user.email 'xxx@xx.xx'
建立一個倉庫文件夾,鼠標右鍵選擇git Bash Here
$ git init //=>會生成一個隱藏的文件夾".git" (這個文件夾千萬不要刪除,由於暫存區和歷史區還有一些其餘的信息都在這裏,刪了就不是一個完整的git倉庫了)
在本地編寫完成代碼後(在工做區),把一些文件提交到暫存區
$ git add xxx 把某一個文件或文件夾提交到暫存區 $ git add . 或 -A 把當前倉庫中全部最新修改的文件都提交到暫存區 $ git status 查看當前文件的狀態(紅色表明在工做區/綠色表明在暫存區/看不見東西證實全部修改的信息都已經提交到歷史區)
當前文件狀態
$ git commit -m'描述信息:本次提交內容的一個描述' 【不加空格寫描述信息】 查看歷史版本信息 $ git log 查看提交記錄 $ git reflog 包含回滾信息
注意:從工做區提交到暫存區,從暫存區提交到歷史區,是把內容賦值一份傳過去的,本區域中依然存在這些信息,只有這樣才能對比出哪些文件在某個區
提交記錄
四、歷史版本回滾
根據歷史版本號進行代碼回滾
$ git reset --hard d4970cc 【取版本號的前7位】
GitHub至關於中央服務器
註冊/登陸:https://github.com/
遠程倉庫地址
1、//創建本地倉庫和遠程倉庫的鏈接 查看本地倉庫和哪些遠程倉庫保持連接 $ git remote -v 讓本地倉庫和遠程倉庫新建一個連接[origin是隨便起的一個連接名,通常都叫origin] $ git remote add origin [GIT遠程倉庫地址] 2、//刪除連接 $ git remote rm origin
注意:想要將本地的代碼推送至遠程倉庫,本地的代碼必須在歷史區【只有歷史區的代碼才能推送至遠程倉庫】
// 每次提交以前最好先將遠程倉庫的代碼拉取到本地[別人有可能修改了代碼]合併代碼的做用 $ git pull origin master // 將本地代碼推送至GitHub(須要輸入GitHub用戶名和密碼) $ git push origin master // 將GitHub倉庫克隆到本地 $ git clone [遠程倉庫git地址] [別名:能夠不寫,默認倉庫名] $ git clone https://github.com/songzhixue1993/201908.git
/* * 真實項目開發流程 * 一、組長或負責人先建立中央倉庫[增長協做者] * 二、小組成員基於$ git clone 把遠程倉庫及默認的內容克隆到本地一份 * 解決了三件事情 * 初始化了一個本地倉庫[$ git init] * 和對應的遠程倉庫保持了關聯[$ git remote add] * 把遠程倉庫默認內容拉取到了本地[$ git pull] * 三、每一個組員寫完本身的程序後,基於"git add/git commit"把本身修改的內容存在到歷史區,而後經過"git pull/git push"把本地信息和遠程倉庫信息保持同步便可[可能涉及到衝突的處理] */
git diff # 對比工做區和本地倉庫 git diff --cached # 對比緩存區和本地倉庫 git log # 查看當前版本以前全部的提交記錄 git reflog # 查看全部的提交記錄 git log -n 2 # 顯示最近幾條數據 git log -p # 對比每提交的差別 git log --format="%an:%ae:%s" # 自定義輸出格式 git reset --hard 版本號 # 回滾到指定版本 git chekout --file # 將文件回滾到最近的一次提交 git status # 查看狀態 git reset HEAD file # 將指定的文件從緩存區拉取到工做區 # 工做區必須有變更 # 保存開發狀態 git stash # 快照 git stash pop # 恢復並刪除快照 git stash list # 查看全部快照 git stash apply stash{id} # 恢復指定快照 git stash drop # 刪除快照 git branch # 查看分支 git branch dev # 建立dev分支 git checkout dev # 切換到dev分支 git branch -d dev # 刪除分支 git checkout -b dev1 # 建立分支並切換分支 # 合併分支,在合併到的分支上執行 git merge dev # 在master主分支上執行,(將dev的代碼合併到master) # 衝突 # 不一樣的分支在對同一行代碼進行修改,在代碼合併時會發生衝突 """ 一、合併時間不能太長,通常2-3天合併一次 二、完成一個小功能合併一次 三、合併的時候全部人都要在 """ # 克隆分支 git checkout -b dev origin/dev [指定以origin/dev爲模板建立一個分支] # 刪除遠程倉庫的分支 git checkout --delete origin # tag git tag # 查看標籤 git tag -a name -m '提交信息' git tag -a name -m '提交信息' hash值 # 以哈希值爲模板建立一個標籤tag git tag -d name # 刪除本地tag git push origin :refs/tags/v0.5 # 刪除遠程倉木的tag(給遠程倉庫推送了一個空的tag) # 忽略文件 # 把不想上傳的文件寫在.gitignore文件中 vim .gitignore - db.py # rebase 變基 將提交記錄變成一條直線 # 切換git用戶 git config --global --unset user.name "xxx" git config --global --unset user.email "xxx"