亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Git權威指南--穿錯歷史

2019-11-10 20:13:35
字體:
來源:轉載
供稿:網友

0.查看版本庫最新五次提交

$ git log --stat --oneline -5e2609ca 加結束標志 test_git.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)1f5c128 此處省略一萬字 test_git.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)306b97b 增加修改時間 test_git.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)0c30d3e 增加修改人 test_git.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)07cab98 新增測試文件 test_git.txt | 1 + 1 file changed, 1 insertion(+)將最近兩次提交合二為一,并把提交說明改為“增加修改時間......”

1.使用--soft 參數 調用重置命令,回到最近兩次提交之前

$ git reset --soft HEAD^^2.查看版本庫最新提交

$ git log -1commit 306b97b5dc629cb428d664c50f31f7815ad370f0Author: yinnana <nanayin@creditease.cn>Date:   Wed Feb 8 13:14:10 2017 +0800    增加修改時間3.執行提交操作,即完成最新兩個提交壓縮為一個提交的操作

$ git commit -m "增加修改時間......"[master 060a9f4] 增加修改時間...... 1 file changed, 3 insertions(+), 1 deletion(-)4.查看提交日志,驗證

$ git log --stat --oneline -5060a9f4 增加修改時間...... test_git.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)306b97b 增加修改時間 test_git.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)0c30d3e 增加修改人 test_git.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)07cab98 新增測試文件 test_git.txt | 1 + 1 file changed, 1 insertion(+)66a5a9b modify test.txt test.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)

3.回到未來

涉及到的:揀選操作、變基操作、交互式變基操作

3.1  去除提交 D

0)對提交進行標識

$ git tag F$ git tag E HEAD^$ git tag D HEAD~2$ git tag C HEAD~3$ git tag B HEAD~4$ git tag A HEAD~5通過日志,可以看到被標記的六個提交

$ git log --oneline --decorate -62cbfc1b (HEAD -> master, tag: F) 添加正文e869230 (tag: E) 編輯文本內容6080809 (tag: D) 刪除 注意事項!!f94e582 (tag: C) 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......

1)執行git checkout ,暫時將HEAD頭指針切換到C(切換過程中顯示出于非跟蹤狀態的警告)

$ git checkout CNote: checking out 'C'.You are in 'detached HEAD' state. You can look around, make experimentalchanges and commit them, and you can discard any commits you make in thisstate without impacting any branches by performing another checkout.If you want to create a new branch to retain commits you create, you maydo so (now or later) by using -b with the checkout command again. Example:  git checkout -b <new-branch-name>HEAD is now at f94e582... 注意事項1
$ git log --oneline --decorate -6f94e582 (HEAD, tag: C) 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......306b97b 增加修改時間0c30d3e 增加修改人07cab98 新增測試文件

2)執行揀選操作將E提交在當前HEAD上重放。

因為E和master^顯然指向同一指向,因此可以用如下語法。

$ git cherry-pick master^[detached HEAD d8862cb] 編輯文本內容 Date: Wed Feb 8 13:32:28 2017 +0800 1 file changed, 1 insertion(+), 1 deletion(-)

3)執行揀選操作將F提交在當前HEAD上重放

F和master指向同一指向

$ git cherry-pick master[detached HEAD 5883cdd] 添加正文 Date: Wed Feb 8 13:33:14 2017 +0800 1 file changed, 3 insertions(+)

4)通過日志看到D不存在了

$ git log --oneline --decorate -65883cdd (HEAD) 添加正文d8862cb 編輯文本內容f94e582 (tag: C) 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......306b97b 增加修改時間

5)通過日志可以看出,最近兩次提交的原始創作日期(AuthorDate)和提交日期(CommitDate)不同。

AuthorDate是揀選提交的原始更改時間,CommitDate是揀選操作的時間

