国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

這才是真正的Git——Git實用技巧詳解

開發(fā) 前端 新聞
這篇文章因為更多的是列舉實際應(yīng)用的技巧,所以文章結(jié)構(gòu)會顯得散亂一些,也不會像前兩篇文章那樣要求大家順序閱讀。每個點都是互相獨立的,大家可以根據(jù)自己的需要學(xué)習(xí)。

 本篇是這個系列的最后一篇文章,之前的文章主要講的是基礎(chǔ)原理部分(見上方專輯),在理解原理的基礎(chǔ)上,介紹一些實用的技巧給大家,希望能提高大家的開發(fā)效率。

這篇文章因為更多的是列舉實際應(yīng)用的技巧,所以文章結(jié)構(gòu)會顯得散亂一些,也不會像前兩篇文章那樣要求大家順序閱讀。每個點都是互相獨立的,大家可以根據(jù)自己的需要學(xué)習(xí)。

在這篇文章里我會使用操作錄屏的方式來介紹例子,希望這種方式可以讓你更直觀的了解命令的使用方法。

將幾個commit壓縮成一個

這才是真正的Git——Git實用技巧詳解

⚠️ 這里有一點要特別注意的是:rebase會導(dǎo)致新的commit節(jié)點產(chǎn)生,所以切記不要對多人共用的遠(yuǎn)端分支進(jìn)行rebase。

rebase -i 是個很實用且應(yīng)用廣泛的工具,希望大家都學(xué)會它的使用。它還可以用來修改commit信息,拋棄某些commit,對commit進(jìn)行排序等等。具體命令如下,操作方式跟動圖一致,都是在vim里面進(jìn)行編輯。這里不展開,感興趣的同學(xué)可以自己操作一下。

  1. # Commands: 
  2. # p, pick <commit> = use commit 
  3. # r, reword <commit> = use commit, but edit the commit message 
  4. # e, edit <commit> = use commit, but stop for amending 
  5. # s, squash <commit> = use commit, but meld into previous commit 
  6. # f, fixup <commit> = like "squash", but discard this commit's log message 
  7. # x, exec <command> = run command (the rest of the line) using shell 
  8. # d, drop <commit> = remove commit 
  9. # l, label <label> = label current HEAD with a name 
  10. # t, reset <label> = reset HEAD to a label 
  11. # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>] 
  12. # .       create a merge commit using the original merge commit's 
  13. # .       message (or the oneline, if no original merge commit was 
  14. # .       specified). Use -c <commit> to reword the commit message. 

另外如果要合并的是最近的幾個commit,我們還可以用git reset --soft HEAD~3 && git commit -m 'xxx'來實現(xiàn)。對這個有問題的同學(xué)可以參照Git內(nèi)部原理強調(diào)的可視化方法思考一下。

找回丟失的commit節(jié)點或分支

像上一步rebase后發(fā)現(xiàn)不符合預(yù)期,如何恢復(fù)?不小心刪除了一個分支,如何找回?

“學(xué)會這個技能,你的同事會請你喝奶茶的,而且說不定還能收獲妹子。” —— 來自往期課程的某位同學(xué)

這才是真正的Git——Git實用技巧詳解

主要思路為:找到要返回的commit object的哈希值,然后執(zhí)行g(shù)it reset恢復(fù)

我們知道Git的出現(xiàn)就是為了盡量保證我們的操作不被丟失,在Git內(nèi)部原理中我們講過,git object一旦被創(chuàng)建,就不可變更,所以只要找到它對應(yīng)的哈希值,就能找回。但是ref呢?在Git內(nèi)部原理中我們也講過,它是一個可變的指針,比如說你在master中提交了一個commit,那當(dāng)前的master這個ref就會指向新的commit object的哈希值。reflog 就是將這些可變指針的歷史給記錄下來,可以理解成 ref的log,也可以理解成 版本控制的版本控制

獲得一個干凈的工作空間

當(dāng)我們實驗一種思路,或者跟朋友講代碼時,我們可能會隨意的修改代碼。而當(dāng)我們回到正常的開發(fā)時,我們需要一個干凈的工作目錄,即保證目前工作目錄跟Git最后一次commit的文件是一致的。我們可以怎么做?

這才是真正的Git——Git實用技巧詳解

盡量少用會丟失文件的操作,除非你能夠確定不再需要這些文件。

修改最近一個commit

commit完發(fā)現(xiàn)有一些臨時的log忘記去掉?有一些文件忘記添加?commit信息出現(xiàn)錯別字?

這才是真正的Git——Git實用技巧詳解

也可以使用 git reset HEAD~,然后執(zhí)行你需要的修改,再commit即可,同上面介紹的命令效果是相同的。

提交一個文件中的部分修改

這才是真正的Git——Git實用技巧詳解

Git interactive add 還有很多功能,也推薦大家有時間可以嘗試一下。

禁止修改多人共用的遠(yuǎn)端分支

如果一條遠(yuǎn)端分支有多人共用,那么不要在上面執(zhí)行reset、rebase等會修改這條分支已經(jīng)存在的commit object的命令。

這才是真正的Git——Git實用技巧詳解

