Git應(yīng)用進(jìn)階(二)

Git進(jìn)階(二)

威海網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。

===============================================================================

概述:

===============================================================================

Git 分支

1.分支命名法則及常用命令

master(主干分支) 是指向指定分支的最近一次提交;

dev 是指向dev分支的最近一次提交;

不管有多少分支,活動(dòng)分支只能有一個(gè);

head 一定是指向某個(gè)分支的,head表示? 映射了當(dāng)前工作目錄當(dāng)中所反映的最近一次提交;即 head始終指向活動(dòng)分支的最近一次提交;

分支命名法則

  • 可以使用"/",但不能使用"/"結(jié)尾;

  • 不能以 "-" 開頭;

  • 以位于 "/" 后面的組件,不能以 "." 開頭;

  • 不能使用連續(xù)的 "...";

  • 不能使用空白字符" ";

  • 不能使用"^","~","?","*","[" 等符號(hào)

必須唯一,分支的名字始終指向目標(biāo)分支的最近一次提交;

git branch :列出,創(chuàng)建及刪除分支

  • git branch BRANCH_NAME [START_COMMIT]

  • git branch? -d??BRANCH_NAME? 刪除分支

git show-branch:查看分支及其相關(guān)的提交

git? checkout?

  • git? checkout? <branch> 檢出分支

演示1:git 創(chuàng)建分支

[root@node1?test]#?ls
first.sh??INSTALL??readmin??subdir
[root@node1?test]#?git?branch?--list
*?master???#?帶"*"表示當(dāng)前分支
[root@node1?test]#?git?log
commit?3c0b6864718ec8f8aebb5b66fbfd65b757504169?(HEAD?->?master)
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Mon?Aug?19?23:06:00?2019?+0800

????v0.0.2

commit?b0e9cc432d3adb683963686a2eec197129ef48b8
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Tue?Jul?16?23:26:38?2019?+0800

????v0.0.1
[root@node1?test]#?git?status
On?branch?master
Changes?to?be?committed:
??(use?"git?reset?HEAD?<file>..."?to?unstage)

	new?file:???first.sh

Untracked?files:
??(use?"git?add?<file>..."?to?include?in?what?will?be?committed)

	readmin

[root@node1?test]#?git?commit?-m?'v1.0'
[master?13051f2]?v1.0
?1?file?changed,?4?insertions(+)
?create?mode?100644?first.sh

[root@node1?test]#?git?status
On?branch?master
Untracked?files:
??(use?"git?add?<file>..."?to?include?in?what?will?be?committed)

	readmin

nothing?added?to?commit?but?untracked?files?present?(use?"git?add"?to?track)

[root@node1?test]#?git?ls-files?-s
100644?b6a56662e48ee60ef2d65fd2b00dd555e758b7fa?0	INSTALL
100644?1809e7ac283fd186a50d97b1462d2d27396f9b42?0	first.sh
100644?a4ec1ecd97368714ba8b5c8d002b1a24647bb7ec?0	subdir/1.txt

[root@node1?test]#?git?add?readmin
[root@node1?test]#?git?ls-files?-s
100644?b6a56662e48ee60ef2d65fd2b00dd555e758b7fa?0	INSTALL
100644?1809e7ac283fd186a50d97b1462d2d27396f9b42?0	first.sh
100644?8bf9463e75dfb20077fafb8358ee3cb471dd7900?0	readmin
100644?a4ec1ecd97368714ba8b5c8d002b1a24647bb7ec?0	subdir/1.txt

[root@node1?test]#?git?commit?-m?'v1.1'
[master?e522483]?v1.1
?1?file?changed,?1?insertion(+)
?create?mode?100644?readmin

[root@node1?test]#?git?log
commit?e522483313931f3dbc914ff6e132f5cd205f7d62?(HEAD?->?master)
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Wed?Aug?21?22:48:52?2019?+0800

????v1.1

commit?13051f2788b17981a72f641e6b30bc8bea0f2e38
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Wed?Aug?21?22:46:23?2019?+0800

????v1.0

commit?3c0b6864718ec8f8aebb5b66fbfd65b757504169
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Mon?Aug?19?23:06:00?2019?+0800

????v0.0.2

commit?b0e9cc432d3adb683963686a2eec197129ef48b8
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Tue?Jul?16?23:26:38?2019?+0800

????v0.0.1
[root@node1?test]#?git?branch
*?master

