Gitlab中怎麼優雅的拉取和合併程式碼?以下這篇文章跟大家介紹一下Gitlab中拉取和合併程式碼的方法,希望對大家有幫助!
pull or fetch
#拉取程式碼的操作有兩種形式,git pull
和git fetch
,那麼這兩種有什麼差別呢?
讓我們先來看看一個架構圖
圖中展示一個完整的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
以後,會顯示如下圖:
上圖顯示了遠端新增了一個test2
分支,在test
分支上多了個提交訊息,這時候在.git/refs/remotes/origin
目錄下可以看到多了一個test2
分支。
使用git log origin/test
,可以查看具體的提交資訊
如果想查看提交的內容是啥,只能透過新建一個分支,
git checkout -b test-origin git merge test
講到這裡,相信你已經明白了git pull
和git fetch
的差別了吧。總結一下:
git fetch 更安全,更人性化
git pull 更激進,破壞性更強
一般的Leader在管理專案的時候都是習慣性的使用git fetch
查看最近新增了哪些分支,做了哪些修改,從而對專案做出更好的把控。
merge or rebase
上面提到的合併操作,一般我們直接透過git merge
去合併某個分支的程式碼。先看看直接使用git merge
的問題,有一條看著很不順眼的Merge branch
訊息,如下圖所示:
下圖是合併後的一個流程圖,當我們在main
分支拉一個dev
進行開發,這時候兩個分支都有提交記錄,當我們合併的時候,正常情況應該是在main的基礎上,直接合併,而不是多了一個C7
的提交信息,也就是上面提到的Merge branch
,這顯然是一個很不合理的現象(當然這也不影響git正常運作)。
那要如何解決這個現象所導致的問題呢?答案就是git rebase
,俗稱變基。
下面我们先来看看变基以后git分支是什么样的了
可以看到,当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</commitid>
(学习视频分享:编程基础视频)
以上是聊聊Gitlab怎麼優雅的拉取和合併程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Git和GitHub是不同的工具:Git是版本控制系統,GitHub是基於Git的在線平台。 Git用於管理代碼版本,GitHub提供協作和託管功能。

GitHub是一個基於Git的分佈式版本控制系統,提供了版本控制、協作和代碼託管的核心功能。 1)創建倉庫、克隆、提交和推送更改是基本用法。 2)高級用法包括使用GitHubActions進行自動化、GitHubPages部署靜態網站和使用安全功能保護代碼。 3)常見錯誤如合併衝突、權限問題和網絡連接問題可以通過手動解決衝突、聯繫倉庫所有者和設置代理來調試。 4)優化工作流程的方法包括使用分支策略、自動化測試和CI/CD、代碼審查以及保持文檔和註釋清晰。

Git和GitHub是不同的工具:Git是分佈式版本控制系統,GitHub是基於Git的在線協作平台。 Git通過工作區、暫存區和本地倉庫管理代碼,使用常見命令如gitinit、gitclone等。 GitHub提供代碼託管、PullRequest、IssueTracking等功能,基本流程包括創建倉庫、推送代碼和使用PullRequest協作。

Git和GitHub是现代软件开发的关键工具。Git提供版本控制功能,通过仓库、分支、提交和合并管理代码。GitHub则提供代码托管和协作功能,如Issues和PullRequests。使用Git和GitHub可以显著提升开发效率和团队协作能力。

Git是林納斯·托瓦茲在2005年開發的分佈式版本控制系統,GitHub則是2008年創立的基於Git的代碼託管平台。 Git通過快照管理文件,支持分支和合併,GitHub提供拉取請求、問題跟踪和代碼審查功能,促進團隊協作。

Git和GitHub是現代軟件開發中的關鍵工具。 Git是分佈式版本控制系統,GitHub是基於Git的代碼託管平台。 Git的核心功能包括版本控制和分支管理,GitHub則提供協作和項目管理工具。使用Git時,開發者可以跟踪文件變化並協同工作;使用GitHub時,團隊可以通過PullRequests和Issues進行協作。

githubiscrucialforsoftwaredevelopmentduetoitscompheasisecosystemforcodemagementagnagnagnagnagnagn和collaboration.itoffersversioncontrol,communitySupport,andtoolslikegithubictionsandpages.startbymasteringbasicslikemasteringbasicsleatbasicsleatingbasicsleatingareatingareatingarepository,and andranbranches,and andautomatimation,and automatingwo

Git和GitHub是現代開發者的必備工具。 1.使用Git進行版本控制:創建分支進行並行開發,合併分支,回滾錯誤。 2.利用GitHub進行團隊協作:通過PullRequest進行代碼審查,解決合併衝突。 3.實用技巧和最佳實踐:定期提交,清晰的提交消息,使用.gitignore,定期備份代碼庫。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。