Git是一個(gè)分布式的版本控制系統(tǒng)现使,它在版本控制琉历、分支管理方面有突出的表現(xiàn)将谊。
參考教程 Git教程
git.png
1.本地倉(cāng)庫(kù)
1.1初始化
cd到需要進(jìn)行版本控制的目錄下屋匕,對(duì)該目錄的項(xiàng)目創(chuàng)建本地git版本庫(kù)
git init
1.2工作區(qū)-->暫存區(qū)
工作區(qū)就是當(dāng)前目錄蹂析,目錄下的文件更改需要添加到暫存區(qū)抖剿。
暫存區(qū)是版本庫(kù)中用于接受git add文件的區(qū)域,可以理解為臨時(shí)保存將要正式提交的文件识窿。
git add <file>
1.3暫存區(qū)-->本地倉(cāng)庫(kù)
暫存區(qū)中的文件經(jīng)過commit之后斩郎,才會(huì)最終記錄在版本庫(kù)的記錄中。
git commit -m <comment>
1.4查看狀態(tài)
git status
1.5比較工作區(qū)與暫存區(qū)
git diff
1.6比較工作區(qū)與版本庫(kù)最新提交
git diff HEAD
2版本管理
2.1查看歷史
git log
只能查看該commit之前的歷史
git log
git reflog
可以查看所有分支的所有操作(包括commit和reset)
git reflog
2.2回到前x個(gè)版本
git reset --hard HEAD~x
2.3回到某個(gè)版本
git reset --hard <commit-id>
2.4撤銷工作區(qū)的修改
場(chǎng)景1:文件修改后喻频,未add到暫存區(qū)缩宜,直接丟棄更改;
git checkout -- <file>
場(chǎng)景2:文件修改后,已a(bǔ)dd到暫存區(qū)锻煌,先用git rest HEAD <file>回到場(chǎng)景1妓布,再按場(chǎng)景1操作
git reset HEAD <file>
場(chǎng)景3:文件修改后,已a(bǔ)dd到暫存區(qū)宋梧,并且commit到版本庫(kù)
git reset HEAD <file>
2.5刪除文件
在Git中匣沼,刪除也是一種操作,需要使用git rm <file>
(與git add <file>
類似)捂龄,刪除之后還需要commit
git rm <file>
# 從git倉(cāng)庫(kù)移除文件释涛,但不刪除本地文件
git rm --cached <file>
3.遠(yuǎn)程倉(cāng)庫(kù)
3.1將遠(yuǎn)程倉(cāng)庫(kù)克隆到本地
git clone <remote-address>
3.2關(guān)聯(lián)遠(yuǎn)程git倉(cāng)庫(kù)
git remote add origin <remote-address>
3.3首次向遠(yuǎn)程倉(cāng)庫(kù)推送master
git push -u origin master
3.4從本地推送分支
git push origin <branch>
3.5從遠(yuǎn)程抓取當(dāng)前分支
git pull
3.6在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支(分支名稱最好一致)
git checkout -b <branch> origin/<branch>
3.7建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)
git branch --set-upstream <branch> origin/<branch>
3.8將本地分支推送到遠(yuǎn)程(遠(yuǎn)程分支不存在)
git push origin <local-branch>:<remote-branch>
3.9將遠(yuǎn)程分支拉取到本地
git checkout -b <local-branch> origin/<remote-branch>
3.10查看遠(yuǎn)程庫(kù)信息
git remote -v
4.分支管理
4.1創(chuàng)建分支
git branch <branch>
4.2切換分支
git checkout <branch>
4.3創(chuàng)建并切換分支
git checkout -b branch_name
4.4列出所有的分支
git branch
4.5合并指定分支到當(dāng)前分支
git merge [--abbrev-commit] [-m "message"] <branch>
4.6刪除分支
git branch -d <branch>
# 刪除遠(yuǎn)程分支并推送到遠(yuǎn)程
git branch -r -d <branch> && git push origin :<branch>
4.7強(qiáng)行刪除未合并的分支
git branch -D branch_name
4.8存儲(chǔ)當(dāng)前工作區(qū)
git stash
4.9查看保存的工作區(qū)
git stash list
4.10恢復(fù)stash但不刪除
git stash apply stash@{0}
4.11刪除stash
git stash drop
4.12恢復(fù)stash同時(shí)刪除stash
git stash pop
4.12將當(dāng)前分支rebase到目標(biāo)分支
git rebase <branch>
5.標(biāo)簽管理
5.1在當(dāng)前分支的最新commit上創(chuàng)建標(biāo)簽
git tag <tag-name>
5.2查看所有標(biāo)簽
git tag
5.3在當(dāng)前分支的指定commit_id上創(chuàng)建標(biāo)簽
git tag <tag-name> <commit-id>
5.4在當(dāng)前分支的指定commit_id上創(chuàng)建帶說明的標(biāo)簽
git tag -a <tag-name> -m <comment> <commit-id>
5.5查看標(biāo)簽信息
git show <tag-name>
5.6將標(biāo)簽推送到遠(yuǎn)程
git push origin <tag-name>
5.7推送所有未推送的本地標(biāo)簽到遠(yuǎn)程
git push origin --tags
5.8刪除標(biāo)簽
git tag -d <tag-name>
5.9將本地刪除的標(biāo)簽推送到遠(yuǎn)程(即刪除遠(yuǎn)程標(biāo)簽)
git tag push origin :refs/tags/<tag-name>
5.10切換到指定的標(biāo)簽
git checkout tag
6.其它
6.1檢查文件是否被忽略
git check-ignore -v <file>
6.2配置yy命令的別名為xx
git config --global alias.xx yy
6.3配置git lg為各種git log附加效果的別名
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"