git rebase使用場景

2022-02-03 10:58:23 字數 2434 閱讀 2379

1. 當前分支落後拉取後,整理commit,使得提交歷史為直線

git pull = git fetch + git merge

git pull --rebase = git fetch + git rebase

其實--rebase的目的只有兩個:

1.讓多個人在同乙個分支開發的提交節點形成一條線,而不是多條線

2.讓你提交的commit在該分支的最前面

當push被reject的時候,可以用 git pull --rebase 拉取內容,將提交記錄保持一條直線

git pull --rebase時候,不能有modified狀態的檔案,可以有untracked files。modified狀態的檔案,可以commit或者stash一下,通常的操作有:

$ git stash

$ git pull --rebase

$ git push

$ git stash pop

2. 別的分支合併到master,先整理為直線,再合併

1. 開闢特性分支 git checkbox -b feature

2. 在feature分支提交commit

3. 在feature git reabse -i 合併多個commit為乙個,簡化提交歷史。這樣可以在git rebase時候減少衝突解決次數。

4. 在feature git pull origin master --rebase (相當於git fetch origin master, git rebase origin/master)

將master最新commit同步到此分支,可能要手動解決衝突(合併過程中,異常退出vi視窗,

用git rebase --edit-todo恢復,修改完,git rebase --continue 繼續下一步,

忽略,git rebase --skip,終止,用git rebase —abort)

5. 切回master,git merge feature 將feature分支內容合併到master

6. git push提交master

如此,master的提交歷史將是一條直線。

3. 分支的多個連續commit複製到其他分支

git rebase [startpoint] [endpoint] --onto [branchname] //將多個連續commit新增到目標分支branchname, [startpoint] [endpoint]指定的是乙個 前開後閉的區間

例如:git rebase 90bc0045b^ 5de0da9f2 --onto master  //90bc0045b^後退乙個commit,做成乙個[90bc0045b, 5de0da9f2]閉區間

rebase完後,此時head處於游離狀態,需要切換回目標分支,然後reset head的位置

git checkout master

git reset --hard commitid //將分支的head指向提交的id,切換回目標分支,會有提示,commitid使用提示中的最新id即可

4. commit合併

git rebase -i [startpoint] [endpoint] //[endpoint]可省略,將多個commit合併為乙個,使用squash模式

例如:git rebase -i head~3 //往前3個commit,到現在,進行合併

5. commit拆分

git rebase -i 對指定commit的pick改為edit,進行編輯拆分

6. commit排序

git rebase -i 修改列表中commit順序即可

7. 改變分支起點

git checkout feature2

git rebase master

可以將feature2起點從別的分支改到master分支上

注意點:

主分支上不能rebase,如果如此,主分支的歷史將被篡改,不能看到原始的歷史記錄了

git pull時可以加上--rebase引數, 使之不產生merge點, 保證了**的整潔,每次加rebase引數有點麻煩,

給指定分支設定為rebase方式,可以使用如下方式:

$ git config branch.dev.rebase true

使用時將 "dev" 修改成您自己本地的分支名字,必須cd到工程目錄下,才能更改分支配置

所有的分支都應該用rebase

$ git config --global branch.autosetuprebase always

這樣新建的分支會設定為rebase,已經建好的還需單獨設定

Git使用場景 命令使用場景

通過個人使用git時候的遇到的使用場景,熟悉了解相關命令,也記錄一下場景的使用方法。所有場景均在ubuntu16.04 linux 作業系統下,其他作業系統有差異的地方自行查閱相關資料。安裝git sudo apt get install git設定及檢視git配置 user.name和user.e...

mongodb 使用場景和不使用場景

1.mongodb介紹 mongodb 名稱來自 humongous 是乙個可擴充套件的高效能,開源,模式自由,面向文件的資料庫。它使用c 編寫。mongodb特點 a.面向集合的儲存 適合儲存物件及json形式的資料。b.動態查詢 mongo支援豐富的查詢表達方式,查詢指令使用json形式的標記,...

mongodb 使用場景和不使用場景

mongodb 使用場景和不使用場景 2012 09 26 10 30 18 分類 linux 1.mongodb介紹 mongodb 名稱來自 humongous 是乙個可擴充套件的高效能,開源,模式自由,面向文件的資料庫。它使用c 編寫。mongodb特點 a.面向集合的儲存 適合儲存物件及js...