$ git log --PRetty=fuller --decorate -3commit 5883cddb3b5d8f5a88aec7eb1ce1ff616a9606e4 (HEAD)Author:     yinnana <nanayin@creditease.cn>AuthorDate: Wed Feb 8 13:33:14 2017 +0800Commit:     yinnana <nanayin@creditease.cn>CommitDate: Wed Feb 8 14:00:40 2017 +0800    添加正文commit d8862cbb1913ced14ce4c9441204019965751567Author:     yinnana <nanayin@creditease.cn>AuthorDate: Wed Feb 8 13:32:28 2017 +0800Commit:     yinnana <nanayin@creditease.cn>CommitDate: Wed Feb 8 13:58:16 2017 +0800    編輯文本內容commit f94e582809f7cc05bf5e8c9950dd32ebc4ac6ac4 (tag: C)Author:     yinnana <nanayin@creditease.cn>AuthorDate: Wed Feb 8 13:30:53 2017 +0800Commit:     yinnana <nanayin@creditease.cn>CommitDate: Wed Feb 8 13:30:53 2017 +0800    注意事項16)將master分支重置到新的提交ID(5883cdd)上

下面的切換操作使用了reflog的語法,即HEAD@{1}相當于切換回master分支前的HEAD指向

$ git checkout masterWarning: you are leaving 2 commits behind, not connected toany of your branches:  5883cdd 添加正文  d8862cb 編輯文本內容If you want to keep them by creating a new branch, this may be a good timeto do so with: git branch <new-branch-name> 5883cdd
$ git reset --hard HEAD@{1}HEAD is now at 5883cdd 添加正文

比較

2cbfc1b (HEAD -> master, tag: F) 添加正文e869230 (tag: E) 編輯文本內容6080809 (tag: D) 刪除 注意事項!!f94e582 (tag: C) 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......后**********5883cdd (HEAD -> master) 添加正文d8862cb 編輯文本內容f94e582 (tag: C) 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......306b97b 增加修改時間

3.2 合并 提交CD

0)將master分支重新置回到提交F上
$ git checkout masterAlready on 'master'
$ git reset --hard FHEAD is now at 2cbfc1b 添加正文
$ git log --oneline --decorate -62cbfc1b (HEAD -> master, tag: F) 添加正文e869230 (tag: E) 編輯文本內容6080809 (tag: D) 刪除 注意事項!!f94e582 (tag: C) 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......1)暫時將HEAD頭指針切換到D
$ git checkout DNote: checking out 'D'.You are in 'detached HEAD' state. You can look around, make experimentalchanges and commit them, and you can discard any commits you make in thisstate without impacting any branches by performing another checkout.If you want to create a new branch to retain commits you create, you maydo so (now or later) by using -b with the checkout command again. Example:  git checkout -b <new-branch-name>HEAD is now at 6080809... 刪除 注意事項!!2)悔棋兩次,以便將C和D融合
$ git reset --soft HEAD^^
$ git log --oneline --decorate -6af8a1c5 (HEAD, tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......306b97b 增加修改時間0c30d3e 增加修改人07cab98 新增測試文件66a5a9b modify test.txt3)提交,重用提交C的提交說明
$ git commit -C C[detached HEAD 670829a] 注意事項1 Date: Wed Feb 8 13:30:53 2017 +0800 1 file changed, 1 insertion(+), 1 deletion(-)4)執行揀選操作將E提交在當前HEAD上重放
$ git cherry-pick E[detached HEAD 133d8cf] 編輯文本內容 Date: Wed Feb 8 13:32:28 2017 +0800 1 file changed, 1 insertion(+), 1 deletion(-)5)執行揀選操作將F提交在當前HEAD上重放
$ git cherry-pick F[detached HEAD 2642edf] 添加正文 Date: Wed Feb 8 13:33:14 2017 +0800 1 file changed, 3 insertions(+)6)通過日志看到提交C和D融合,所以在日志中看不到C的標簽
$ git log --oneline --decorate -62642edf (HEAD) 添加正文133d8cf 編輯文本內容670829a 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......306b97b 增加修改時間7)將master分支指向新的提交ID(2642edf)下面的切換操作使用了reflog的語法,即HEAD@{1}相當于切換回master分支前的HEAD指向
$ git checkout masterWarning: you are leaving 3 commits behind, not connected toany of your branches:  2642edf 添加正文  133d8cf 編輯文本內容  670829a 注意事項1If you want to keep them by creating a new branch, this may be a good timeto do so with: git branch <new-branch-name> 2642edfSwitched to branch 'master'
$ git reset --hard HEAD@{1}HEAD is now at 2642edf 添加正文
$ git log --oneline --decorate -62642edf (HEAD -> master) 添加正文133d8cf 編輯文本內容670829a 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......306b97b 增加修改時間

