Paste_Image.png
(感謝題圖來(lái)源:GitHub 是怎樣的一個(gè)存在否淤? - Deep Reader 的回答)
感謝廖雪峰老師的Git教程统舀。
- 配置全局用戶及郵箱(安裝Git之后的最后一步)
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
- 配置當(dāng)前倉(cāng)庫(kù)用戶及郵箱
git config user.name "Your Name"
git config user.email "email@xx.com"
- 創(chuàng)建版本庫(kù)repository(可理解為目錄,pwd可查看當(dāng)前目錄)
git mkdir repo_name
cd repo_name
pwd
- 初始化版本庫(kù)(把這個(gè)目錄變成Git可以管理的倉(cāng)庫(kù),此時(shí)多了一個(gè).git的隱藏目錄轻姿,使用ls -ah可查看所含文件)
git init
ls -ah
- 把寫好的xx.txt文件放到 git 倉(cāng)庫(kù)(分兩步)
git add XX.txt #把文件修改添加到暫存區(qū)
git commit -m "xxx" #把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支
- 查看當(dāng)前倉(cāng)庫(kù)狀態(tài)
git status
- 查看文件修改的內(nèi)容
git diff <file>
補(bǔ)充
git diff #是工作區(qū)(work dict)和暫存區(qū)(stage)的比較
git diff --cached #是暫存區(qū)(stage)和分支(master)的比較
git diff HEAD #查看工作區(qū)和版本庫(kù)里面最新版本的區(qū)別
- 查看提交日志
git log #顯示從最近到最遠(yuǎn)的提交日志
git log --pretty=oneline #HEAD表示當(dāng)前版本,上一個(gè)版本就是HEAD^,上上一個(gè)版本就是HEAD^^,上100個(gè)版本是HEAD~100
- 版本回退到上一個(gè)版本实牡,并查看當(dāng)前文件內(nèi)容
git reset --hard HEAD^
git reset --hard 3628164 #3628164為commit id(版本號(hào))
cat xx.txt
- 查看命令日志(從建庫(kù)對(duì)這個(gè)版本的所有操作記錄),以便知道版本號(hào)
git reflog
- 丟棄工作區(qū)修改
git checkout -- xx.txt
- 撤銷暫存區(qū)修改
git reset HEAD file
- 刪除暫存區(qū)文件
git rm <file>
git commit -m "xxxx"
- 從暫存區(qū)恢復(fù)刪除文件
git checkout --<file>
- 創(chuàng)建一個(gè)ssh key
ssh-keygen -t rsa -C "email@example.com"
- 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
$ git remote add origin git@github.com:michaelliao/learngit.git
- 首次 push 到遠(yuǎn)程倉(cāng)庫(kù)(當(dāng)前分支master推送到遠(yuǎn)程)
git push -u origin master
git pull --rebase origin master #當(dāng)遠(yuǎn)程和本地文件不一致時(shí)用此操作轴合,合并后推送
- 非首次推送到遠(yuǎn)程倉(cāng)庫(kù)(推送最新修改)
git push origin master
- 從遠(yuǎn)程倉(cāng)庫(kù)克隆到本地庫(kù)
git clone git@server-name:path/repo-name.git
$ git clone git@github.com:michaelliao/gitskills.git
- 分支管理
查看分支:git branch
創(chuàng)建分支:git branch <name>
切換分支:git checkout <name>
創(chuàng)建+切換分支:git checkout -b <name>
合并某分支到當(dāng)前分支:git merge <name>
刪除分支:git branch -d <name>
查看分支合并圖:git log --pretty=oneline --abbrev-commit
- 禁止使用 fast forward merge(快進(jìn)模式) 方式(--no-ff參數(shù)创坞,表示禁用Fast forward)
git merge --no-ff -m "xxx" <branch name>
- 隱藏現(xiàn)場(chǎng)及回復(fù)現(xiàn)場(chǎng)
git stash #保存現(xiàn)場(chǎng)
git stash list #查看現(xiàn)場(chǎng)
git stash apply #恢復(fù)現(xiàn)場(chǎng),stash內(nèi)容并不刪除受葛,需要用git stash drop來(lái)刪
git stash pop #恢復(fù)現(xiàn)場(chǎng)题涨,stash內(nèi)容也刪了,再用git stash list查看总滩,就看不到任何stash內(nèi)容
- 強(qiáng)制刪除未合并分支
git branch -D <branch name>
- 多人協(xié)作
git remote #查看遠(yuǎn)程庫(kù)信息
git remote -v #查看遠(yuǎn)程庫(kù)信息詳細(xì)
git push origin master #推送本地 master 分支
git checkout -b dev origin/dev #創(chuàng)建本地 dev 并關(guān)聯(lián)遠(yuǎn)程 dev 分支
git branch --set-upstream branch-name origin/branch-name #建立本地分支與遠(yuǎn)程分支得關(guān)聯(lián)
git pull #抓取遠(yuǎn)程分支
- 創(chuàng)建標(biāo)簽
git tag <name> #創(chuàng)建標(biāo)簽
git tag #查看所有標(biāo)簽
git tag v0.9 6224937 #對(duì)某一次 commit 打標(biāo)簽
git show <tagname> #查看標(biāo)簽信息
git tag -a v0.1 -m "version 0.1 released" 3628164 #創(chuàng)建有說(shuō)明的標(biāo)簽
- 操作標(biāo)簽
git tag -d v0.1 #刪除標(biāo)簽
git push origin <tagname> #推送標(biāo)簽到遠(yuǎn)程
git push origin --tags #推送本地所有未推送到遠(yuǎn)程的標(biāo)簽
git push origin :refs/tags/<tagname> #刪除遠(yuǎn)程標(biāo)簽
- 自定義git別名
git config --global color.ui true #配置顏色開(kāi)啟
git config --global alias.st status #st表示status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
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" #一個(gè)喪心病狂地的lg配置
git config --global core.quotepath false # 設(shè)置顯示中文文件名
以上纲堵,歡迎大家繼續(xù)添加~