記錄一下學(xué)習(xí)git過程中的感悟和知識點(diǎn)
一
無意間在網(wǎng)上看到的圖割笙,將git的工作原理表現(xiàn)的淋漓盡致特幔,特來分享下
解釋一下:
- workspace就是工作區(qū)竞阐,可以理解問本地的代碼工作區(qū)域喘沿,不與本地倉庫掛鉤,只要不提交侣肄,本地倉庫就不會變。
- index 就是暫存區(qū)醇份,因?yàn)閣orkspace的代碼在commit提交到本地倉庫前需要先add到暫存區(qū)(進(jìn)行檢查稼锅,看查diff等操作)
- Repository 是本地的倉庫,顧名思義就是存儲本地代碼和修改記錄的地方僚纷,跟遠(yuǎn)程倉庫其實(shí)是一樣的矩距,只不過是本地的而已,他是從遠(yuǎn)程clone下來的怖竭。
- Remote就是遠(yuǎn)程的倉庫锥债,里面存放代碼和修改記錄等信息,與本地倉不同的就是在網(wǎng)上放著侵状, 不怕電腦GG赞弥,可以讓其他clone到他們的本地。
操作:
- add,將本次工作修改的代碼提交到暫存區(qū)(index)等待查看等趣兄,
- commit 將本次的修改提交到本地倉庫绽左,后綴本次修改的備注(一定要先add了再commit)
- checkout 新建一個本地的分支來工作,一般是在新添功能的時候做的艇潭,新建一個分支不影響主分支拼窥,完成后再合并到主分支
- push 將本地倉庫的修改推到遠(yuǎn)程倉庫分支,使遠(yuǎn)程倉庫獲取最新的代碼蹋凝,(一般都是要推到遠(yuǎn)程的分支的鲁纠,一般遠(yuǎn)程的主分支是上線版本,不能輕易動的鳍寂,遠(yuǎn)程分支上用來測試升級版的)
- fetch改含,默認(rèn)情況下,取回所有分支的更新迄汛,如果只想取回特定分支的更新捍壤,可以指定分支名骤视。
- clone ,完整的將倉庫master分支上的代碼全部clone下來
- pull 本地獲取遠(yuǎn)程的更新鹃觉。
最常用的一些git命令
配置
git init # 初始化本地git倉庫(創(chuàng)建新倉庫)
git config --global user.name "xxx" 配置用戶名
git config --global user.email "xxx@xxx.com" 配置郵件
git config --global color.ui true 給git status等命令自動著色
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
正文
git clone git或者ssh://git@000.000.0.0/XX.git clone遠(yuǎn)程倉庫
git status 查看當(dāng)前版本狀態(tài)(是否修改)
git add XXX 添加XXX文件至?xí)捍鎱^(qū)
git add . 增加當(dāng)前子目錄下所有更改過的文件至?xí)捍鎱^(qū)
git commit -m 'xxx' 提交(后面加本次提交信息专酗,不寫會報(bào)奇怪的錯)
git commit --amend -m 'xxx' 合并上一次提交(用于反復(fù)修改)
git commit -am 'xxx' 將add和commit合為一步
git rm xxx 刪除暫存區(qū)中的文件
git rm -r * 遞歸刪除
git log 顯示提交日志
git log -1 顯示1行日志 -n為n行
- git log --stat 顯示提交日志及相關(guān)變動文件
git show XXXXX 顯示某個提交的詳細(xì)內(nèi)容
git tag 顯示已存在的tag
git tag -a v2.0 -m 'xxx' 增加v2.0的tag
git show v2.0 顯示v2.0的日志及詳細(xì)內(nèi)容
git log v2.0 顯示v2.0的日志
git diff 顯示所有未添加至?xí)捍鎱^(qū)的變更
git diff --cached 顯示所有已添加index但還未commit的變更
git diff HEAD^ 比較與上一個版本的差異
git diff origin/master..master 比較本地master分支上沒有的遠(yuǎn)程主分支區(qū)別
git remote add origin git+ssh:// 增加遠(yuǎn)程定義(用于push/pull/fetch)
git branch 顯示本地分支
git branch --contains xxxx 顯示包含提交xxxx的分支
git branch -a 顯示所有分支,本地和遠(yuǎn)程的
git branch -r 顯示所有原創(chuàng)分支
git branch --merged 顯示所有已合并到當(dāng)前分支的分支
git branch --no-merged 顯示所有未合并到當(dāng)前分支的分支
git branch -m master master_copy 本地分支改名
git checkout -b master_copy 從當(dāng)前分支創(chuàng)建新分支master_copy并檢出
git checkout v2.0 檢出版本v2.0
git checkout -b XXXX origin/YYY 從遠(yuǎn)程分支XXXX創(chuàng)建新本地分支YYY并檢出
git merge origin/master 合并遠(yuǎn)程master分支至當(dāng)前分支
git cherry-pick XXX 合并提交XXX的修改
git push origin master 將當(dāng)前分支push到遠(yuǎn)程master分支
git push origin :XXX/YYY 刪除遠(yuǎn)程倉庫的XXX/YYY分支
git push --tags 把所有tag推送到遠(yuǎn)程倉庫
git fetch 獲取所有遠(yuǎn)程分支(不更新本地分支盗扇,另需merge)
git fetch --prune 獲取所有原創(chuàng)分支并清除服務(wù)器上已刪掉的分支
git pull origin master 獲取遠(yuǎn)程分支master并merge到當(dāng)前分支
git reset --hard HEAD 將當(dāng)前版本重置為HEAD(通常用于merge失敗回退)
git branch -d XXX/YYY 刪除分支XXX/YYY(本分支修改已合并到其他分支)
git branch -D XXX/YYY 強(qiáng)制刪除分支XXX/YYY
git ls-files 列出git index包含的文件
git show-branch 圖示當(dāng)前分支歷史
git show-branch --all 圖示所有分支歷史
git whatchanged 顯示提交歷史對應(yīng)的文件修改
git revert XXXXXXXX 撤銷提交
git stash 暫存當(dāng)前修改祷肯,將所有至為HEAD狀態(tài)
git stash list 查看所有暫存
git stash show -p stash@{0} 參考第一次暫存
git stash apply stash@{0} 應(yīng)用第一次暫存
以后git用的多了 肯定會增加命令的 ,以后再補(bǔ)充吧
幾篇學(xué)習(xí)git非常好的教程:
易佰網(wǎng)的git教程
伯樂在線的git系列教程共有九篇疗隶,講的非常詳細(xì)