具體的解釋參照這篇文章 Rebase and the golden rule explained 。

撤銷一個合并

如果是一個本地分支,僅需git reset --hard <合并前的SHA1>即可。

如果這個分支已經(jīng)被推送到遠(yuǎn)端,比如說合并進(jìn)master,發(fā)到線上才發(fā)現(xiàn)有bug需要回滾。這時分支有可能已經(jīng)被其他人所使用,根據(jù)“禁止修改多人共用的遠(yuǎn)端分支”,你需要執(zhí)行g(shù)it revert -m 1 <合并的SHA1>,新增一個revert節(jié)點,如下圖中的E'。

這才是真正的Git——Git實用技巧詳解

但要注意不要在原特性分支繼續(xù)開發(fā),而應(yīng)該刪除原來的分支,從E'節(jié)點拉出新分支做bug修復(fù)等。

如果在原特性分支上繼續(xù)開發(fā),則在合并回master的時候需要做一次revert操作revert掉E'節(jié)點,變成E‘’(如下圖),不然很容易出現(xiàn)丟失文件等問題。具體原因分析參照分支合并中的總結(jié)。

這才是真正的Git——Git實用技巧詳解

從整個歷史中刪除一個文件

代碼要開源了,但發(fā)現(xiàn)其中包括密鑰文件或內(nèi)網(wǎng)ip怎么辦?

  1. git filter-branch --tree-filter 'rm -f passwords.txt' HEAD 

可以使用filter-branch命令,它的實現(xiàn)原理是將每個commit checkout出來,然后執(zhí)行你給它的命令,像上面的rm -f passwords.txt,然后重新commit回去。

⚠️ 這個操作屬于高危操作,會修改歷史變更記錄鏈,產(chǎn)生全新的commit object。所以執(zhí)行前請通知倉庫的所有開發(fā)者,執(zhí)行后所有開發(fā)者從新的分支繼續(xù)開發(fā),棄用以前的所有分支。

其他好用的命令

下面這些命令也是比較實用的命令,感興趣的同學(xué)可以自己學(xué)習(xí)一下。

  • git bisect 二分查找出現(xiàn)問題的變更節(jié)點,比如你發(fā)現(xiàn)當(dāng)前提前下測試是不通過的,但HEAD~10(10個提交前)的測試是可以通過的,就可以用git bisect 來幫你定位到出現(xiàn)問題的變更點。
  • git blame 查看某行代碼最后是誰修改的。
  • git show-branch 直觀的展示多條分支間的關(guān)系。
  • git subtree 拆分或合并倉庫。

 

責(zé)任編輯:張燕妮 來源: 騰訊技術(shù)工程
相關(guān)推薦

2020-03-05 16:47:51

Git內(nèi)部儲存

2020-05-28 10:45:31

Git分支合并

2022-03-23 09:18:10

Git技巧Linux

2024-08-07 10:24:04

2009-12-21 15:50:39

2016-12-16 19:06:02

擴(kuò)展數(shù)據(jù)庫架構(gòu)

2012-05-17 11:04:18

匈牙利命名法

2015-02-11 09:35:09

iPhone6

2015-08-17 13:19:55

大數(shù)據(jù)

2010-01-14 10:18:24

VB.NET List

2009-09-04 10:27:28

Linux實用技巧linux操作系統(tǒng)linux

2021-01-19 05:44:53

危機(jī)面試技術(shù)

2015-04-03 10:11:57

Windows 10免費

2010-10-08 15:44:17

vim

2009-01-03 09:34:30

ASP.NET.NET性能優(yōu)化

2022-10-11 08:00:47

多線程開發(fā)技巧

2022-11-03 10:28:59

PandasSAC機(jī)制

2011-04-08 15:40:01

Oracle認(rèn)證

2024-05-17 08:52:43

SQL實用技巧行列轉(zhuǎn)換

2010-09-01 10:16:56

HTML 5
點贊
收藏

51CTO技術(shù)棧公眾號