3.3 rebase 變基操作

0)將master分支重新置回到提交F上
$ git checkout masterAlready on 'master'
$ git reset --hard FHEAD is now at 2cbfc1b 添加正文git rebase 可以實現將指定范圍的提交 嫁接到另一個提交之上命令格式:用法1:git rebase --onto <newbase><since> <till>用法2:git rebase --onto <newbase><since>用法3:git rebase <since><till>用法4:git rebase  <since>用法5:git rebase  -i ...用法6:git rebase --continue用法7:git rebase --skip用法8:git rebase --abort

用法6是在變基遇到沖突而暫停的情況下,先完成沖突解決(添加到暫存區,不提交),然后在恢復變基操作的時候使用該命令。

用法7是在變基遇到沖突而暫停的情況下,跳過當前提交的時候使用。

用法8是在變基遇到沖突而暫停的情況下,終止變基操作,回到之前的分支時候使用。

用法1為例,其用法如下:

git rebase --onto <newbase><since> <till>

1.首先會執行 git checkout 切換到 <till>

如果<till>指向 的不是一個分支(如master),則變基操作是在 detached HEAD(分離頭指針)狀態進行的,

當變基結束后,像上述3.1那樣,對master分支執行重置以實現變基結果在分支中生效。

2.將<since>...<till>所標識的提交范圍寫到一個臨時文件中

包括<till>的所有歷史提交排除<since>及<since>的歷史提交后形成的版本范圍

3.將當前分支強制重置(git reset --hard)到<newbase>

相當于執行git reset --hard <newbase>

4.從保存在臨時文件中的提交列表中,將提交逐一按順序重新提交到重置之后的分支上

5.如果遇到提交已經在分支中包含,則跳過該提交

6.如果在提交過程中遇到沖突,則變基過程暫停。

用戶解決沖突后,執行 git rebase --continue 繼續變基操作,

或者執行 git rebase --skip跳過此提交,

或執行 git rebase --abort就此終止變基操作切換到當前變基前的分支上

很顯然為了執行將E和F提交跳過提交D,嫁接到提交C上,可以執行如下變基命令:

git rebase --onto C E^ F

因為 E^ 等價于D,并且F和當前HEAD的指向相同,因此可以這樣:

git rebase --onto C D

