git rebase 和 git merge
建立一個本地倉庫 testResp
cd /User/../testResp
初始化
git init
// 建立完倉庫預設是一個 master 分支
檢視目錄
cd .git
open . 或者使用 tree .
新建一個readme.md檔案,往裡面新增內容
cd ..
touch readme.md
open readme.md
新增到暫存區
// 可以先 用 git status 檢視狀態
git add .
提交內容
git commit -m '提交記錄 A'
建立分支 dev 分支, 並檢出
git checkout -b dev
// 相當於 git branch dev && git checkout dev
在原來的檔案 readme.md
中增加內容
git add .
在 dev 上提交修改了的 readme
git commit -m "提交記錄 B"
切回到 master 分支
git checkout master
修改 readme 檔案, 並新增
open readme.md
git add .
在 master 上提交修改的內容
git commit -m '提交記錄 C'
在 master 上再新增一個新檔案 hello.py
touch hello.py
提交 hello.py
git commit -m "提交記錄 D"
再切換到 dev 上新增 world.py 並提交
git checkout dev
touch world.py
git add .
git commit -m "提交記錄 E"
至此, 我們分析一下:
master 分支的 節點指向連結串列 A -> C -> D
dev 分支的 節點指向連結串列 A -> B -> E
master 和 dev 分支上的祖先節點為 A
在 master 分支上做 git merge dev 操作
git checkout master
提示, readme.md 產生衝突, 解決衝突, 再新增, 並提交
open readme.md
git add .
git commit -m "提交記錄 F"
注意: 現在得到的提交歷史為 A -> B -> C -> D -> E -> F
檢視 節點樹 git log --oneline --graph --decorate --all
對於這樣的長命令, 可以定義命令別名 alias glgt='git log --oneline --graph --decorate --all'
檢視提交歷史記錄
git log
採用git merge dev處理提交log是按照時間戳先後順序的。
採用的是git rebase處理過程為:
git checkout dev
git rebase master // 將dev上的B、E在master分支上做一次衍合處理
產生衝突, 解決衝突後, 執行
open readme.md
git add .
git rebase --continue
執行 git log 可以看到, 不是按時間順序處理的
A - C - D - B - E
git rebase可以得到一個更加簡潔的提交歷史,無需多了F。
最後執行
git checkout master
git merge dev // 可以看到, 提交歷史記錄是一條線
注意:
不要在 公共共享庫上使用 git rebase , 比如我們的 master 和 dev 上, 不能使用。
相關文章
- git merge & git rebaseGit
- git merge 和 git rebase 小結Git
- Git rebase 與 Git merge 的使用Git
- git rebase vs git merge詳解Git
- git merge和rebase的區別Git
- git merge 與 git rebase的區別Git
- 面試官:主說 Git Rebase 和 Git Merge 差異面試Git
- Git中merge和rebase的區別Git
- 圖解 Git 基本命令 merge 和 rebase圖解Git
- GIT使用rebase和merge的正確姿勢Git
- 合併分支:Git merge 和 rebase 的區別Git
- git分支管理--rebase&merge詳解Git
- Git merge和rebase分支合併命令的區別Git
- Git常用命令,merge和rebase的區別Git
- git 命令之git rebase 用法&git rebase介紹Git
- [Git]rebaseGit
- Git -- RebaseGit
- git rebaseGit
- 你在開發過程中使用Git Rebase還是Git Merge?Git
- 淺談git rebase和git checkout –ours(theirs)Git
- [Git] Git整理(四) git rebase 的使用Git
- git學習之git rebaseGit
- git rebase masterGitAST
- git rebase 流程Git
- Git——rebase命令Git
- git rebase -iGit
- git rebase命令Git
- git revert .vs. git reset .vs. git rebaseGit
- git rebase的使用Git
- 如何理解git rebase?Git
- 簡單對比git pull和git pull --rebase的使用Git
- Git基礎命令之git rebase命令Git
- git mergeGit
- git:rebase(變基)的使用和理解Git
- Git 操作之rebase、squashGit
- git rebase --onto詳解Git
- 【Git】rebase 用法小結Git
- git rebase 使用詳解Git