安裝之類的就略過了直入正題
工作區(qū):本地代碼未add commit之前都在工作區(qū)
暫存區(qū):修改后進行暫存的代碼.git,如add 之后進行了存儲
本地代碼庫:commit到本地代碼庫
遠程倉庫:push提交遠程
忽略文件:.girignore配置忽略
作為注釋
/開頭防遞歸/結尾指定目錄
表示匹配零個或多個任意字符
?表示只匹配一個任意字符
!表示取反
[abc]表示匹配a,b,c
[0-9]表示匹配0-9
/a*z/表示匹配/a/z或/a/b/z或/a/b/c/d/z
配置提交代碼時用戶信息:
git config --global user.name "name"
git config --global user.email "xxx@email.com"
global為全局配置,如果想在某個獨立項目中使用其他名字或郵箱去掉global即可
編輯git信息
git config -e 編輯當前倉庫
git config -e --global 編輯所有倉庫
查看配置信息:
git config --list
創(chuàng)建命令:
git init:初始化倉庫在當前目錄下生成.git目錄
git init newrepo在newrepo目錄下生成.git
git clone:遠程倉庫拷貝項目
git clone <repo> <directory>:拷貝到指定目錄
提交與修改:
git add --<file>:添加文件到暫存區(qū)
git add .:添加所有文件到暫存區(qū)
git status:查看當前倉庫狀態(tài) -s以緊湊格式輸出
git diff:比較暫存區(qū)和工作區(qū)差異
git diff --cached/--staged查看已暫存要提交內容
git commit -m :注釋說明"提交暫存區(qū)到本地倉庫
git commit -a -m:合并add執(zhí)行commit
git commit --amend:漏提文件或修改提交信息嘗試重新提交
git rm:刪除工作區(qū)文件
git rm --cached:移除文件追蹤單不刪除,可用于不小心提交了不想追蹤文件且未添加.gitignore文件
git rm -f:強制刪除暫存區(qū)文件
git mv from to:移動或重命名工作區(qū)文件
提交日志:
git log:查看歷史提交記錄
git log -p:查看每次提交差異-數字可以查看最近指定次數提交差異
git log --stat:每次提交簡要信息
git log --oneline :簡潔版歷史提交記錄
git log --graph:查看歷史分支,合并
git log --reverse:逆向查看日志
git log --decorate:查看標簽
git log --author="name" --oneline:查看指定用戶提交日志
--since --before --until --after:查看指定日期或范圍例:git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
git blame <file>:以列表形勢查看指定文件修改記錄
遠程操作:
git remote:查看遠程倉庫操作-v顯示倉庫對應的URL
git ls-remote (remote):顯式地獲得遠程引用完整列表
git remote show name:查看名為name的遠程倉庫信息
git remote add name url:添加一個新的遠程倉庫并用name替代url,后續(xù)可以直接用name操作
git remote rename from to:修改遠程倉庫簡寫名,同時修改遠程分支名
git fetch name:結合上邊命令使用從遠程拉取代碼
git fetch --all:抓取所有遠程倉庫
git fetch:抓去遠程倉庫代碼需要手動合并
git pull:下載遠程代碼并合并
git push:上傳遠程代碼并合并
git push origin a:b:將本地a分支推送到遠程倉庫b分支
git push origin --delete branchname:刪除遠程分支
分支管理:
git branch:查看本地分支
git branch (branchname):創(chuàng)建分支
git branch -d (branchname):刪除指定分支
git branch -v:查看每個分支最后提交--merged與--no-merged過濾合并未合并
git branch -vv:列出本地分及其詳細信息
信息git checkout (branchname):切換分支
git checkout -b (branchname):創(chuàng)建并切換到新創(chuàng)建分支
git rebase master:將當前分支所有修改移到變基移到master,然后再切換到master分支快速合并當前分支完成代碼合并,減少提交歷史
git rebase --onto master server client:取出 client分支,找出處于client分支和server分支的共同祖先之后的修改,然后把它們在 master分支上重演一遍,即排除server分之修改只將獨屬于client的修改重演到master分支
git rebase master server:將上邊提到的server分支重演到master分支,切換到master再進行快速合并git merge server
盡量少用變基操作因為風險可能有點大,如果使用只在本地代碼進行變基,如提交到遠程確保不會再丟棄上傳的變基
標簽:
git tag -a <tagname>:添加標簽用于記錄關鍵節(jié)點
git tag -a <tagname> (提交id):在指定提交下追加標簽
git tag -d <tagname>:刪除標簽
git tag:查看標簽
git tag -a <tagname> -m "message":指定標簽信息
git tag -a v1.2 9fceb02:歷史提交打tag
git tag -s <tagname> -m "message":PGP簽名標簽
git log --oneline --decorate --graph --all:輸出提交歷史、各個分支的指向以及項目的分支分叉情況
git push origin tagname:顯示提交標簽后才能在遠程倉庫共享
git push origin --tags:推送所有標簽到遠程倉庫
git checkout -b [branchname] [tagname]:在特定的標簽上創(chuàng)建一個新分支
git show <tagname> :查看修改內容
撤銷操作:
git reset:回退版本
git reset HEAD file:從暫存區(qū)恢復文件到已修改未暫存狀態(tài)
git reset eb43bf file.txt:回退指定版本
git checkout --file:撤銷文件修改到上次提交狀態(tài)
git reset HEAD:覆蓋暫存區(qū),工作區(qū)不受影響HEAD~1/2/3指定版本
git reset --hard commitID:永指定版本覆蓋工作區(qū)
git reset --hard HEAD:回到之前的狀態(tài)或其他你想要恢復的狀態(tài)
git rm --cached <file> :刪除暫存區(qū)文件,工作區(qū)不變
git checkout .(全部替換)/git checkout -- <file>(替換文件),會清除工作區(qū)中未添加到暫存區(qū)的改動。
git checkout HEAD .(全部替換)/git checkout HEAD <file>(替換文件),會清除工作區(qū)未提交改動和暫存區(qū)未提交改動。
代碼合并
git merge (branchname): 合并指定分支到當前分支
git merge --abort:有沖突時簡單地退出合并并嘗試恢復到合并前狀態(tài)