#?指明1.0版本創(chuàng)建分支
[root@node1?test]#?git?branch?dev?13051f
[root@node1?test]#?git?branch
??dev
*?master

[root@node1?test]#?git?branch?bug/first
[root@node1?test]#?git?branch
??bug/first
??dev
*?master

演示2:git show-branch? 查看分支

#??git?show-branch?查看具體的分支信息
[root@node1?test]#?git?show-branch
!?[bug/first]?v1.1
?!?[dev]?v1.0
??*?[master]?v1.1
---
+?*?[bug/first]?v1.1
++*?[dev]?v1.0


[root@node1?test]#?git?show-branch?dev
[dev]?v1.0
[root@node1?test]#?
[root@node1?test]#?git?show-branch?bug/first
[bug/first]?v1.1

演示3:git checkout BRANCH_NAME? 切換分支

[root@node1?taotao]#?git?checkout?dev??#切換分支
Switched?to?branch?'dev'
[root@node1?taotao]#?
[root@node1?taotao]#?git?branch?--list?
??bug/first
*?dev
??master
[root@node1?taotao]#?
[root@node1?taotao]#?git?show-branch
!?[bug/first]?v1.1
?*?[dev]?v1.0
??!?[master]?v1.1
---
+?+?[bug/first]?v1.1
+*+?[dev]?v1.0
[root@node1?taotao]#?
[root@node1?taotao]#?
[root@node1?taotao]#?git?log
commit?5d4298d6fdcbb6276e69f002e7148210124e52d9?(HEAD?->?dev)
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Wed?Oct?9?22:04:34?2019?+0800

????v1.0

commit?b9182448b3e9503ce5fd09edb5b378f612209d01
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Wed?Oct?9?21:05:05?2019?+0800

????v0.0.2

commit?1b5d8e0fea57e85045c8d98f12e379fdc73138bc
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Tue?Oct?8?21:24:06?2019?+0800

????v0.0.1
????
#############################
[root@node1?taotao]#?cat?first.sh
#!/bin/bash
echo?"hello?world"
echo?"new?date"
[root@node1?taotao]#?
[root@node1?taotao]#?git?status
On?branch?dev
Changes?not?staged?for?commit:
??(use?"git?add?<file>..."?to?update?what?will?be?committed)
??(use?"git?checkout?--?<file>..."?to?discard?changes?in?working?directory)

	modified:???first.sh

no?changes?added?to?commit?(use?"git?add"?and/or?"git?commit?-a")

[root@node1?taotao]#?git?add?first.sh
[root@node1?taotao]#?git?commit?-m?"v1.1-dev"??
[dev?587719d]?v1.1-dev
?1?file?changed,?1?insertion(+)
?
[root@node1?taotao]#?git?log
commit?587719dd3920429904c2b2a24637f20ecd20c4e0?(HEAD?->?dev)
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Fri?Oct?11?22:34:41?2019?+0800

????v1.1-dev

commit?5d4298d6fdcbb6276e69f002e7148210124e52d9
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Wed?Oct?9?22:04:34?2019?+0800

????v1.0

commit?b9182448b3e9503ce5fd09edb5b378f612209d01
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Wed?Oct?9?21:05:05?2019?+0800

????v0.0.2

commit?1b5d8e0fea57e85045c8d98f12e379fdc73138bc
Author:?watao?<wangzhangtao@pachiratech.com>
Date:???Tue?Oct?8?21:24:06?2019?+0800

????v0.0.1
????
[root@node1?taotao]#?cat?first.sh
#!/bin/bash
echo?"hello?world"
echo?"new?date"

