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

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

Git權威指南--穿錯歷史

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

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) 刪除 注意事項?。94e582 (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) 增加修改時間......


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品网红直播| 国产精品久久久久久av福利| 欧美猛男性生活免费| 日韩在线免费av| 2019最新中文字幕| 欧美午夜宅男影院在线观看| 亚洲成年人在线| 日韩一区二区av| 精品国产欧美一区二区三区成人| 国产精品久久久久久搜索| 欧美成人在线网站| 精品一区精品二区| 91在线免费看网站| 欧美精品一区二区三区国产精品| 国产亚洲人成a一在线v站| 国产精品美乳一区二区免费| 色婷婷亚洲mv天堂mv在影片| 久久中文精品视频| 欧美大片va欧美在线播放| 国产精品稀缺呦系列在线| 亚洲美女在线看| 亚洲人成亚洲人成在线观看| 精品久久久久久久久久久久| 国产激情视频一区| 亚洲国产精品久久久久| 视频在线一区二区| 欧美激情一区二区三级高清视频| 日本成人精品在线| 亚洲91精品在线观看| 国产91精品高潮白浆喷水| 国产精品国产福利国产秒拍| 在线播放日韩欧美| 精品国产乱码久久久久久天美| 久久人91精品久久久久久不卡| 国产精品久久久久久久久久三级| 韩国三级日本三级少妇99| 欧美黄色小视频| 色777狠狠综合秋免鲁丝| 亚洲第一色中文字幕| 国产成人短视频| 国产日韩综合一区二区性色av| 国产一区二区香蕉| 亚洲欧美中文字幕在线一区| 欧美性少妇18aaaa视频| 欧美性xxxxhd| 国产一区二区三区视频免费| 欧美日韩裸体免费视频| 欧美区在线播放| 欧美日韩国产成人在线观看| 日韩中文有码在线视频| 96pao国产成视频永久免费| 亚洲精品国精品久久99热| 91视频免费网站| 久久免费视频网站| 国产成人精品久久二区二区91| 成人欧美一区二区三区在线湿哒哒| 欧美激情a在线| 日韩亚洲国产中文字幕| 亚洲欧美福利视频| 一区二区三区精品99久久| 欧美尺度大的性做爰视频| 精品亚洲一区二区三区四区五区| 国产精品丝袜高跟| 国产欧美一区二区| 亚洲一品av免费观看| 日韩av不卡电影| 久久av在线播放| 国产成人免费av电影| 成人免费看吃奶视频网站| 日韩在线观看免费| 亚洲第一区第二区| 两个人的视频www国产精品| 69**夜色精品国产69乱| 久久精品国产精品| 欧美另类99xxxxx| 日韩亚洲一区二区| 亚洲人成人99网站| 亚洲福利影片在线| 亚洲在线www| 日韩欧美在线视频观看| 日韩在线精品一区| 这里只有精品在线观看| 韩国19禁主播vip福利视频| 国内精品400部情侣激情| 91av在线网站| 亚洲一区二区在线播放| 午夜精品久久久久久久99黑人| 色爱精品视频一区| 精品激情国产视频| 日韩久久免费电影| 欧美黑人极品猛少妇色xxxxx| 欧美黄色片视频| 欧美精品性视频| 日韩的一区二区| 九九久久久久久久久激情| 亚洲男人第一网站| 国产精品青草久久久久福利99| 亚洲电影免费观看高清完整版| 日韩精品欧美国产精品忘忧草| 久久精品国产亚洲7777| 国内精品小视频| 国外色69视频在线观看| 国产精品成人国产乱一区| 9.1国产丝袜在线观看| 午夜精品福利电影| 亚洲精品第一国产综合精品| 上原亚衣av一区二区三区| 国产精品久久久久91| 亚洲国产欧美自拍| 亚洲香蕉伊综合在人在线视看| 国产精品久久久av| 国产成人久久久精品一区| 欧美日韩国产一区二区三区| 成人黄色激情网| 中文字幕欧美视频在线| 亚洲女成人图区| 色视频www在线播放国产成人| 日韩av在线免费看| 黑人精品xxx一区一二区| 精品一区二区三区三区| 欧美日韩国产综合新一区| 亚洲国产成人精品一区二区| 欧美限制级电影在线观看| 日韩高清a**址| 欧美性生交大片免费| 亚洲视频在线免费观看| 丝袜情趣国产精品| 精品动漫一区二区| 欧美在线视频免费观看| 久久久综合av| 81精品国产乱码久久久久久| 国产精品黄页免费高清在线观看| 欧美性视频精品| 久久影院免费观看| 久久久精品999| 欧美大片在线影院| 国产精品一区二区性色av| 久久久久久国产精品美女| 国产精品久久久精品| 中文字幕亚洲激情| 欧美激情精品久久久久久免费印度| 一区二区亚洲欧洲国产日韩| 欧美中文字幕视频在线观看| 午夜美女久久久久爽久久| 91高潮精品免费porn| 欧美成人精品一区二区| 久久久精品在线| 久久综合国产精品台湾中文娱乐网| 深夜精品寂寞黄网站在线观看| 欧美激情精品久久久久久蜜臀| 精品久久久久久国产91| 久久成人精品电影| 欧美日韩成人在线视频| 国产91精品久久久久久久| 一本色道久久88亚洲综合88| 日韩成人黄色av| 国产精品久久久久久久av大片| 国产噜噜噜噜久久久久久久久| 国产成人精品优优av| 国产精品久久久久久久久影视| 亚洲免费一在线| 伊人久久大香线蕉av一区二区| 亚洲无亚洲人成网站77777| 国产成人av在线|