中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Gitlab中如何優雅的拉取和合并代碼

發布時間:2023-03-29 09:11:45 來源:億速云 閱讀:164 作者:iii 欄目:軟件技術

本文小編為大家詳細介紹“Gitlab中如何優雅的拉取和合并代碼”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Gitlab中如何優雅的拉取和合并代碼”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

pull or fetch

拉取代碼的操作有兩種形式,git pullgit fetch,那么這兩種有什么區別呢?

讓我們先來看看一個架構圖

Gitlab中如何優雅的拉取和合并代碼

圖中展示一個完整的git流程,為了更清晰的了解每個區域,我們下來解釋一下他們的功能:

  • 工作區(working directory), 簡言之就是你工作的區域。對于git而言,就是的本地工作目錄。

  • 暫存區(stage area, 又稱為索引區index), 是把修改提交版本庫前的一個過渡階段。在工作目錄下.git的目錄里面有個index文件,存儲著關于暫存區的內容。git add命令將工作區內容添加到暫存區。

  • 本地倉庫(local repository), 版本控制系統的倉庫,存在于本地。當執行git commit命令后,會將暫存區內容提交到倉庫之中。.git/objects目錄中存放了每一個提交的記錄,而在.git/refs目錄下存放的是分支信息和tag信息。

  • 遠程版本庫(remote repository), 與本地倉庫概念基本一致,不同之處在于一個存在遠程,可用于遠程協作,一個卻是存在于本地。通過push/pull可實現本地與遠程的交互;

  • 遠程倉庫副本, 可以理解為存在于本地的遠程倉庫緩存。當使用git fetch拉取遠程代碼倉庫的時候,就相當于在本地有一個遠程倉庫的副本,你可以選擇把這個副本合并到本地倉庫中。

從圖中可以看出來,當我們使用git pull拉取代碼的時候,是直接合并到了本地分支,而使用git fetch拉取代碼的時候,會先在本地生成一個遠程倉庫的副本,然后使用git merge或者git rebase合并到本地分支。

既然能直接git pull何必多次一舉呢?試想一個場景,當你想合并別人的代碼,又不知道人家改了什么東西,是否能夠跟你代碼合并到一起,這時候通過git fetch就能很輕易的實現。git fetch以后實際并不會立馬跟本地分支立馬合并,在git fetch以后,會顯示如下圖:

Gitlab中如何優雅的拉取和合并代碼

上圖顯示了遠程新增了一個test2分支,在test分支上多了個一個提交信息,這時候在.git/refs/remotes/origin目錄下可以看到多了一個test2分支。

使用git log origin/test,可以查看具體的提交信息

Gitlab中如何優雅的拉取和合并代碼

如果想查看提交的內容是啥,只能通過新建一個分支,

git checkout -b test-origin
git merge test

講到這里,相信你已經明白了git pullgit fetch的區別了吧。總結一下:

  • git fetch 更安全,更人性化

  • git pull 更激進,破壞性更強

一般的Leader在管理項目的時候都是習慣性的使用git fetch查看最近新增了哪些分支,做了哪些修改,從而對項目做出更好的把控。

merge or rebase

上面提到的合并操作,一般我們直接是通過git merge <分支名>去合并某個分支的代碼。先看看直接使用git merge的問題,有一條看著很不順眼的Merge branch信息,如下圖所示:

Gitlab中如何優雅的拉取和合并代碼

下圖是合并后的一個流程圖,當我們在main分支拉一個dev進行開發,這時候兩個分支都有提交記錄,當我們合并的時候,正常情況應該是在main的基礎上,直接合并,而不是多了一個C7的提交信息,也就是上面提到的Merge branch,這顯然是一個很不合理的現象(當然這也不影響git正常工作)。

Gitlab中如何優雅的拉取和合并代碼

那如何解決這個現象導致的問題呢?答案就是git rebase,俗稱變基。

下面我們先來看看變基以后git分支是什么樣的了

Gitlab中如何優雅的拉取和合并代碼

可以看到,當dev分支更新之后,它會指向這些新創建的提交(commit),而那些老的提交會被丟棄。

示例操作

上面講了這么多,現在讓我們來實際操作一下。

場景:遠程有一個main分支上有內容更新,現在我們需要把更新的內容合并到本地dev分支上,然后push到遠程dev分支,當前分支實在dev分支。

簡單實現(就是很樸實無華):

# 拉取main分支代碼
git fetch origin main
# 合并到dev
git rebase origin/main

上面的git rebase還有個快捷的操作,直接一行命令搞定

# 拉取test分支代碼合并到dev
git pull --rebase origin test

如果你不想每次都添加rebase,可以在終端中輸入下面的命令:

git config --global pull.rebase true

這個配置就是告訴git在每次pull前先進行rebase操作

其他命令參考

# 查看本地分支
git branch
# 查看遠程分支
git branch -r
# 查看所有分支
git branch -a

# 拉取所有遠程分支代碼
git fetch 
# 拉取origin源上所有分支代碼
git fetch origin
# 拉取orign源上main分支代碼
git fetch origin main

# 拉取遠程分支到新建的一個本地分支并
git checkout -b newBrach origin/master
# 合并遠程分支到本地
git pull --rebase origin master

# 查看提交日志
git log --oneline
# 查看某個人提交的日志
git log --author=xiumubai --oneline
# 查看某個文件提交的記錄
git blame README.md
# 查看某次提交的內容
git show <commitid>
# 查看最近幾次的提交

git log -p -n

讀到這里,這篇“Gitlab中如何優雅的拉取和合并代碼”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

申扎县| 托克逊县| 多伦县| 留坝县| 革吉县| 新巴尔虎右旗| 天祝| 鞍山市| 芮城县| 沙田区| 湘潭市| 明溪县| 军事| 济宁市| 信阳市| 紫云| 泽州县| 湘潭市| 苍梧县| 格尔木市| 黄浦区| 咸宁市| 大姚县| 台北县| 河曲县| 墨江| 天全县| 耿马| 西乡县| 定结县| 营山县| 灵璧县| 三河市| 千阳县| 凤凰县| 寿光市| 双辽市| 双鸭山市| 屯留县| 当阳市| 高碑店市|