git和其他所有的版本控制系統(tǒng)一樣惭等,都只能追蹤文本的改變
配置用戶名和email
git config --global user.name "curious_cat"
git config --global user.email "xx@qq.com"
global參數(shù)設(shè)置了電腦上的所有的git倉(cāng)庫(kù)的默認(rèn)的name和email
git config --global user.name和git config --global user.email能查看當(dāng)前的所有g(shù)it倉(cāng)庫(kù)默認(rèn)的用戶名和email
初始化git倉(cāng)庫(kù)
git init 當(dāng)前目錄成為了git可以管理的倉(cāng)庫(kù)(版本庫(kù))封字,并且當(dāng)前目錄自動(dòng)生成了.git目錄叙凡,.git目錄是Git來(lái)跟蹤管理版本庫(kù)的晴音。
.git目錄中會(huì)自動(dòng)創(chuàng)建一個(gè)叫master的分支
*HEAD指針總是指向當(dāng)前分支 *
將文件添加到git倉(cāng)庫(kù)
git add test.txt 把工作目錄中文件添加到.git目錄的暫存區(qū)灰粮,可同時(shí)添加多個(gè)文件
test.txt等文件必須放在工作目錄炬搭,才可以添加到git倉(cāng)庫(kù)
將文件提交到git倉(cāng)庫(kù)
git commit -m "修改了test.txt文件" 把文件提交到.git目錄的中的當(dāng)前分支(HEAD指針指向的分支)
每次修改文件后必須先執(zhí)行g(shù)it add 再執(zhí)行g(shù)it commit -m夺姑,因?yàn)間it管理的是修改违施,而非文件
查看git倉(cāng)庫(kù)狀態(tài)
git status 查看git倉(cāng)庫(kù)的狀態(tài)
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
提示修改了文件test.txt,需要使用git add test.txt 添加到暫存區(qū)瑟幕,或者使用git checkout -- test.txt撤銷修改磕蒲。
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: test.txt
提示:test.txt 的修改需要使用git commit -m "修改了XX" 提交到當(dāng)前分支上
查看文件是如何修改的
git diff test.txt
*如果git status提示有文件被修改過(guò)(未git add),用git diff就能查看修改的內(nèi)容了 *
刪除文件
rm test.txt 直接用rm命令刪除
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
提示使用git checkout -- text.txt將撤銷對(duì)文件的刪除只盹,使用git rm text.txt 然后使用git commit確實(shí)要從版本庫(kù)中刪除該文件
git rm text.txt 配合git commit -m "xx" 從版本庫(kù)刪除該文件
查看git倉(cāng)庫(kù)日志和版本回退
git log --pretty=oneline 查看提交日志辣往,以便確定要回退到哪個(gè)版本
git reflog 查看命令日志,以便確定要回到未來(lái)的哪個(gè)版本
git reset --hard HEAD^ 回退到上一個(gè)版本殖卑,HEAD表示當(dāng)前版本站削,HEAD^表示上一個(gè)版本
git reset --hard HEAD^^ 回退到上上一個(gè)版本,HEAD^^表示上上一個(gè)版本
git reset --hard 3628164 回退到指定的版本孵稽,需配合git reflog使用
撤銷修改
git checkout -- readme.txt 修改文件后许起,使用git status會(huì)提示使用此命令將撤銷對(duì)工作目錄中readme.txt的修改
git reset HEAD readme.txt 修改文件后并使用了git add,使用git status會(huì)提醒使用此命令會(huì)把暫存區(qū)的修改撤銷菩鲜,但工作區(qū)中仍然是修改后的內(nèi)容园细,相當(dāng)于回到了未git add狀態(tài)。
如果修改文件后使用了git add 和git commit 只能使用版本回退功能了
創(chuàng)建與合并分支
1. git checkout -b dev -b參數(shù)表示創(chuàng)建dev分支并切換到分支接校,可以進(jìn)行分支開(kāi)發(fā)了猛频,上面命令相當(dāng)于: git branch dev 創(chuàng)建分支dev ; git checkout dev 切換到分支dev;
2. git checkout master dev分支開(kāi)發(fā)完成后切換到master分支
3. git merge dev 然后合并dev分支到當(dāng)前分支上
4. git branch -d dev 合并完成后就可以刪除dev分支了
git branch 命令會(huì)列出所有分支,當(dāng)前分支前面會(huì)用(*)號(hào)標(biāo)識(shí)
git鼓勵(lì)在分支上完成任務(wù)蛛勉,合并后再刪除分支鹿寻,這和直接在master分支上工作效果一樣,但過(guò)程更安全
解決分支合并沖突
1. 打開(kāi)沖突的文件修改后使用git add 和git commit -m命令提交到當(dāng)前分支
2. git merge dev 然后合并dev分支到當(dāng)前分支上
3. git branch -d dev 合并完成后就可以刪除dev分支了
git log --graph 可以查看合并圖
Bug分支
- git stash 保存當(dāng)前工作現(xiàn)場(chǎng)诽凌,等以后恢復(fù)現(xiàn)場(chǎng)后繼續(xù)工作