国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Git權(quán)威指南--穿錯(cuò)歷史

2019-11-10 20:13:35
字體:
供稿:網(wǎng)友

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

$ git log --stat --oneline -5e2609ca 加結(jié)束標(biāo)志 test_git.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)1f5c128 此處省略一萬字 test_git.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)306b97b 增加修改時(shí)間 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(+)將最近兩次提交合二為一,并把提交說明改為“增加修改時(shí)間......”

1.使用--soft 參數(shù) 調(diào)用重置命令,回到最近兩次提交之前

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

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

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

$ git log --stat --oneline -5060a9f4 增加修改時(shí)間...... test_git.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)306b97b 增加修改時(shí)間 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)對提交進(jìn)行標(biāo)識(shí)

$ 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通過日志,可以看到被標(biāo)記的六個(gè)提交

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

1)執(zhí)行g(shù)it checkout ,暫時(shí)將HEAD頭指針切換到C(切換過程中顯示出于非跟蹤狀態(tài)的警告)

$ 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... 注意事項(xiàng)1
$ git log --oneline --decorate -6f94e582 (HEAD, tag: C) 注意事項(xiàng)1af8a1c5 (tag: B) 添加 注意事項(xiàng)060a9f4 (tag: A) 增加修改時(shí)間......306b97b 增加修改時(shí)間0c30d3e 增加修改人07cab98 新增測試文件

2)執(zhí)行揀選操作將E提交在當(dāng)前HEAD上重放。

因?yàn)镋和master^顯然指向同一指向,因此可以用如下語法。

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

3)執(zhí)行揀選操作將F提交在當(dāng)前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 編輯文本內(nèi)容f94e582 (tag: C) 注意事項(xiàng)1af8a1c5 (tag: B) 添加 注意事項(xiàng)060a9f4 (tag: A) 增加修改時(shí)間......306b97b 增加修改時(shí)間

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

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

$ 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    編輯文本內(nèi)容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    注意事項(xiàng)16)將master分支重置到新的提交ID(5883cdd)上

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

$ git checkout masterWarning: you are leaving 2 commits behind, not connected toany of your branches:  5883cdd 添加正文  d8862cb 編輯文本內(nèi)容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) 編輯文本內(nèi)容6080809 (tag: D) 刪除 注意事項(xiàng)?。94e582 (tag: C) 注意事項(xiàng)1af8a1c5 (tag: B) 添加 注意事項(xiàng)060a9f4 (tag: A) 增加修改時(shí)間......后**********5883cdd (HEAD -> master) 添加正文d8862cb 編輯文本內(nèi)容f94e582 (tag: C) 注意事項(xiàng)1af8a1c5 (tag: B) 添加 注意事項(xiàng)060a9f4 (tag: A) 增加修改時(shí)間......306b97b 增加修改時(shí)間

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) 編輯文本內(nèi)容6080809 (tag: D) 刪除 注意事項(xiàng)!!f94e582 (tag: C) 注意事項(xiàng)1af8a1c5 (tag: B) 添加 注意事項(xiàng)060a9f4 (tag: A) 增加修改時(shí)間......1)暫時(shí)將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... 刪除 注意事項(xiàng)??!2)悔棋兩次,以便將C和D融合
$ git reset --soft HEAD^^
$ git log --oneline --decorate -6af8a1c5 (HEAD, tag: B) 添加 注意事項(xiàng)060a9f4 (tag: A) 增加修改時(shí)間......306b97b 增加修改時(shí)間0c30d3e 增加修改人07cab98 新增測試文件66a5a9b modify test.txt3)提交,重用提交C的提交說明
$ git commit -C C[detached HEAD 670829a] 注意事項(xiàng)1 Date: Wed Feb 8 13:30:53 2017 +0800 1 file changed, 1 insertion(+), 1 deletion(-)4)執(zhí)行揀選操作將E提交在當(dāng)前HEAD上重放
$ git cherry-pick E[detached HEAD 133d8cf] 編輯文本內(nèi)容 Date: Wed Feb 8 13:32:28 2017 +0800 1 file changed, 1 insertion(+), 1 deletion(-)5)執(zhí)行揀選操作將F提交在當(dāng)前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的標(biāo)簽
$ git log --oneline --decorate -62642edf (HEAD) 添加正文133d8cf 編輯文本內(nèi)容670829a 注意事項(xiàng)1af8a1c5 (tag: B) 添加 注意事項(xiàng)060a9f4 (tag: A) 增加修改時(shí)間......306b97b 增加修改時(shí)間7)將master分支指向新的提交ID(2642edf)下面的切換操作使用了reflog的語法,即HEAD@{1}相當(dāng)于切換回master分支前的HEAD指向
$ git checkout masterWarning: you are leaving 3 commits behind, not connected toany of your branches:  2642edf 添加正文  133d8cf 編輯文本內(nèi)容  670829a 注意事項(xiàng)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 編輯文本內(nèi)容670829a 注意事項(xiàng)1af8a1c5 (tag: B) 添加 注意事項(xiàng)060a9f4 (tag: A) 增加修改時(shí)間......306b97b 增加修改時(shí)間

3.3 rebase 變基操作

0)將master分支重新置回到提交F上
$ git checkout masterAlready on 'master'
$ git reset --hard FHEAD is now at 2cbfc1b 添加正文git rebase 可以實(shí)現(xiàn)將指定范圍的提交 嫁接到另一個(gè)提交之上命令格式:用法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是在變基遇到?jīng)_突而暫停的情況下,先完成沖突解決(添加到暫存區(qū),不提交),然后在恢復(fù)變基操作的時(shí)候使用該命令。

用法7是在變基遇到?jīng)_突而暫停的情況下,跳過當(dāng)前提交的時(shí)候使用。

用法8是在變基遇到?jīng)_突而暫停的情況下,終止變基操作,回到之前的分支時(shí)候使用。

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

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

1.首先會(huì)執(zhí)行 git checkout 切換到 <till>

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

當(dāng)變基結(jié)束后,像上述3.1那樣,對master分支執(zhí)行重置以實(shí)現(xiàn)變基結(jié)果在分支中生效。

2.將<since>...<till>所標(biāo)識(shí)的提交范圍寫到一個(gè)臨時(shí)文件中

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

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

相當(dāng)于執(zhí)行g(shù)it reset --hard <newbase>

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

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

6.如果在提交過程中遇到?jīng)_突,則變基過程暫停。

用戶解決沖突后,執(zhí)行 git rebase --continue 繼續(xù)變基操作,

或者執(zhí)行 git rebase --skip跳過此提交,

或執(zhí)行 git rebase --abort就此終止變基操作切換到當(dāng)前變基前的分支上

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

git rebase --onto C E^ F

因?yàn)?nbsp;E^ 等價(jià)于D,并且F和當(dāng)前HEAD的指向相同,因此可以這樣:

git rebase --onto C D

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 同德县| 龙游县| 饶河县| 汉源县| 呼图壁县| 都昌县| 余江县| 富平县| 陆河县| 锡林郭勒盟| 思南县| 固安县| 惠安县| 鹤壁市| 横峰县| 岐山县| 青龙| 墨玉县| 岑溪市| 利辛县| 和静县| 高淳县| 西畴县| 扎鲁特旗| 原阳县| 名山县| 广东省| 德钦县| 榆林市| 华阴市| 科尔| 阆中市| 常德市| 旺苍县| 博兴县| 寿宁县| 资兴市| 临清市| 黄梅县| 遂宁市| 云安县|