技術(shù)交流QQ群:1027579432,歡迎你的加入酪刀!
歡迎關(guān)注我的微信公眾號:CurryCoder的程序人生
1.創(chuàng)建與合并分支
-
(1).從master分支創(chuàng)建dev分支粹舵,并切換到dev分支
git checkout master git checkout -b dev
-
其中,git checkout -b dev等價于
git branck dev git checkout dev
-
(2).查看本地當(dāng)前的分支骂倘,分支前面帶*表示當(dāng)前分支眼滤,剩下的分支表示本地有的其他分支
git branch
-
(3).查看遠(yuǎn)程全部的分支,白色的表示本地有的历涝,紅色的表示本地沒有的诅需,僅在遠(yuǎn)程存在。
git branch -a
-
(4).修改代碼荧库,提交代碼(當(dāng)前的操作是在dev分支上進(jìn)行的)
git add hello_git.txt git commit -m '提交文件hello_git.txt'
-
(5).分支合并(將dev合并到master分支)
git checkout master git merge dev
-
(6).合并完成后堰塌,刪除dev分支(刪除dev分支時壮锻,注意我們當(dāng)前所在的分支不能是dev分支)
git branch -d dev
-
(7).刪除后冷蚂,查看分支(此時看不到dev分支啦)
git branch
-
(8).總結(jié):工作中經(jīng)常從master分支創(chuàng)建新的分支杖挣,具體操作如下:
git checkout master git checkout -b feature01 // 從master分支創(chuàng)建feature01分支 git push origin feature01 git add .. git commit -m 'xxx文件的提交說明' git push origin feature01
-
注意:將本地分支branch1推送到遠(yuǎn)端的branch2操作步驟:
git push origin branch1:branch2
-
(9).刪除分支
git branch -D feature01 // 本地強制刪除分支feature01 git push origin :feature01 // 推送到遠(yuǎn)端
2.解決沖突
-
(1).發(fā)生沖突的文件
<<<<<<< HEAD Creating a new branch is quick & simple. ======= Creating a new branch is quick AND simple. >>>>>>> feature1
其中袱蚓,git使用 <<<<<<<掰伸,=======,>>>>>>>標(biāo)記文件中自己和別人產(chǎn)生沖突的部分橱野。在 <<<<<<<灶搜,=======之間為自己的代碼;=======瞎疼,>>>>>>>之間為別人的代碼科乎。如果保留自己的代碼,將別人的代碼刪掉即可丑慎。
-
(2).沖突解決后提交
git status git add *** git commit -m "fix conflict" git push origin 分支名
3.Bug分支
-
(1).儲藏更改:將當(dāng)前更改的代碼儲藏起來喜喂,等以后恢復(fù)使用
git stash
-
(2).恢復(fù)儲藏的代碼
git stash pop // 恢復(fù)的同時把stash內(nèi)容刪掉
-
或者,先通過git stash list查看所有的stash竿裂,然后恢復(fù)指定版本的代碼
// 通過git stash list玉吁,查看本地所有的stash,如果我要恢復(fù)第一個就執(zhí)行: git stash apply stash@{0} git stash apply // 恢復(fù)stash,但是stash內(nèi)容并不刪除 git stash drop // 在上面操作的基礎(chǔ)上腻异,以此來刪除stash 注:git stash list // 查看全部的stash列表
-
(3).將stash空間清空
git stash clear
-
(4).git stash pop 和 git stash apply 區(qū)別
- git stash pop stash@{id}命令會在執(zhí)行后將對應(yīng)的stash id 從stash list里刪除
- git stash apply stash@{id} 命令則會繼續(xù)保存stash id
4.版本回退
-
(1).回退至上一個版本
git reset --hard HEAD
-
(2).回退至指定版本
git reset --hard 版本號
-
(3).查看歷史版本號(本地commit)
git reflog
-
(4).查看各版本號及信息(所有的commit:本地commit + 其他同事的commit)
git log
5.撤銷修改
-
(1).撤銷修改
git checkout -- hello_git.txt
有以下兩種情況:
a. 還沒有執(zhí)行 git add 操作进副,執(zhí)行上面的操作后,會恢復(fù)到和版本庫中一模一樣的版本狀態(tài)悔常。
b.執(zhí)行了git add 影斑,還沒執(zhí)行 git commit ,再執(zhí)行上面的操作后,會恢復(fù)到git add 結(jié)束后的狀態(tài)
注意:一旦執(zhí)行了git commit -m "*"机打,就不能再使用上面的命令回退矫户。
-
(2).撤銷新建文件
比如新建一個hello.html頁面,并未執(zhí)行g(shù)it add ,即沒有被git追蹤残邀,此時如果你想撤銷新建動作皆辽,可執(zhí)行:
git clean -f ../hello.html
-
(3).撤銷新建文件夾
例如,新建一個文件夾"demo"芥挣,并未執(zhí)行g(shù)it add ,即沒有被git追蹤驱闷,此時如果你想撤銷新建動作,可執(zhí)行:
git clean -df ./demo
6.對已push版本進(jìn)行回退
-
(1).第一步
git reset --hard 版本號 // 本地回退到指定的版本
-
(2).第二步
git push -f origin dev // 將遠(yuǎn)程的也回退到指定版本
7.本地同步遠(yuǎn)程刪除的分支
git fetch origin -p // 用來清除已經(jīng)沒有遠(yuǎn)程信息的分支空免,這樣git branch -a 就不會拉取遠(yuǎn)程已經(jīng)刪除的分支了
8.刪除未與遠(yuǎn)程分支對應(yīng)的本地分支
-
從gitlab上看不到的分支在本地可以通過git branch -a 查到空另,刪掉沒有與遠(yuǎn)程分支對應(yīng)的本地分支
git fetch -p
9.查看遠(yuǎn)程庫與本地分支的信息
git remote show origin
10.標(biāo)簽管理
-
(1).給當(dāng)前分支最新commit打標(biāo)簽tag
git tag v1.0.0
-
(2).例如現(xiàn)在周五,要給周一某個commit打標(biāo)簽蹋砚,應(yīng)該執(zhí)行以下步驟:
-
(a).查看log日志扼菠,找到相應(yīng)的commit版本號
git log --pretty=oneline --abbrev-commit // 顯示如下commit,比如我想在 "34372b05"這個commit打標(biāo)簽 44d2e20b fix bug 34372b05 fix bug 29554931 fix bug
-
(b).給指定的commit打標(biāo)簽
git tag v1.0.0 34372b05
-
(c).創(chuàng)建的標(biāo)簽只存在本地坝咐,推至遠(yuǎn)程
git push origin v1.0.0
-
(d).一次性推送未推至遠(yuǎn)程的本地標(biāo)簽
git push origin --tags
-
(e).查詢所有標(biāo)簽
git tag
-
(f).查詢標(biāo)簽詳細(xì)信息
git show v1.0.0
-
(g).刪除本地標(biāo)簽
git tag -d v1.0.0
-
(h).刪除遠(yuǎn)程標(biāo)簽
// 先從本地刪除 git tag -d v1.0.0 // 然后從遠(yuǎn)程刪除 git push origin :refs/tags/v1.0.0 // 最后可以在gitlab上查看是否真正的刪除了標(biāo)簽
-
-
(3).創(chuàng)建帶有說明的標(biāo)簽娇豫,用-a指定標(biāo)簽名,-m指定說明文字
// git tag -a 版本號 -m 說明信息 commit版本號 git tag -a v1.0.0 -m 'version 1.0.0 released' 34372b05(commit版本號) // 查看標(biāo)簽詳細(xì)信息 git show v1.0.0