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

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

Git權威指南--穿錯歷史

2019-11-10 19:47:21
字體:
來源:轉載
供稿:網友

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) 刪除 注意事項!!f94e582 (tag: C) 注意事項1af8a1c5 (tag: B) 添加 注意事項060a9f4 (tag: A) 增加修改時間......


上一篇:Database,Uva1592

下一篇:集合面試

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品中文字幕有码专区| 81精品国产乱码久久久久久| 精品成人av一区| 97在线观看免费| 欧美精品日韩www.p站| 91在线免费看网站| 国模吧一区二区三区| 久久久久久美女| 欧洲亚洲免费在线| 亚洲视频欧美视频| 中文字幕亚洲情99在线| 免费97视频在线精品国自产拍| 欧美亚洲国产成人精品| 91九色视频在线| 日韩av电影在线免费播放| 综合网中文字幕| 亚洲专区中文字幕| 久久精品免费电影| 欧美极品少妇xxxxⅹ喷水| 国产精品主播视频| 欧美黑人巨大精品一区二区| 久久夜精品va视频免费观看| 欧美理论电影网| 欧美精品一区二区免费| 亚洲高清免费观看高清完整版| 日韩精品亚洲元码| 日韩美女在线观看| 久久综合九色九九| 欧美日本精品在线| 国产精品大陆在线观看| 亚洲日本欧美日韩高观看| 91超碰中文字幕久久精品| 日韩av在线免费观看一区| 成人免费视频网| 亚洲在线免费看| 欧美性videos高清精品| 国产一区二区视频在线观看| 亚洲午夜小视频| 欧美视频专区一二在线观看| 日韩精品中文字| 亚洲一品av免费观看| 精品国产一区二区三区久久| 国产精品色午夜在线观看| 日韩av高清不卡| 亚洲激情电影中文字幕| 亚洲精品白浆高清久久久久久| 国产乱人伦真实精品视频| 亚洲国产精品yw在线观看| 国语自产在线不卡| 91老司机在线| 亚洲一区二区在线| 日韩av大片在线| 欧美噜噜久久久xxx| 九九久久久久99精品| 欧美高清性猛交| 欧美另类极品videosbestfree| 91免费精品视频| 尤物yw午夜国产精品视频| 亚洲第一福利网| 日韩免费在线观看视频| 国产亚洲美女精品久久久| 久久久午夜视频| 欧美激情欧美激情| 美女久久久久久久| 久久天堂电影网| 最近2019年手机中文字幕| 欧美性一区二区三区| 日韩亚洲综合在线| 欧美日韩免费观看中文| www.久久撸.com| 日韩经典一区二区三区| 国产成人avxxxxx在线看| 国外成人免费在线播放| 亚洲欧美中文日韩在线v日本| 亚洲精品国偷自产在线99热| 国产精品欧美亚洲777777| 久久成人国产精品| 国产一级揄自揄精品视频| 日韩电影免费观看中文字幕| 91免费看视频.| 日韩中文娱乐网| 亚洲一区二区三| 国产精品久久久久久av福利软件| 亚洲国产成人久久综合| 亚洲风情亚aⅴ在线发布| 欧美日韩国产中文字幕| 国产精品久久一区| 中文字幕不卡av| 欧美做受高潮电影o| 欧美激情极品视频| 91久久中文字幕| 国产亚洲日本欧美韩国| 91亚洲va在线va天堂va国| 尤物yw午夜国产精品视频| 亚洲激情视频在线观看| 亚洲精品www久久久久久广东| 日韩欧美国产一区二区| 日韩av在线最新| 亚洲美女又黄又爽在线观看| 成人综合国产精品| 日韩在线观看网站| 日本精品va在线观看| 久久青草精品视频免费观看| 日韩性生活视频| 欧美另类老肥妇| 欧美激情在线视频二区| 亚洲偷熟乱区亚洲香蕉av| 97精品国产97久久久久久| 午夜精品在线视频| 国产成人综合一区二区三区| 欧美国产日韩一区二区| 国产精品欧美激情在线播放| 亚洲激情在线视频| 日韩精品亚洲精品| 亚洲风情亚aⅴ在线发布| 国产精品吊钟奶在线| 91chinesevideo永久地址| 国产午夜精品美女视频明星a级| 国产啪精品视频网站| 国产又爽又黄的激情精品视频| 免费不卡欧美自拍视频| 精品国产91乱高清在线观看| 久久久国产精彩视频美女艺术照福利| 亚洲欧美日韩中文在线制服| 国产亚洲人成网站在线观看| 91中文字幕一区| 亚洲第一页中文字幕| 欧美视频13p| yw.139尤物在线精品视频| 国产性色av一区二区| 日韩免费在线播放| 免费不卡欧美自拍视频| 亚洲精品久久久久中文字幕二区| 亚洲一区二区三区毛片| 国产精品视频在线观看| 欧美高清在线视频观看不卡| 97人人爽人人喊人人模波多| 亚洲人成电影网站色xx| 欧美日韩国产麻豆| 国产精品福利在线观看| 最近更新的2019中文字幕| 国产精品ⅴa在线观看h| 97人人爽人人喊人人模波多| 欧美在线观看网址综合| 青青精品视频播放| 久久久久亚洲精品国产| 久久天堂av综合合色| 国内揄拍国内精品少妇国语| 日日噜噜噜夜夜爽亚洲精品| 国产剧情日韩欧美| 日韩欧美中文在线| 在线播放国产精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 日韩成人在线电影网| 日韩网站免费观看| 国产精品成久久久久三级| 欧美另类69精品久久久久9999| 国产深夜精品福利| 国产主播喷水一区二区| 国产亚洲欧洲高清| 精品久久久久久国产91| 亚洲欧美变态国产另类| 韩曰欧美视频免费观看| 国产精品大陆在线观看|