以下為git常見(jiàn)指令的節(jié)點(diǎn)變化
以下文字總結(jié)參考廖雪峰的git教程
分布式版本控制系統(tǒng)
配置倉(cāng)庫(kù)的使用者(--global 表示這臺(tái)機(jī)器所有g(shù)it倉(cāng)庫(kù)都使用這個(gè)配置)
$git config --global user.name ""
$git config --global user.email ""
版本庫(kù)(repository) - 被git所管理的目錄
1赏参、創(chuàng)建空目錄
$mkdir learngit //創(chuàng)建learngit文件夾
$cd learngit //進(jìn)入learngit文件夾
$pwd //顯示當(dāng)前目錄
2把篓、將目錄變成git可以管理的倉(cāng)庫(kù)
$git init
3、在倉(cāng)庫(kù)里創(chuàng)建文件
$git add xxx.txt //把文件加到倉(cāng)庫(kù) ---------------- $git checkout //撤銷(xiāo)工作區(qū)的修改紊浩,把暫緩區(qū)的最新版本移到工作區(qū)
$git commit -m "提交的說(shuō)明" //把文件提交到倉(cāng)庫(kù)
1疗锐、$git status//查看倉(cāng)庫(kù)當(dāng)前的狀態(tài)
比較區(qū)間版本
區(qū)間:
1、工作區(qū) (working tree)
2口芍、暫緩區(qū)(index/stage) - 執(zhí)行g(shù)it add后
3简珠、本地倉(cāng)庫(kù)(repository) - 執(zhí)行g(shù)it commit后
$git diff// 查看working tree 與 index的差別
$git diff --cached// 查看index與repository的差別
$git diff HEAD//查看working tree與repository的差別,其中HEAD代表最近一次commit的信息
回退
版本回退
$git log//查看提交日志
$git reflog//查看歷史提交日志膘融,每條日志都有
$git log --pretty=oneline//查看提交日志(一行)
$git reset --hard HEAD^ //回退回上一個(gè)版本(head^^上兩個(gè)版本祭玉,head~100往上100個(gè)版本)
$git reset --hard 1094a //回退至指定版本
$cat readme.txt//查看指定文件
撤銷(xiāo)修改
git checkout -- file //1脱货、未放置暫存區(qū),撤銷(xiāo)回到版本庫(kù)一樣的狀態(tài) 2臼疫、已加到暫存庫(kù)扣孟,又做了修改,撤銷(xiāo)回到添加到暫存區(qū)后的狀態(tài)(回到最近的一次git commit或者git add狀態(tài))
git reset HEAD readme.txt//將暫存區(qū)的修改撤銷(xiāo),重新回到工作區(qū)
1鸽斟、想直接丟棄工作區(qū)的修改 git checkout
2拔创、想丟棄暫存區(qū)的修改 git reset HEAD ->git checkout
3、想丟棄版本庫(kù)的修改 git reset --hard
刪除文件
git checkout -- readme.txt //工作區(qū)刪除文件富蓄,但是版本庫(kù)還留存剩燥,可以恢復(fù)文件
git rm readme.txt //從版本庫(kù)刪除文件
先手動(dòng)刪除工作區(qū)文件后,想從版本庫(kù)刪除文件
git add readme.txt 與 git rm readme.txt 效果一致
遠(yuǎn)程倉(cāng)庫(kù)
添加遠(yuǎn)程庫(kù)
git remote add origin https://github.com/mirse/learnGit.git //關(guān)聯(lián)遠(yuǎn)程庫(kù)
git push -u origin master //第一次推送master分支的所有內(nèi)容 -u git不但會(huì)把本地分支推送到遠(yuǎn)程立倍,并且會(huì)把二者關(guān)聯(lián)起來(lái)
git push origin master //每次本地提交后灭红,推送最新版到遠(yuǎn)程
從遠(yuǎn)程庫(kù)克隆
git clone https://github.com/mirse/WeatherDemo.git //從遠(yuǎn)程庫(kù)克隆
分支管理
創(chuàng)建和分支合并
git branch //查看分支
git branch <name> //創(chuàng)建分支
git checkout <name> 或 git switch <name> //切換分支
git checkout -b <name> 或 git switch -c <name> // 創(chuàng)建并切換分支
git merge <name> // 合并某分支到當(dāng)前分支
git branch -d <name> //刪除分支
解決沖突
合并分支時(shí)可能遇到?jīng)_突,根據(jù)文本提示解決后重新git add ->git commit
<<<<<<< HEAD (HEAD表示當(dāng)前)
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1 (feature1表示要合并的分支)
git log --graph //查看分支合并圖
分支管理
如果使用禁用fast forawrd模式帐萎,git會(huì)在merge時(shí)生成一個(gè)新的commit
git merge <name> // 合并某分支到當(dāng)前分支(默認(rèn)使用ast forward模式)
git merge --no-off --m "說(shuō)明內(nèi)容" <name> //合并分支不使用Fast forward模式
bug分支
git stash //貯藏當(dāng)前文件修改
git stash list//查看貯藏列表
git stash pop//應(yīng)用貯藏比伏,同時(shí)把stash內(nèi)容刪除
git stash apply stash@{0}//應(yīng)用貯藏疆导,但是stash內(nèi)容不刪除
git stash drop//刪除貯藏
git cherry-pick <commitId> //復(fù)制一個(gè)特定的提交到當(dāng)前分支
分支強(qiáng)制刪除
git branch -D <name>
多人協(xié)作
git remote -v //查看遠(yuǎn)程庫(kù)信息
git push origin branch-name //從本地推動(dòng)分支
git checkout -b branch-name origin/branch-name //在本地分支創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支
git pull //從遠(yuǎn)程抓取分支
Rebase
git rebase //將本地未push的分支提交歷史整理成直線(xiàn)
標(biāo)簽管理
創(chuàng)建標(biāo)簽
git tag <tagname> //新建一個(gè)標(biāo)簽(HEAD)
git tag <tagname> commitId //在commitId新建一個(gè)標(biāo)簽
git tag -a <tagname> -m "blblbl" //創(chuàng)建帶有說(shuō)明的標(biāo)簽
操作標(biāo)簽
git push origin <tagname> //推送一個(gè)本地標(biāo)簽
git push origin --tags //推送全部未推送過(guò)的本地標(biāo)簽
git tag -d <tagname> //刪除一個(gè)本地標(biāo)簽
git push origin :refs/tag/<tagname> //刪除一個(gè)遠(yuǎn)程標(biāo)簽
使用Github
1赁项、在gitHub上可以fork任意開(kāi)源倉(cāng)庫(kù)
2、擁有fork倉(cāng)庫(kù)的讀寫(xiě)權(quán)限
3澈段、修改后可以pull request給官方倉(cāng)庫(kù)
使用Gitee
1悠菜、(1)ssh-keygen -t rsa -C "your email" ->(2) cat ~/.ssh/id_rsa.pub ->(4)ssh -T git@gitee.com
//(1) 本地電腦生成ssh密鑰,-> (2)查看ssh密鑰 ->(3) 添加到gitee->(4) 確認(rèn)并添加主機(jī)到本機(jī)ssh可信列表
2败富、git remote -v //查看遠(yuǎn)程庫(kù)信息
3悔醋、git remote rm origin //刪除已有的github遠(yuǎn)程庫(kù)
4、 git remote add origin git@gitee.com:menghuanqv/test.git //關(guān)聯(lián)gitee遠(yuǎn)程庫(kù)
本地庫(kù)同時(shí)關(guān)聯(lián)github與gitee
使用多個(gè)遠(yuǎn)程庫(kù)時(shí)兽叮,git默認(rèn)給遠(yuǎn)程庫(kù)起的默認(rèn)名字是origin芬骄,如果有多個(gè)遠(yuǎn)程庫(kù),我們需要用不同的名稱(chēng)來(lái)表示不同的遠(yuǎn)程庫(kù)鹦聪。
git remote add github git@gitee.com:menghuanqv/test.git
git remote add gitee git@gitee.com:menghuanqv/test.git
推送:
git push github master //推送到github
git push gitee master //推送到gitee
自定義git
忽略特殊文件
.gitignore //在文件里添加需要忽略的文件
git add -f //強(qiáng)行添加忽略文件所忽略的文件