git最小化配置:git
配置user.name 和 user.emailvim
git config --global user.name 'your_name'緩存
git config --global user.email 'your_email' // email須要是有效的Emailapp
config的做用域工具
缺省等同於localfetch
git config --local 只對某個倉庫有效3d
git config --global 對當前用戶全部倉庫有效指針
git config --system 對系統全部登錄用戶有效日誌
顯示config配置,加--list對象
git config --list --local
git config --list --global
git config --list --system
建Git倉庫
2種場景:
把已有的項目代碼歸入Git管理
#cd 項目代碼所在的文件夾
#git init
新建項目直接用git 管理
#cd 某個文件夾
#git init your_project 會在當前路徑下建立和項目同名的文件夾
#cd your_project
往倉庫裏添加文件:
版本歷史
暫存區
工做目錄
查看git工做狀態
#git status
將文件加入到暫存區:
#git add 文件或文件夾
將暫存區文件正式提交
#git commit -m "內容"
查看版本歷史的日誌
#git log
將已經管理可是剛修改的文件添加到暫存區
#git add -u
文件重命名:
方案一:
#mv readme readme.md
#git add readme.md
#git rm readme 原文件刪除
#git commit -m '內容'
注:操做還原,清理暫存區全部變動
#git reset --hard
方案二:
#git mv readme readme.md
#git commit -m '內容'
查看git版本歷史:
#git log --online 簡潔方式查看歷史
#git log --n4 查看最近4次歷史
#git log --all 查看全部分支的版本歷史
#git log --all --graph 父子關係展現版本歷史
注:git branch -v 查看本地分支
查看版本歷史圖形界面工具:
gitk
git目錄:
查看git 配置文件
#cat .git/config
.git/refs/ 下存在heads和tags文件,heads下是分支文件的指針文件;tags下文件是哈希值文件;.git/objects/下文件是上傳的文件
#cd e8
#git cat-file -t e8xxxx // 查看文案類型
#git cat-file -p e8xxx //查看文件內容
#git cat-file -p b72xxx
commit與tree與blob關係:(git對象的彼此關係)
查看git分支/切換分支:
git branch -av //查看分支
git checkout master //切換分支
git checkout -b 子分支 父分支 //建立基於父分支的子分支
提交分支到遠程:
#git checkout --orphan cluster
#git checkout cluster
#git rm -rf .
#vim README.md
#git add README.md
#git commit -m "ADD readme.md"
#git push -u origin cluster
分離頭指針:
git checkout commit編號 //進入分離頭指針
文件編輯後,分離頭要建立/加入某一分支
git branch '分支名' xxxxxx //xxxx是分離頭指針編號
head和branch關係:
head不只能夠指向分支,還能夠指向某個文件(分離頭指針)
刪除不須要的分支:
git branch -D 分支名
修改commit信息:
git commit --amend
修改老舊commit信息:
git rebase -i commit的父ID ==》進入說明文件 :wq! => 進入交互界面修改 ,保存 wq!
連續的多個commit合併成一個:
commit的父ID查看:
git log --graph 選定commitID的下一個即爲父commit
#git rebase -i commit的父ID
==》修改文件
假設要合併4個文件,則保留一個pick,3個修改爲s
再保存(wq!),進入交互界面
修改文件,保存 wq!
間隔的多個commit合併成一個:
#git rebase -i 最下面的commitID
=》 在文件的最上面增長pick 最下面的commitID ,要合併的commit放在一塊兒,保留一個pick,其他修改爲s
其他步驟同上
暫存區和head文件(最近commit的文件)差別:
#git diff --cached
暫存區和工做區差別:
#git diff
#git diff -- readme.md //只比較readme.md文件差異
暫存區全部文件不保留(暫存區與工做區一致):
#git reset HEAD
工做區文件恢復與暫存區一致:
#git checkout -- <file> //file 是文件名
取消暫存區部分文件的更改:
#git reset HEAD -- <file ...>
消除最近幾隻commit:
#git reset --hard commitID // 恢復到指定commitID位置
查看提交文件的差別://比較2個分支相同文件的差別
#git diff 分支1 分支2 -- 文件名
#git diff commitID1 commitID2 -- 文件名
刪除文件:
#git rm file-name
ex:刪除遠程倉庫的目錄/文件
加塞任務
#git stash //暫存區放置緩存
#git stash list
#git stash apply //緩存內容放置工做區,緩存信息不丟失
#git stash pop // 緩存內容放置工做區,緩存信息丟失
git 倉庫備份至本地
本地倉庫同步至遠程:
#git remote add 別名 遠程項目地址
#git remote -v //查看遠端別名鏈接地址
#git push 別名 --all //push 全部的分支
合併分支:
# git fetch origin 最新版本的線上分支:新建一個本地的分支//從遠程的origin倉庫的最新版本的線上分支下載到本地,並新建一個本地的新分支
# git diff 新建的本地的分支
# git merge 新建的本地的分支//將新建一個本地的新分支和本地分支合併
# git branch -D 新建的本地的分支
# 解決衝突
# git add .
# git commit -m '合併+解決衝突'
# git pull origin 最新版本的線上分支
# git push origin 我本地的分支:最新版本的線上分支