精品一区欧美| 一本在线高清不卡dvd| 欧美日韩国产色| 欧美一区二区三区视频在线| 中文字幕一二三区在线观看| 亚洲欧美日韩精品一区二区| 欧美主播福利视频| 精品欧美日韩精品| 日韩av在线天堂网| 国产成人在线视频网站| 在线观看国产日韩| 欧美一区三区四区| av福利在线导航| 国产精品白丝在线| 国产又黄又大又粗视频| 国内精品国产三级国产a久久 | 啊啊啊国产视频| 国产精品系列在线播放| 一区二区三区久久网| 亚洲免费成人| 久久精品一区二区三区不卡免费视频| 香蕉久久网站| 亚洲a级在线播放观看| 99久久.com| 亚洲xxxxx电影| 18成人免费观看视频| 久久精品国产理论片免费| 国产日韩欧美高清免费| 欧美资源一区| 精品一区在线看| 自拍偷拍一区二区三区| 国产综合久久久久久久久久久久| 色综合666| 国产经典欧美精品| 免费看黄在线看| 中文字幕+乱码+中文字幕一区| 四虎成人在线视频| 调教一区二区| 久久av一区二区三区漫画| 国产精品网红福利| av无码精品一区二区三区| caoporn国产精品| aa在线免费观看| 国产精品你懂的在线| 色av一区二区三区| 亚洲国产精品一区二区www| 牛牛影视精品影视| 欧美日韩精品一区视频| 18aaaa精品欧美大片h| 日韩电影中文 亚洲精品乱码| 国产成人精品一区二区三区视频 | 日本欧美在线| 欧美在线视频免费观看| 99tv成人| 亚洲欧美日产图| 国产欧美一区二区精品忘忧草 | 国产精品欧美日韩| 亚洲一区不卡| 国产h视频在线播放| 亚洲伊人伊色伊影伊综合网| 亚洲国产欧美在线成人app| 亚洲欧洲日本精品| 蜜臀av国产精品久久久久| 欧美日韩一卡二卡| 日本免费在线视频观看| 成人性生交大片免费看午夜 | 国产v日产∨综合v精品视频| 无码精品a∨在线观看中文| 一区二区三区中文字幕精品精品| 九九热在线精品视频| 色天下一区二区三区| 91chinesevideo永久地址| 亚洲综合色婷婷在线观看| 久久精品99久久久香蕉| 人体久久天天| 91精品美女在线| 精品一区二区成人精品| 精品久久久久久无码中文野结衣 | 日韩美女av在线| 欧美黄色网页| 99久久综合狠狠综合久久止| 国产精品7m凸凹视频分类| 亚洲色图美腿丝袜| 亚洲精品动漫| 欧美一区二区三区爱爱| 日韩一区网站| 一本色道无码道dvd在线观看| 91精品久久久久久| jizz久久久久久| 成人动漫在线视频| 国产精品久久久久久久久搜平片 | 日本三级视频在线观看| 久久躁狠狠躁夜夜爽| 美女黄色成人网| 九色福利视频| 久久久精品国产亚洲| 免费亚洲婷婷| 色婷婷综合缴情免费观看| 日韩成人黄色av| 欧美激情麻豆| 偷偷要 色偷偷| 色综合男人天堂| 国产91精品精华液一区二区三区 | 97se亚洲国产一区二区三区| 欧美一区二区三区精美影视| 综合自拍亚洲综合图不卡区| 欧美大胆成人| 亚洲国产欧美日韩| 欧美高清视频在线高清观看mv色露露十八| 日韩高清成人在线| 日韩福利视频在线| 日韩在线免费视频| 精品一区二区综合| 日本大胆在线观看| 久久免费视频1| 欧美日韩国产在线观看| 欧美福利网址| 九九九伊在人线综合| 国产这里只有精品| 婷婷六月综合亚洲| 国产精品88久久久久久| 中文字幕精品影院| 97精品免费视频| 91香蕉视频污| 性欧美18xxxhd| 日韩精品免费在线视频| 手机福利在线| 国产精品视频免费在线| 亚洲精选免费视频| 亚洲国产一区在线| 日本伊人久久| 亚洲欧美99| 欧美一级二级三级| 国产一区二区在线免费| 一区二区欧美激情| 夜夜嗨av色一区二区不卡| 最近中文字幕2019免费| 91免费看片在线观看| 成人性生交大片免费看中文| 国产乱色国产精品免费视频| 亚洲黄色影院| 伊人久久亚洲热| 国产精品成久久久久| 在线欧美亚洲| 免费久久精品| 欧美黄色免费影院| 国产精品黄色av| 国产精品久久久久久久久久东京 | 精品一卡二卡三卡四卡日本乱码| 欧美精品tushy高清| 亚洲二区免费| 6699嫩草久久久精品影院| 男人添女人荫蒂免费视频| 欧美精品在线免费| 日韩欧美国产电影| 亚洲精品视频在线| 美女国产一区二区三区| 免费一区二区三区视频导航| 日本在线影院| 91在线品视觉盛宴免费| 波多野结衣家庭教师视频| 国产中文一区二区| 日本久久久久久久| 亚洲成成品网站| 在线成人av网站| 国产精品国模大尺度视频| 久久综合网色—综合色88| 99热免费精品在线观看| 国产美女撒尿一区二区| 男女羞羞网站| 日韩高清av| 久久青青草综合| 国产精自产拍久久久久久| 欧美国产精品va在线观看| 欧美日韩日日摸| 欧美精品久久一区二区三区| 福利视频导航一区| 中文字幕在线一区| 国产视频一区不卡| 97se亚洲国产综合自在线观| 国产不卡视频在线观看| 国产成a人无v码亚洲福利| 秋霞影院一区二区| 石原莉奈在线亚洲三区| 蜜臀91精品一区二区三区| 日韩av高清在线看片| av成人动漫| 免费大片在线观看| 嫩草av久久伊人妇女超级a| 久久国产精品国产精品| 日韩一级片播放| 成人综合色站| 韩国成人一区| 9a蜜桃久久久久久免费| 亚洲一区二区三区成人在线视频精品| 亚洲欧美激情在线视频| 91精品国产乱码久久蜜臀| 亚洲第一色在线| 日本国产一区二区三区| 亚洲在线不卡|