#?切回主分支,再次查看first.sh,發(fā)現(xiàn)還是原來的,因?yàn)閙aster分支并沒有提交新的操作
[root@node1?taotao]#?git?checkout?master
Switched?to?branch?'master'
[root@node1?taotao]#?
[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"

#?不被追蹤的文件在所有分支上都可以看見
[root@node1?taotao]#?git?checkout?dev
Switched?to?branch?'dev'
[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
[root@node1?taotao]#?
[root@node1?taotao]#?vim?second.sh
[root@node1?taotao]#?cat?second.sh?
#!/bin/bash
echo?"second.sh"
[root@node1?taotao]#?ls
first.sh??INSTALL??second.sh??subdir
[root@node1?taotao]#?
[root@node1?taotao]#?git?checkout?master
Switched?to?branch?'master'
[root@node1?taotao]#?
[root@node1?taotao]#?ls
first.sh??INSTALL??readmin??second.sh??subdir
[root@node1?taotao]#?cat?second.sh?
#!/bin/bash
echo?"second.sh"

#?添加到索引發(fā)現(xiàn)在所有分支上依然可以看見
[root@node1?taotao]#?git?add?second.sh
[root@node1?taotao]#?git?status
On?branch?master
Changes?to?be?committed:
??(use?"git?reset?HEAD?<file>..."?to?unstage)

	new?file:???second.sh

[root@node1?taotao]#?git?checkout?dev
A	second.sh
Switched?to?branch?'dev'
[root@node1?taotao]#?git?status
On?branch?dev
Changes?to?be?committed:
??(use?"git?reset?HEAD?<file>..."?to?unstage)

	new?file:???second.sh
	
#在dev分支上提交
[root@node1?taotao]#?git?commit?-m?"v1.1.1-dev"
[dev?21a0411]?v1.1.1-dev
?1?file?changed,?2?insertions(+)
?create?mode?100644?second.sh
[root@node1?taotao]#?git?status
On?branch?dev
nothing?to?commit,?working?tree?clean

#再次切回master分支,發(fā)現(xiàn)second.sh?已經(jīng)沒有了
[root@node1?taotao]#?git?checkout?master
Switched?to?branch?'master'
[root@node1?taotao]#?ls
first.sh??INSTALL??readmin??subdir
[root@node1?taotao]#?git?status
On?branch?master
nothing?to?commit,?working?tree?clean

#在主分支創(chuàng)建一個(gè)second文件,然后切回dev分支報(bào)錯(cuò),因?yàn)楹蚫ev分支中已提交的second?發(fā)生沖突
[root@node1?taotao]#?echo?"#XIUXIU"?>?second.sh
[root@node1?taotao]#?git?status
On?branch?master
Untracked?files:
??(use?"git?add?<file>..."?to?include?in?what?will?be?committed)

	second.sh

nothing?added?to?commit?but?untracked?files?present?(use?"git?add"?to?track)
[root@node1?taotao]#?git?checkout?dev
error:?The?following?untracked?working?tree?files?would?be?overwritten?by?checkout:
second.sh
Please?move?or?remove?them?before?you?switch?branches.
Aborting
[root@node1?taotao]#?git?add?second.sh
[root@node1?taotao]#?git?checkout?dev
error:?Your?local?changes?to?the?following?files?would?be?overwritten?by?checkout:
second.sh
Please?commit?your?changes?or?stash?them?before?you?switch?branches.
Aborting
#刪除master主分支的second后,順利切換到dev分支
[root@node1?taotao]#?git?rm?-f?second.sh
rm?'second.sh'
[root@node1?taotao]#?git?checkout?dev
Switched?to?branch?'dev'
[root@node1?taotao]#?git?status
On?branch?dev
nothing?to?commit,?working?tree?clean
[root@node1?taotao]#?git?show-branch
!?[bug/first]?v1.1
?*?[dev]?v1.1.1-dev
??!?[master]?v1.1
---
?*??[dev]?v1.1.1-dev
?*??[dev^]?v1.1-dev
+?+?[bug/first]?v1.1
+*+?[dev~2]?v1.0
[root@node1?taotao]#?git?show-branch?--more=10
!?[bug/first]?v1.1
?*?[dev]?v1.1.1-dev
??!?[master]?v1.1
---
?*??[dev]?v1.1.1-dev
?*??[dev^]?v1.1-dev
+?+?[bug/first]?v1.1
+*+?[dev~2]?v1.0
+*+?[dev~3]?v0.0.2
+*+?[dev~4]?v0.0.1

演示4:git checkout -d BRANCH_NAME 刪除分支

[root@node1?taotao]#?git?branch?-d?bug/first?
Deleted?branch?bug/first?(was?5685269).
[root@node1?taotao]#?git?branch?--list
??dev
*?master

Git 分支合并

1.分支合并--git merge

★相關(guān)概念

  • 合并基礎(chǔ):要合并的分支的最近一次的共同提交;

  • 我們的版本:當(dāng)前分支的最近一次提交;

  • 他們的版本:要合并進(jìn)來的分支的最近一次提交;

無沖突合并:

  1. git checkout master;? ?檢出到主分支

  2. git status???檢查是否有未提交的信息

  3. git merge BRANCH_NAME???從他們的版本合并到我們的版本

  4. git log --graph --pretty=oneline --abbrev-commit? ?以圖形的方式查看

有沖突合并:

  1. 手動(dòng)解決沖突;

  2. 解決完成之后:git add ---> git commit

回退到合并之前的版本

  • git reset --hard ORIG_HEAD

演示1:無沖突的合并

[root@node1?taotao]#?git?branch?--list
??dev
*?master
[root@node1?taotao]#?
[root@node1?taotao]#?
[root@node1?taotao]#?git?merge?dev
Merge?made?by?the?'recursive'?strategy.
?first.sh??|?1?+
?second.sh?|?2?++
?2?files?changed,?3?insertions(+)
?create?mode?100644?second.sh
[root@node1?taotao]#?
[root@node1?taotao]#?git?status
On?branch?master
nothing?to?commit,?working?tree?clean
[root@node1?taotao]#?git?show-branch
!?[dev]?v1.1.1-dev
?*?[master]?Merge?branch?'dev'
--
?-?[master]?Merge?branch?'dev'
+*?[dev]?v1.1.1-dev
[root@node1?taotao]#?git?log?--graph?--pretty=oneline?--abbrev-commit
*???43d8e9a?(HEAD?->?master)?Merge?branch?'dev'
|\??
|?*?21a0411?(dev)?v1.1.1-dev
|?*?587719d?v1.1-dev
*?|?5685269?v1.1
|/??
*?5d4298d?v1.0
*?b918244?v0.0.2
*?1b5d8e0?v0.0.1

演示2:有沖突的合并

[root@node1?taotao]#?echo?"taotaohuihui"?>?my.txt
[root@node1?taotao]#?git?add?my.txt
[root@node1?taotao]#?git?commit?-m?"v2.0"
[master?1df3da7]?v2.0
?1?file?changed,?1?insertion(+)
?create?mode?100644?my.txt
?
?[root@node1?taotao]#?git?log?--graph?--pretty=oneline?--abbrev-commit
*?1df3da7?(HEAD?->?master)?v2.0???#?新創(chuàng)建的提交
*???43d8e9a?Merge?branch?'dev'
|\??
|?*?21a0411?(dev)?v1.1.1-dev
|?*?587719d?v1.1-dev
*?|?5685269?v1.1
|/??
*?5d4298d?v1.0
*?b918244?v0.0.2
*?1b5d8e0?v0.0.1
[root@node1?taotao]#?git?branch?dev
fatal:?A?branch?named?'dev'?already?exists.???#dev分支存在不能創(chuàng)建相同的,實(shí)際上可以刪除了,因?yàn)橐呀?jīng)合并到master分支上去了
[root@node1?taotao]#?
[root@node1?taotao]#?
[root@node1?taotao]#?git?branch?fotfix???#?在master?2.0?的基礎(chǔ)上常見fotfix分支
[root@node1?taotao]#?git?show-branch
!?[dev]?v1.1.1-dev
?!?[fotfix]?v2.0
??*?[master]?v2.0
---
?+*?[fotfix]?v2.0
?--?[fotfix^]?Merge?branch?'dev'
++*?[dev]?v1.1.1-dev
[root@node1?taotao]#?echo?"third?line"?>>?first.sh???#?修改master分支的內(nèi)容
[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
third?line
[root@node1?taotao]#?git?add?first.sh
[root@node1?taotao]#?git?commit?-m?"v2.1"
[master?697a6c5]?v2.1
?1?file?changed,?1?insertion(+)
[root@node1?taotao]#?git?show-branch
!?[dev]?v1.1.1-dev
?!?[fotfix]?v2.0
??*?[master]?v2.1
---
??*?[master]?v2.1
?+*?[fotfix]?v2.0
?--?[fotfix^]?Merge?branch?'dev'
++*?[dev]?v1.1.1-dev
[root@node1?taotao]#?git?checkout?fotfix??#切換到fotfix分支
Switched?to?branch?'fotfix'
[root@node1?taotao]#?ls
first.sh??INSTALL??my.txt??readmin??second.sh??subdir
[root@node1?taotao]#?
[root@node1?taotao]#?echo?"new?line"?>>?first.sh???#?編輯first文件并提交
[root@node1?taotao]#?cat?first.sh
#!/bin/bash
echo?"hello?world"
echo?"new?date"
new?line
[root@node1?taotao]#?git?add?first.sh
[root@node1?taotao]#?git?commit?-m?"v2.0-1"
[fotfix?26b42ef]?v2.0-1
?1?file?changed,?1?insertion(+)
?
?[root@node1?taotao]#?git?show-branch
!?[dev]?v1.1.1-dev
?*?[fotfix]?v2.0-1
??!?[master]?v2.1
---
?*??[fotfix]?v2.0-1
??+?[master]?v2.1
?*+?[fotfix^]?v2.0
?--?[fotfix~2]?Merge?branch?'dev'
+*+?[dev]?v1.1.1-dev
#?切回主分支,然后合并?fotfix分支,發(fā)現(xiàn)報(bào)錯(cuò),即內(nèi)容發(fā)生沖突。需手動(dòng)修復(fù)沖突后再合并
[root@node1?taotao]#?git?checkout?master
Switched?to?branch?'master'
[root@node1?taotao]#?
[root@node1?taotao]#?
[root@node1?taotao]#?git?merge?fotfix?
Auto-merging?first.sh
CONFLICT?(content):?Merge?conflict?in?first.sh
Automatic?merge?failed;?fix?conflicts?and?then?commit?the?result.
不能合并成功的文件,發(fā)現(xiàn)三個(gè)版本中?first.sh?內(nèi)容各不相同
[root@node1?taotao]#?git?ls-files
INSTALL
first.sh
first.sh
first.sh
my.txt
readmin
second.sh
subdir/1.txt
[root@node1?taotao]#?
[root@node1?taotao]#?git?ls-files?--unmerged
100644?816a1b1e686cf6adb716b10e1a9eed870b2f18fa?1first.sh???#?"1"?表示合并基礎(chǔ)
100644?3adec3b3bf2616c52eaba36bd8af2e79e9ef6495?2first.sh???#?"2"?表示我們的版本
100644?e45ccd5a231f9debdd84ffd621cdc3acfc8d15f1?3first.sh???#?"3"?表示他們的版本
[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
<<<<<<<?HEAD
third?line
=======
new?line
>>>>>>>?fotfix
[root@node1?taotao]#?git?diff
diff?--cc?first.sh
index?3adec3b,e45ccd5..0000000
---?a/first.sh
+++?b/first.sh
@@@?-1,4?-1,4?+1,8?@@@
??#!/bin/bash
??echo?"hello?world"
??echo?"new?date"
++<<<<<<<?HEAD?????"<<<<"或">>>>>"為三方合并標(biāo)記,由2個(gè)?++?開頭
?+third?line??#為主分支最近一次提交的內(nèi)容
++=======
+?new?line
++>>>>>>>?fotfix??#為其他版本最近一次提交的內(nèi)容
#直接在沖突文件的基礎(chǔ)上修改即可,如想要都保留的話就把"三方合并標(biāo)記"給刪除
[root@node1?taotao]#?vim?first.sh?
[root@node1?taotao]#?git?diff
diff?--cc?first.sh
index?3adec3b,e45ccd5..0000000
---?a/first.sh
+++?b/first.sh
@@@?-1,4?-1,4?+1,5?@@@
??#!/bin/bash
??echo?"hello?world"
??echo?"new?date"
?+third?line??#新加的兩行
+?new?line
[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
third?line
new?line
#修改好之后重新添加到索引并提交
[root@node1?taotao]#?git?add?first.sh
[root@node1?taotao]#?git?commit??#出現(xiàn)內(nèi)容提示,保存即可
[master?dd73764]?Merge?branch?'fotfix'
[root@node1?taotao]#?git?log?--graph?--pretty=oneline?--abbrev-commit
*???dd73764?(HEAD?->?master)?Merge?branch?'fotfix'
|\??
|?*?26b42ef?(fotfix)?v2.0-1
*?|?697a6c5?v2.1
|/??
*?1df3da7?v2.0
*???43d8e9a?Merge?branch?'dev'
|\??
|?*?21a0411?(dev)?v1.1.1-dev
|?*?587719d?v1.1-dev
*?|?5685269?v1.1
|/??
*?5d4298d?v1.0
*?b918244?v0.0.2
*?1b5d8e0?v0.0.1

演示3:回到合并之前的版本

#回到合并之前的版本
[root@node1?taotao]#?git?reset?--hard?ORIG_HEAD
HEAD?is?now?at?697a6c5?v2.1

[root@node1?taotao]#?git?log?--graph?--pretty=oneline?--abbrev-commit
*?697a6c5?(HEAD?->?master)?v2.1
*?1df3da7?v2.0
*???43d8e9a?Merge?branch?'dev'
|\??
|?*?21a0411?(dev)?v1.1.1-dev
|?*?587719d?v1.1-dev
*?|?5685269?v1.1
|/??
*?5d4298d?v1.0
*?b918244?v0.0.2
*?1b5d8e0?v0.0.1

[root@node1?taotao]#?git?show-branch
!?[dev]?v1.1.1-dev
?!?[fotfix]?v2.0-1
??*?[master]?v2.1
---
?+??[fotfix]?v2.0-1
??*?[master]?v2.1
?+*?[fotfix^]?v2.0
?--?[fotfix~2]?Merge?branch?'dev'
++*?[dev]?v1.1.1-dev

[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
third?line??#原來的文件還在

[root@node1?taotao]#?git?checkout?fotfix?
Switched?to?branch?'fotfix'
[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
new?line???#原來的文件還在

1.git變基分支合并--git rebase

★變基操作

  • $ git checkout dev?: 首先切換到要變基的分支;

  • $ git rebase master: 把他的基從最近一次的共同祖先提交轉(zhuǎn)換為master的最新提交;

  • $ git checkout master :回到master分支;

  • $ git merge -m "MSG"?:master 獲取新的提交。

演示:

[root@node1?taotao]#?git?checkout?master
Switched?to?branch?'master'
[root@node1?taotao]#?ls
first.sh??INSTALL??my.txt??readmin??second.sh??subdir
[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
third?line
[root@node1?taotao]#?vim?first.sh?
[root@node1?taotao]#?cat?first.sh??#編輯文件先解決沖突,以便于演示git變基操作
#!/bin/bash
echo?"hello?world"
echo?"new?date"

#再次提交一次
[root@node1?taotao]#?git?add?first.sh
[root@node1?taotao]#?git?commit?-m?"v2.2"
[master?7961be2]?v2.2
?1?file?changed,?1?deletion(-)

?[root@node1?taotao]#?git?log?--graph?--pretty=oneline?--abbrev-commit
*?7961be2?(HEAD?->?master)?v2.2
*?697a6c5?v2.1
*?1df3da7?v2.0
*???43d8e9a?Merge?branch?'dev'
|\??
|?*?21a0411?(dev)?v1.1.1-dev
|?*?587719d?v1.1-dev
*?|?5685269?v1.1
|/??
*?5d4298d?v1.0
*?b918244?v0.0.2
*?1b5d8e0?v0.0.1

#切換到要變基的分支
[root@node1?taotao]#?git?checkout?fotfix
Switched?to?branch?'fotfix'
[root@node1?taotao]#?ls
first.sh??INSTALL??my.txt??readmin??second.sh??subdir

[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
new?line??#?新增加的一行

#執(zhí)行變基操作,表示把當(dāng)前?fotfix的基變?yōu)閙aster分支的最近一次提交
[root@node1?taotao]#?git?rebase?master
First,?rewinding?head?to?replay?your?work?on?top?of?it...
Applying:?v2.0-1

[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
new?line

[root@node1?taotao]#?git?checkout?master
Switched?to?branch?'master'

[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"??#?此時(shí)沒有新行,需執(zhí)行合并操作

[root@node1?taotao]#?git?merge?fotfix?
Updating?7961be2..3eaaead
Fast-forward?#?快進(jìn)合并
?first.sh?|?1?+
?1?file?changed,?1?insertion(+)

?[root@node1?taotao]#?cat?first.sh?
#!/bin/bash
echo?"hello?world"
echo?"new?date"
new?line

[root@node1?taotao]#?git?log?--graph?--pretty=oneline?--abbrev-commit
*?3eaaead?(HEAD?->?master,?fotfix)?v2.0-1
*?7961be2?v2.2
*?697a6c5?v2.1
*?1df3da7?v2.0
*???43d8e9a?Merge?branch?'dev'
|\??
|?*?21a0411?(dev)?v1.1.1-dev
|?*?587719d?v1.1-dev
*?|?5685269?v1.1
|/??
*?5d4298d?v1.0
*?b918244?v0.0.2
*?1b5d8e0?v0.0.1

網(wǎng)頁題目:Git應(yīng)用進(jìn)階(二)
網(wǎng)站地址:http://bm7419.com/article42/pcgohc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)微信公眾號(hào)、動(dòng)態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)公司小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)