git log 退出 最常用的git命令

2021-10-18 10:59:31 字數 3371 閱讀 6135

git merge

最開始的時候,我還是習慣用git merge這個命令的,但是,後來發現很多人其實也用git rebase,所以,就想看看為啥有這兩種用法的區別,到底區別在**?

先來看看git merge的用法。

我們首先在master的基礎上新建分支,然後做一些修改,並且提交。

git checkout -b feat/work

vim service.go

git add .

git commit -m '提交feat/work'

vim service2.go

git add .

git commit -m '提交新增修改'

通過上面的操作,我們在master的基礎上進行了分支feat/work建立,並且進行了兩次提交,所以,目前的git分支情況應該是下面這樣的。

好了,這個時候,這個分支已經開發完了,那麼,我們就需要合併分支了,我們進行下面的git merge操作。

但是,這個時候,別人開發完了他的分支之後,也進行了提交,並且merge到了master,這個時候情況如下圖。

這個時候,我們再進行merge 的時候就會發現,會有conflict需要我們解決。

git merge解決衝突的方式是一次全部進行遞迴合併,如果有衝突的檔案進行提示,然後需要我們進行修改。修改完了之後,我們再用git addgit commit提交就ok了。

git merge master

我們進行了合併master的操作,這時的情況應該是這樣的。

然後,我們再進行master合併feat/work進行快進就可以完成整個過程了。

通過上面的這個例項我們會發現,如上圖git merge的操作,是會保留在分支上的所有的提交記錄的,這樣的好處就是可以保留所有的歷史的提交的記錄,方便檢視歷史的log。

ok,下面我們再來看看git rebase的操作是怎麼樣的。git rebase

終於等到你,我們來看看git rebase是什麼神仙。

同樣的,我們還是建立乙個新的分支,然後進行一些操作。

git checkout -b feat/work //新建分支

vim service3.go

git add .

git commit -m '提交修改'

同時,別人也新建了乙個新的分支進行開發,相當於有兩個分支同時進行開發。

git checkout -b feat/work2 //新建分支

vim service3.go

git add .

git commit -m '提交修改'

我們同時對乙個檔案中的乙個方法進行修改,這個時候,然後,另外乙個小夥伴進行了merge操作,這個時候的git情況就變成下面這樣的了。

這個時候我們進行git rebase會發現有衝突,所以我們需要解決衝突,前面說過,git merge解決衝突是遞迴合併,然後有衝突的檔案全部顯示出來,然後自己去解決。而git rebase的解決衝突方式則是一次解決乙個,解決完乙個再下乙個

比如,我們解決第乙個,解決完了之後,我們用先用git status檢視目前的git情況,然後再新增剛剛解決的衝突git add u

git status //檢視git狀態

git add -u

接著,我們用git rebase --continue繼續解決衝突。如此反覆,最終把全部衝突解決。

另外,如果想中途退出,可以用git rebase --abort命令,退出rebase,這樣就會回到rebase之前。

rebase的解決衝突過程可以用如下圖表示。

rebase的整個過程,首先會類似將c5、c6複製乙份,然後放入到最新的master之後。

然後,再將feat/work分支上的commit全部刪除。

整個過程可以用如下圖表示。

所以說,rebase會將原來的分支的commit的全部清除掉。小小對比

通過這兩個操作的過程,我們會發現這兩個命令的區別。第乙個git merge一次全部解決衝突,git rebase一次解決乙個,這種方式會發現,git rebase一次解決乙個,不容易漏掉,思路清晰,而git merge的話更快解決。第二個git merge會保留合併之前分支的所有提交,歷史記錄更加完整,而git rebase則是直接放到master之後,會清除分支上的所有commit記錄,這樣好處就是可以使得整個master更加整潔。

那到底用哪乙個呢,其實沒有最好的辦法,兩種都是可以的,看你怎麼選擇,一種可以記錄歷史分支的提交,另外一種則不記錄,但是使得master更加清晰,所以,就看自己的取捨。git rebase缺陷

最主要的意思就是說,我們在用git rebase的時候,需要注意一點:只對尚未推送或分享給別人的本地修改執行變基操作清理歷史, 從不對已推送至別處的提交執行變基操作

具體的問題描述可以看看git的官方文件,非常詳細,不過多描述:

最常用的git操作

1.新建並切換到本地分支 git checkout b dev2.本地 和遠端 的的關聯 git pull origin dev3.在本地新建分支 git checkout b dev4.把本地分支推到遠端分支 git push origin dev5.更新遠端分支 git remote updat...

最常用的git命令彙總

1 git init 用途 將本地開啟的資料夾變成git可管理的倉庫,執行後該資料夾裡會多乙個.git資料夾,它是git用來跟蹤和管理版本庫的。2 git status 用途 檢視當前狀態 3 git add 用途 把專案新增到倉庫,如果執行 git add add和 之間有空格 命令,表示把該目錄...

git最常用的操作命令

0.一無所有。1.2.公司或者個人都會先在伺服器上建好乙個 倉庫,如 gitlab,碼雲或者在自己租的伺服器上搭乙個 倉庫。3.進入d盤,右鍵滑鼠選中git bash here即可開啟git shell視窗,在裡面就可以寫cmd or git 命令。先來轉殖遠端伺服器的 執行 git clone 開...