$ git status -s -b## master
$ git log --oneline --decorate -62cbfc1b (HEAD -> master, tag: F) 添加正文e869230 (tag: E) 編輯文本內容6080809 (tag: D) 刪除 注意事項?。94e582 (tag: C) 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产中文日韩欧美| 精品激情国产视频| 欧美黑人极品猛少妇色xxxxx| 欧美一级大片在线观看| 色青青草原桃花久久综合| 欧美激情日韩图片| 日韩视频永久免费观看| 精品爽片免费看久久| 国产精品一区二区av影院萌芽| 国内精品美女av在线播放| zzijzzij亚洲日本成熟少妇| 欧美精品成人在线| 欧美成人精品在线播放| 国产欧亚日韩视频| 一本一道久久a久久精品逆3p| 日韩视频免费大全中文字幕| 国产亚洲精品久久久久久| 国产精品成av人在线视午夜片| 奇米一区二区三区四区久久| 91高清免费视频| 日韩美女视频免费在线观看| 欧洲成人免费aa| 国产精品入口免费视频一| 韩国三级日本三级少妇99| 欧洲中文字幕国产精品| 欧美贵妇videos办公室| 久久精品国产亚洲一区二区| 亚洲欧美国内爽妇网| 深夜精品寂寞黄网站在线观看| 欧美激情欧美激情在线五月| 91久久嫩草影院一区二区| 国产精品免费一区二区三区都可以| 久久久久久久久久久免费精品| 久久久久久久国产精品| 精品五月天久久| 久久精品这里热有精品| 欧美激情精品久久久久久| 91精品国产91久久久久久吃药| 日韩网站在线观看| 亚洲美女av在线播放| 91精品视频免费观看| 久久久久久久97| 久久精品福利视频| 91精品国产乱码久久久久久久久| 一区二区福利视频| 久久视频免费观看| 久久久久久亚洲精品不卡| 亚洲图片欧美午夜| 俺去啦;欧美日韩| 欧美影院成年免费版| 成人av番号网| 亚洲国产成人精品女人久久久| 日韩精品电影网| 91嫩草在线视频| 欧美日韩999| 91亚洲永久免费精品| 久久久国产一区二区三区| 亚洲aa中文字幕| 欧美中文在线免费| 国产精品日韩一区| 俺去啦;欧美日韩| 成人黄色在线免费| 国产精品美女在线观看| 国产欧美婷婷中文| 久久精品国产一区| 欧美资源在线观看| 在线观看日韩欧美| 日本韩国在线不卡| 51色欧美片视频在线观看| 日韩av有码在线| 国产精品久久久久一区二区| 久久久国产精彩视频美女艺术照福利| 久久影视电视剧凤归四时歌| 国产成人精品在线视频| 国产区精品在线观看| 国产精品第七影院| 久久久久北条麻妃免费看| 欧美在线视频观看免费网站| 欧美电影在线观看网站| 久久综合伊人77777| 欧美最猛性xxxxx(亚洲精品)| 亚洲最大福利视频网站| 国产亚洲精品久久久久动| 国内外成人免费激情在线视频网站| 亚洲欧美一区二区激情| 美女视频久久黄| 久久久免费高清电视剧观看| 亚洲欧美日本另类| 国产亚洲欧美另类中文| 日韩资源在线观看| 日韩av男人的天堂| 日韩av有码在线| www.欧美三级电影.com| 最近2019好看的中文字幕免费| 91在线观看免费观看| 91精品久久久久久久久久久久久久| 国产精品丝袜久久久久久不卡| 精品国产电影一区| 在线观看国产成人av片| 在线视频精品一| 国产精品免费视频xxxx| 成人a级免费视频| 国产午夜精品视频免费不卡69堂| 国产精品久久久久久久久免费看| 在线精品视频视频中文字幕| 成人黄色免费片| 欧美精品少妇videofree| 日韩久久免费视频| 亚洲国产天堂久久综合| 伦伦影院午夜日韩欧美限制| 亚洲电影在线看| 日韩视频在线观看免费| 久久久久久久久久久91| 日本久久久久久| 97视频在线免费观看| 欧美日韩中文在线观看| 成人免费视频97| 亚洲精品永久免费精品| 欧美日韩国产在线播放| 亚洲最新视频在线| 欧美xxxx做受欧美.88| 91影院在线免费观看视频| 在线观看91久久久久久| 97视频在线观看播放| 美女精品视频一区| 欧美夫妻性视频| 欧美电影在线免费观看网站| 91在线高清视频| 国产亚洲精品久久久久久777| 精品一区二区三区电影| 亚洲欧美国产精品久久久久久久| 成人午夜激情免费视频| 日韩午夜在线视频| 欧美日韩福利视频| 亚洲最大的网站| 亚洲成人a**站| 中文字幕欧美日韩在线| 日韩一区av在线| 97精品视频在线| 国产亚洲精品美女久久久| 国产精品吊钟奶在线| 91亚洲精品久久久久久久久久久久| 裸体女人亚洲精品一区| 国产色婷婷国产综合在线理论片a| 国产视频在线观看一区二区| 国产色综合天天综合网| 色综合影院在线| 免费97视频在线精品国自产拍| 欧美日韩国产成人高清视频| 91香蕉亚洲精品| 日韩在线www| 国产+成+人+亚洲欧洲| 日韩精品久久久久久福利| 超碰精品一区二区三区乱码| 亚洲精品美女在线| 亚洲第一国产精品| 亚洲bt天天射| 日本亚洲精品在线观看| 黑人与娇小精品av专区| 亚洲人成亚洲人成在线观看| 国产欧美一区二区白浆黑人| 亚洲国产一区二区三区四区| 亚洲精品一区中文字幕乱码| 国产精品成人av性教育|