武漢網(wǎng)站建設(shè)十強(qiáng)企業(yè)地推掃碼平臺(tái)
前言
Java之父于勝軍說過,曾經(jīng)一位“三年開發(fā)經(jīng)驗(yàn)”的程序員粉絲朋友,剛?cè)肼氁驗(yàn)椴粫?huì)解決分支問題而被開除,這是不是在警示我們什么呢?
針對(duì)一些Git的不常用操作,我們通過例子來演示一遍
1.版本回退
1.1已提交但未push
撤銷Commit
先commit一次
通過git log查看提交的版本號(hào),然后git reset來撤銷commit
撤銷commit和add
首先創(chuàng)建一個(gè)文件
進(jìn)行commit
通過git reset --mixed 撤銷add和commit
1.2提交并且push
使用git reset會(huì)完全抹去v4版本,并且在日志中也無法查詢
生產(chǎn)環(huán)境中誤提交到主分支就可以使用這個(gè)
1.提交兩次版本
2.回退到版本v1,reset想要去到的版本號(hào)
回退效果
push回退之后的V1版本
使用git revert進(jìn)行版本回退會(huì)重新生成一個(gè)版本,之前的無用版本也會(huì)存在與記錄中
1.找到撤銷的版本號(hào)
git revert 版本號(hào),進(jìn)入vi界面修改Revert提交信息之后:wq退出
修改成功之后直接push,也可以對(duì)當(dāng)前版本做出調(diào)整之后add–commit–push
可以看到舊版本還存在,提交的是生成的“新版本”,并且內(nèi)容回退到了v1
2.分支操作
2.1如何切換分支而使之前分支的代碼不丟失?
使用git stash將代碼暫存,開發(fā)完成之后切換到該分支對(duì)代碼進(jìn)行釋放
切換到m2分支,進(jìn)行m2分支的工作(修復(fù)bug),工作完成commit之后 git checkout m2
回到m1分支繼續(xù)進(jìn)行之前的開發(fā),git checkout m1 之后git stash pop
分支暫存相當(dāng)于一個(gè)入棧操作,此時(shí)m1分支暫存的記錄就被刪除了“相當(dāng)于出?!?#xff0c;使用git stash apply則不會(huì)刪除
2.2如何拿到其他分支提交的代碼?
通過cherry-pick 提交版本號(hào)即可拿到
3.分支問題
3.1壓縮分支
在項(xiàng)目開發(fā)中,如果多次commit的是一個(gè)模塊的內(nèi)容,為了使分支更加美觀我們可以將多次提交的記錄壓縮成一次,通過getRebase即可
比如提交了三個(gè)版本,直接git rebase -i HEAD~3,回車即可
當(dāng)然也可以使用IDEA自帶的快捷鍵進(jìn)行使用
3.2合并分支
在實(shí)際場(chǎng)景中,當(dāng)其他分支要合并到主分支中直接使用git merge(解決分支沖突之后commit push)即可
分支被成功合并
為了避免主分支分叉,我們可以進(jìn)行變基操作git rebase dev
變基后主分支就變成了一條直線
然后進(jìn)行分支合并git merge,這樣在開發(fā)過程中中多余分支就與主分支沒有了交集,即可以直接刪除
這樣刪除多于分支就沒什么問題了,因?yàn)槎家押喜⒌搅酥鞣种?/p>