寫在前面
- 本文檔是學(xué)習(xí) 廖雪峰Git教程 后所做的筆記,教程幫忙很大资昧,非常感謝居夹!
- 本筆記主要記錄了教程中所用的命令,概念內(nèi)容不包括在內(nèi)管行。
- 建議看完教程后再看Git官網(wǎng)的 Pro Git 一書厨埋。
- 最后附上本人的 GitHub ,感謝撥冗翻閱拙作,敬請斧正捐顷。
創(chuàng)建版本庫
git init #初始化所在目錄為Git倉庫
初始化的目錄可以不為空
添加文件到版本庫
git add <file> ... #添加文件到暫存區(qū)(stage)
-f <file> ... #強(qiáng)制添加到暫存區(qū)(可用于添加忽略文件)
git commit -m "提交說明" #從暫存區(qū)提交到版本庫
git add 命令可多次執(zhí)行荡陷,然后commit一次雨效。
時光機(jī)穿梭
- 查看狀態(tài)、差異
git status #查看倉庫當(dāng)前狀態(tài)
git diff [file] #比較工作區(qū)和暫存區(qū)的差異
git diff --cached [file] #比較暫存區(qū)和版本庫的差異
git diff HEAD -- [file] #比較工作區(qū)和版本庫的差異
- 版本切換
git log #查看提交歷史
git log -1 #查看最后一次提交信息(-2 則是最后兩次)
git log --pretty=oneline #單行格式顯示提交歷史
--graph #顯示分支合并圖
--abbrev-commit #簡寫的commit_id
git reflog #查看所有操作記錄废赞,包括刪除的commit記錄
git reset --hard HEAD^ #回退到上一版本
# HEAD 表當(dāng)前版本徽龟, HEAD^ 表上一版本,HEAD^^ 表上兩版本唉地,HEAD~99 表上99版本据悔。
git reset --hard commit_id #切換到指定版本
Git跟蹤管理的是修改,而非文件
- 撤銷修改
git checkout -- <file> #撤銷工作區(qū)的修改
git reset HEAD <file> #撤銷暫存區(qū)的修改
若已commit但沒提交到遠(yuǎn)程庫耘沼,可用版本回退進(jìn)行撤銷
-
刪除文件
- 方法一:工作區(qū)刪除文件屠尊,然后正常提交
rm <file> ... #工作區(qū)刪除 git add <file> ... #將修改提交至?xí)捍鎱^(qū) git commit -m "說明" #提交到版本庫
- 方法二:直接命令刪除工作區(qū)和暫存區(qū),然后提交版本庫
git rm <file> ... #刪除工作區(qū)和暫存區(qū)文件 git commit -m "說明" #提交到版本庫
刪除耕拷、增加文件也都屬于修改
遠(yuǎn)程倉庫
- 創(chuàng)建SSH Key
ssh-keygen -t rsa -C "youremail@example.com" #生成的Key在家目錄.ssh文件夾里面讼昆,pub后綴是公鑰,另一個是私鑰骚烧。
- 添加遠(yuǎn)程庫
git remote add origin git@server-name:path/repo-name.git #添加遠(yuǎn)程倉庫
git remote #查看遠(yuǎn)程庫信息
-v #顯示詳細(xì)信息
git push -u origin <branch> #推送并關(guān)聯(lián)指定分支到遠(yuǎn)程庫
除第一次關(guān)聯(lián)浸赫,之后push不用加-u選項(xiàng)
- 從遠(yuǎn)程庫克隆
git clone git@server-name:path/repo-name.git #將遠(yuǎn)程倉庫克隆到當(dāng)前目錄
git pull #拉取遠(yuǎn)程倉庫內(nèi)容同時自動merge
git fecth #從遠(yuǎn)程獲取最新版本到本地,不會自動merge
-git fetch
和git pull
的區(qū)別:在實(shí)際使用中赃绊,git fetch
更安全一些因?yàn)樵?code>merge前既峡,我們可以查看更新情況(git log
,git diff
),然后再決定是否合并
分支管理
git branch <branch> #創(chuàng)建分支
git checkout <branch> #切換到指定分支
git checkout -b <branch> #創(chuàng)建并切換到該分支
git branch #查看現(xiàn)有分支
git branch -d <branch> #刪除指定分支
git branch --set-upstream <branch_local> <branch_remote> #指定本地分支與遠(yuǎn)程分支的鏈接
git merge <branch> #合并指定分支到當(dāng)前分支
--no-ff <branch> #禁用快速合并
git merge --no-ff -m "提交說明" <branch> #普通方式合并碧查,并附提交說明
git stash #保存當(dāng)前工作環(huán)境(包括工作區(qū)和暫存區(qū))
git stash list #查看保存的工作列表
git stash apply [stash@{X}] #恢復(fù)工作狀態(tài)运敢,但不刪除stash內(nèi)容
git stash pop [stash@{X}] #恢復(fù)工作狀態(tài),并刪除stash內(nèi)容
git stash drop [stash@{X}] #刪除stash內(nèi)容
git branch -D <branch> #強(qiáng)制刪除分支(常用于未合并的分支)
HEAD不是直接指向提交點(diǎn)忠售,而是指向分支传惠,分支再指向提交點(diǎn)
- 多人協(xié)作
##error: failed to push some refs to ...
1. git pull 遠(yuǎn)程庫
2. 解決沖突(若有),再push
- 分支管理策略圖
標(biāo)簽管理
git tag #查看現(xiàn)有標(biāo)簽
git tag <tag_name> #給當(dāng)前所在的commit打標(biāo)簽
git tag <tag_name> <commit_id> #給指定commit打標(biāo)簽
git tag -a <tag_name> -m "標(biāo)簽說明" <commit_id> #給指定commit打標(biāo)簽稻扬,并附說明
-s <tag_name> -m "標(biāo)簽說明" <commit_id> #用gpg私鑰簽名
-d <tag_name> #刪除標(biāo)簽
git show <tag_name> #顯示標(biāo)簽信息
git push origin <tag_name> #推送標(biāo)簽到遠(yuǎn)程庫
git push origin --tags #推送所有未推送的標(biāo)簽到遠(yuǎn)程庫
git push origin :refs/tags/<tag_name> #刪除遠(yuǎn)程標(biāo)簽(先刪除本地卦方,再使用該命令刪除)
自定義Git
git config --global user.name "you_name" #設(shè)置全局用戶名
git config --global user.email "email@example.com" #設(shè)置全局郵箱
git config --global color.ui true #設(shè)置全局顏色顯示
git config --global alias.<alias_name> <'command_name'> #設(shè)置別名
-
忽略特殊文件
- 工作區(qū)創(chuàng)建
.gitignore
文件 - 內(nèi)容舉例,如下:
#Windows: Thumbs.db ehthumbs.db Desktop.ini #Python: *.py[cod] *.so *.egg *.egg-info dist build #My configurations: db.ini deploy_key_rsa
- 工作區(qū)創(chuàng)建
git check-ignore -v <file> #查看忽略該文件的規(guī)則
規(guī)則有錯時常用上述命令查找定位
- 配置別名列表
git config --global alias.confg 'config --global'
git confg alias.st status
git confg alias.co checkout
git confg alias.ci commit
git confg alias.br branch
git confg alias.unstage 'reset HEAD'
git confg alias.last 'log -1'
git confg alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
- 搭建Git服務(wù)器 教程地址