前言:一直知道分布式版本控制系統(tǒng)git,但是無奈從來沒有用過,有幸,最近公司開始改用git,故,利用上班空余時間,系統(tǒng)的學(xué)習了一下,以下便是我對git命令的一些總結(jié)。
來源https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
INSTALL 安裝
本人用的正是號稱最爛開發(fā)平臺的windows操作系統(tǒng),默認環(huán)境為windows (默默攢錢買Mac。。。。。)
下載網(wǎng)址:https://git-for-windows.github.io
安裝完成之后,Git里面會有三個應(yīng)用,分別是,GUI、CMD、Bash
打開Git Bash 完成基礎(chǔ)設(shè)置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
設(shè)置完成后 會在用戶主目錄下面的一個隱藏文件.gitconfig里發(fā)現(xiàn)所設(shè)置的情況
CREATE 創(chuàng)建
$ mkidr <catalogue name> ——————創(chuàng)建空目錄
$ pwd ——————顯示當前目錄
$ git init ——————創(chuàng)建一個新的本地版本庫
$ ls -ah ——————查看隱藏目錄
創(chuàng)建目錄時請確保目錄名不包含中文
創(chuàng)建SSH Key
$ ssh-keygen -t rsa -C “youremail@example.com”
設(shè)置完成后 會在用戶主目錄找到.ssh目錄, [id_rsa]是私鑰,[id_rsa.pub]是公鑰
注冊一個github帳號,將你的公鑰添加進去,你就獲得了一個Git遠程倉庫了
$ git remote add origin git@server-name:path/repo-name.git——————關(guān)聯(lián)一個遠程庫
$ git push -u origin master ——————推送master分支的所有內(nèi)容
$ git push origin master ——————推送最新修改
$ git clone <address> ——————從遠程版本庫克隆
address支持多種協(xié)議,包括https,但通過ssh支持的原生git協(xié)議速度最快
LOCAL CHANGES 本地更改
$ git add . ——————將所有當前更改添加到下一個更改
$ git add -p <file> —————— 在文件到下一個提交中添加一些更改
$ git add -f <file> ——————強制添加
$ git commit -m "<explain>" ——————把文件提交到倉庫
$ git commit -a ——————提交跟蹤文件中的所有本地更改
$ git commit . ———————提交之前更改
$ git commit --amend ——————提交最后一次更改
$ git status ——————查看倉庫當前狀態(tài)
$ git diff ——————追蹤文件更改
$ git diff HEAD -- <file> ——————查看工作區(qū)和版本庫里面最新版本的區(qū)別
$ git rm <file> ——————刪除文件
COMMIT HISTORY 提交歷史
$ git log ——————顯示最近到最遠的提交日志
$ git log --pretty=oneline ——————一列顯示日志信息
$ git log --pretty=oneline --abbrev-commit ——————一列顯示日志信息 縮寫
$ git log -p <file> —————— 顯示更改特定文件的日志信息
$ git blame <file> —————— 顯示在特定文件中誰更改了什么
$ git reflog ——————查看命令歷史
$ git log --graph ——————查看分支合并圖
UNDO 撤銷
$ git reset --hard HEAD ——————回退到當前版本
$ git reset --hard HEAD^ ——————回退到上個版本
$ git reset --hard HEAD^^ ——————回退到上個個版本
$ git reset --hard HEAD~100 ——————回退到上100個版本
$ git reset --hard <commit> ——————回退到指定版本
$ git reset HEAD <file> ——————撤銷暫存區(qū)的修改,重新放回工作區(qū)
$ git reset <commit>——————回退到指定版本并保存所有變化
$ git reset --keep <commit> ——————回退指定版本并保留未提交的本地更改
$ git checkout -- <file> —————— 丟棄本地更改
$ git checkout HEAD <file> —————— 丟棄特定文件中的本地更改
$ git revert <commit> ——————恢復(fù)更改
BRANCHES & TAGS 分支和標簽
$ git branch ——————查看分支
$ git branch -av ——————查看全部的分支列表
$ git branch <name> ——————創(chuàng)建分支
$ git checkout <name> ——————切換分支
$ git checkout -b <name> ——————創(chuàng)建+切換分支
$ git checkout --track <remote/branch> —————— 基于遠程分支創(chuàng)建一個新的分支
$ git branch -d <name> ——————刪除分支
$ git branch -D <name>——————強行刪除分支
$ git merge <name> ——————合并某分支到當前分支,fast forward模式,無分支歷史記錄
$ git merge --no-ff -m "explain" <name> ——————普通模式合并,合并后有歷史記錄
$ git tag <tag-name> —————— 打一個新標簽
$ git tag ——————查看所有標簽
$ git tag -a <tagname> -m "explain" ————指定標簽信息
$ git tag -s <tagname> -m "explain" ——————用PGP標簽簽名
(采用PGP簽名,需要安裝GnuPg,至于如何使用和配置gpg,請移步:http://www.williamlong.info/archives/3439.html)
$ git stash ——————隱藏當前工作現(xiàn)場
$ git stash list ——————查看工作現(xiàn)場
$ git stash apply ——————恢復(fù)工作區(qū) 不刪除stash
$ git stash pop ——————恢復(fù)工作區(qū) 刪除stash
UPDATE & PUBLISH 更新和發(fā)布
$ git remote -v —————— 顯示遠程庫詳細信息
$ git remote show <remote> —————— 顯示有關(guān)遠程的信息
$ git remote rm origin ——————刪除遠程庫
$ git fetch <remote> —————— 下載所有遠程更改但是不與當前版本合并
$ git pull <remote> <branch> —————— 抓取遠程庫的新提交
$ git push <remote/branch> —————— 從本地推送
$ git checkout -b branch-name origin/branch-name ——————在本地創(chuàng)建和遠程分支對應(yīng)的分支,本地和遠程分支的名稱最好一致
$ git branch --set-upstream branch-name origin/branch-name ——————建立本地分支和遠程分支的關(guān)聯(lián)
$ git push --tags —————— 推送標簽
$ git push origin <tagname> ——————推送一個本地標簽
$ git push origin --tags ——————推送全部未推送的本地標簽
$ git push origin :refs/tags/<tagname> ——————刪除一個遠程標簽
OTHER 其他
$ cat <file> ——————查看文件內(nèi)容
$ git config --global color.ui true ——————讓Git顯示顏色
設(shè)置忽略特殊文件 .gitignore
配置文件地址:https://github.com/github/gitignore
$ git check-ignore -v <file>——————檢查對應(yīng)文件.gitignore配置規(guī)則
偷懶好大法
$ git config --global alisa.<別名> <命令名> ——————配置別名
常見別名設(shè)置:
1.$ git config --global alias.st status
2.$ git config --global alias.co checkout
3.$ git config --global alias.ci commit
4.$ git config --global alias.br branch
5.$ git config --global alias.unstage 'reset HEAD'
6.$ git config --global alias.last 'log -1'
7.$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
說明:--global命令是對當前用戶起作用,如果不加,就只針對當前倉庫起作用
每個倉庫的Git配置文件都放在.git/config中
總結(jié) :
熟記命令,多敲多練,該偷懶時,就偷懶,哈哈
OK 好好學(xué)習,天天向上,加油!??!