Git 是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。git
Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。服務器
Git 與經常使用的版本控制工具 SVN,CVS,Subversion 等不一樣,它採用了分佈式版本庫的方式,沒必要服務器端軟件支持。分佈式
Git 不只僅是個版本控制系統,它也是個內容管理系統 (CMS),工做管理系統等。ide
若是你是一個具備使用 SVN 背景的人,你須要作必定的思想轉換,來適應 Git 提供的一些概念和特徵。工具
官方地址:https://git-scm.com/fetch
下載地址:https://git-scm.com/downloads操作系統
安裝版本:Git-2.22.0-64-bit.exe版本控制
git config --list複製代碼
編輯本地倉庫級別的配置文件: 僅在當前本地倉庫範圍有效,該文件默認在工做空間/.git/config日誌
git config -e複製代碼
編輯系統用戶級別的配置文件: 登陸操做系統用戶範圍有效,該文件默認在~/.gitconfigblog
git config -e --global複製代碼
本地倉庫級別 Git 簽名:
git config user.name [用戶名稱] git config user.email [用戶郵箱]複製代碼
系統用戶級別 Git 簽名:
git config --global user.name [用戶名稱] git config --global user.email [用戶郵箱]複製代碼
# 在當前目錄建立一個本地倉庫 git init # 在當前目錄建立指定名稱目錄,並將其初始化本地倉庫 git init [倉庫名稱]複製代碼
# 添加指定文件到暫存區 git add [文件1] [文件2] ... # 添加指定目錄到暫存區 git add [目錄名] # 添加當前目錄的全部文件到暫存區 git add .複製代碼
# 普通刪除工做區文件,而且將此次刪除放入暫存區 git rm [文件1] [文件2] ... # 強制刪除工做區文件,而且將此次刪除放入暫存區 git rm --force [文件1] [文件2] ... # 若是想把文件從暫存區域移除,但仍然但願保留在當前工做目錄中,使用 --cached 選項便可 git rm --cached [文件1] [文件2] ...複製代碼
# 更名文件,而且將這個更名放入暫存區 git mv [舊文件名] [新文件名]複製代碼
# 文件,文件夾在工做區,暫存區的狀態 git status複製代碼
# 提交暫存區到本地倉庫 git commit -m [備註信息] # 提交暫存區的指定文件到本地倉庫 git commit -m [備註信息] [文件1] [文件2] ... # 提交工做區自上次commit以後的變化到本地倉庫 git commit -a # 提交時顯示全部diff信息 git commit -v # 使用一次新的commit,替代上一次提交 # 若是文件沒有任何新變化,則用來改寫上一次commit的備註信息 git commit --amend -m [備註信息] # 重作上一次commit,幷包括指定文件的新變化 git commit --amend [文件1] [文件2] ...複製代碼
# 下載遠程倉庫的一個項目(包括歷史記錄版本)到本地的當前目錄下 git clone [遠程倉庫項目地址]複製代碼
# 下載遠程倉庫的全部變更 git fetch [遠程倉庫項目地址]複製代碼
# 顯示當前分支的版本歷史 git log # 顯示當前分支的版本歷史,美化輸出格式(顯示所有hash值) git log --pretty=oneline # 顯示當前分支的版本歷史,美化輸出格式(顯示部分hash值) git log --oneline # 顯示當前分支的版本歷史,以及每次commit發生變動的文件 git log --stat # 根據關鍵詞搜索提交歷史 git log -S [關鍵詞] # 顯示指定次數的提交歷史 git log -10複製代碼
# 查看當前全部遠程地址別名 git remote -v # 增長一個新的遠程地址別名 git remote add [遠程地址別名] [遠程地址] # 顯示指定的遠程地址的信息 git remote show [遠程地址別名]複製代碼
# 上傳本地指定分支到遠程倉庫 git push [遠程地址別名] [本地分支名] # 強行推送當前分支到遠程倉庫,即便有衝突 git push --force [遠程地址別名] # 推送全部分支到遠程倉庫 git push --all [遠程地址別名] # 刪除遠程分支 git push [遠程地址別名] --delete [遠程分支名]複製代碼
# 恢復暫存區的指定文件到工做區 git checkout [文件1] [文件2] ... # 恢復某個commit的指定文件到暫存區和工做區 git checkout [commithash] [文件1] [文件2] ... # 恢復暫存區的全部文件到工做區 git checkout .複製代碼
# 取回遠程倉庫的變化,並與本地分支合併 git pull [遠程地址別名] [本地分支名]複製代碼
# 將工做區中的文件和暫存區進行比較 git diff [文件名] # 將工做區中的文件和本地庫歷史記錄比較 git diff [commithash] [文件名] # 查看未提交的暫存 git diff --cached複製代碼
# 用commithash的內容重置HEAD內容 git reset --soft [commithash] # 用commithash的內容重置HEAD內容,重置暫存區 git reset --mixed [commithash] # 用commithash的內容重置HEAD內容,重置暫存區,重置工做目錄 git reset --hard [commithash]複製代碼
# 列出全部tag git tag # 查看tag信息 git show [tag] # 新建一個tag在當前commit git tag [tag] # 新建一個tag在指定commit git tag [tag] [commithash] # 刪除本地tag git tag -d [tag] # 提交指定tag git push [遠程地址別名] [tag] # 刪除遠程tag git push [遠程地址別名] :refs/tags/[tagName] # 提交全部tag git push [遠程地址別名] --tags複製代碼第四章 Git 分支管理
幾乎全部的版本控制系統都以某種形式支持分支。
使用分支意味着你能夠把你的工做從開發主線上分離開來,以避免影響開發主線。
在不少版本控制系統中,這是一個略微低效的過程,經常須要徹底建立一個源代碼目錄的副本。
對於大項目來講,這樣的過程會耗費不少時間。
有人把 Git 的分支模型稱爲它的 「必殺技特性」,也正由於這一特性,使得 Git 從衆多版本控制系統中脫穎而出。
爲什麼 Git 的分支模型如此出衆呢?
Git 處理分支的方式可謂是難以置信的輕量,建立新分支這一操做幾乎能在瞬間完成,而且在不一樣分支之間的切換操做也是同樣便捷。
與許多其它版本控制系統不一樣,Git 鼓勵在工做流程中頻繁地使用分支與合併,哪怕一天以內進行許屢次。
理解和精通這一特性,你便會意識到 Git 是如此的強大而又獨特,而且今後真正改變你的開發方式。
# 建立指定名稱的本地分支 git branch [分支名]複製代碼
# 列出全部本地分支 git branch # 列出全部本地分支以及每一個分支最新的版本 git branch -v # 列出全部遠程分支 git branch -r # 列出全部本地分支和遠程分支 git branch -a複製代碼
# 切換到指定的分支 git checkout [分支名] # 切換到上一個分支 git checkout - # 新建一個本地分支,指向某個tag git checkout -b [新建分支名稱] [tag]複製代碼
# 第一步:切換到被合併分支上 git checkout [被合併分支名] # 第二步:執行 merge 命令 git merge [要合併分支名]複製代碼
# 刪除本地分支 git branch -d [本地分支名]複製代碼
衝突的表現:
衝突的解決: