国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何安全地將 Git 分支合并到 master 中?

這篇具有很好參考價值的文章主要介紹了如何安全地將 Git 分支合并到 master 中?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

問:

從 master 創(chuàng)建了一個新分支,我們稱之為 test。

有幾個開發(fā)人員要么提交到 master,要么創(chuàng)建其他分支,然后合并到 master。

假設(shè) test 的工作需要幾天時間,并且您希望通過 master 內(nèi)的提交不斷更新 test。

我會從 test 做 git pull origin master。

問題1:這是正確的方法嗎?順便說一句,其他開發(fā)人員可以輕松地處理與我工作過的文件相同的文件。

我在 test 上的工作已完成,我準(zhǔn)備將其合并回 master。以下是我能想到的兩種方式:

A:

git checkout test
git pull origin master
git push origin test
git checkout master
git pull origin test 

乙:

git checkout test
git pull origin master
git checkout master
git merge test

我沒有使用 --rebase,因為據(jù)我了解,rebase 會從 master 獲取更改并將我的堆棧放在上面,因此它可能會覆蓋其他人所做的更改。

問題2:這兩種方法哪一種是正確的?那里有什么區(qū)別?

所有這一切的目標(biāo)是讓我的 test 分支與 master 中發(fā)生的事情保持同步,然后我可以將它們合并回 master,希望盡可能保持時間線的線性。

答1:

huntsbot.com – 程序員副業(yè)首選,一站式外包任務(wù)、遠(yuǎn)程工作、創(chuàng)意產(chǎn)品分享訂閱平臺。

我會怎么做

git checkout master
git pull origin master
git merge test
git push origin master

如果我有一個來自遠(yuǎn)程分支的本地分支,我不喜歡將除此分支之外的其他分支與遠(yuǎn)程分支合并。此外,我不會推送我的更改,直到我對我想要推送的內(nèi)容感到滿意并且我根本不會推送任何東西,這僅適用于我和我的本地存儲庫。在您的描述中,test 似乎只適合您?所以沒有理由發(fā)布它。

git 總是試圖尊重你和其他人的變化,–rebase 也是如此。我認(rèn)為我無法恰當(dāng)?shù)亟忉屗?,因此請查?the Git book - Rebasing 或 git-ready: Intro into rebasing 以獲得一些說明。這是一個很酷的功能

git merge test 給了我fatal: 'test' does not point to a commit。我必須在 git log 中查找測試分支上的提交點,切換回 master 分支然后執(zhí)行 git merge 0f37d3154abbf52a4cbbbb5109f08af6a7567234。

@Duncanmoo 好吧,當(dāng)然分支 test 必須存在。當(dāng)然,您可以改用提交哈希,但使用分支名稱通常更容易。在內(nèi)部它只是檢索分支的 HEAD 的哈希值。

@shanyangqu 從遠(yuǎn)程獲取最新更改。如果您單獨工作并且只使用一個系統(tǒng),則沒有問題。但是,當(dāng)從不同的系統(tǒng)(可能來自不同的開發(fā)人員)推送更改時,一旦您嘗試將合并推送回來(第 4 步),您就會看到?jīng)_突?,F(xiàn)在唯一的解決方案是將您的本地 master 合并到遠(yuǎn)程 master 中,這最終會導(dǎo)致一個非常丑陋的“將 master 合并到 origin/master”合并提交。所以在合并之前拉取總是一個好主意

“在你的描述中,那個測試似乎只適合你?所以沒有理由發(fā)布它?!崩?,如果該服務(wù)器提供了針對本地驅(qū)動器故障的備份,或者您沒有其他方法進(jìn)行備份,則您可能希望將本地分支推送到服務(wù)器。

“......而且我不會推動我的更改,直到我對我想要推動的內(nèi)容感到滿意......”為什么不推動你的代碼備份,以防你的本地機器死亡和幾天的努力消失了?

答2:

huntsbot.com聚合了超過10+全球外包任務(wù)平臺的外包需求,尋找外包任務(wù)與機會變的簡單與高效。

這是一個非常實用的問題,但是上面所有的答案都不實用。

喜歡

git checkout master
git pull origin master
git merge test
git push origin master

這種方法有兩個問題:

這是不安全的,因為我們不知道 test 分支和 master 分支之間是否有沖突。它會將所有測試提交“擠壓”到 master 上的一個合并提交中;也就是說在master分支上,我們看不到test分支的所有變更日志。

因此,當(dāng)我們懷疑會有一些沖突時,我們可以進(jìn)行以下 git 操作:

git checkout test
git pull 
git checkout master
git pull
git merge --no-ff --no-commit test

在 commit 之前測試 merge,避免 --no-ff 的快進(jìn)提交,

如果遇到?jīng)_突,我們可以運行 git status 來檢查沖突的詳細(xì)信息并嘗試解決

git status

一旦我們解決了沖突,或者如果沒有沖突,我們commit和push他們

git commit -m 'merge test branch'
git push

但是這種方式會丟失測試分支中記錄的更改歷史,并且會使 master 分支難以讓其他開發(fā)人員了解項目的歷史。

所以最好的方法是我們必須使用 rebase 而不是 merge(假設(shè)此時我們已經(jīng)解決了分支沖突)。

以下是一個簡單的示例,高級操作請參考http://git-scm.com/book/en/v2/Git-Branching-Rebasing

git checkout master
git pull
git checkout test
git pull
git rebase -i master
git checkout master
git merge test

是的,當(dāng)你完成了 upers 之后,所有 Test 分支的提交都將被移到 Master 分支的頭部。變基的主要好處是您可以獲得線性且更清晰的項目歷史記錄。

您唯一需要避免的是:永遠(yuǎn)不要在公共分支上使用 rebase,例如 master 分支。

切勿進(jìn)行如下操作:

git checkout master
git rebase -i test

https://www.atlassian.com/git/tutorials/merging-vs-rebasing/the-golden-rule-of-rebasing 的詳細(xì)信息

附錄:

如果不確定 rebase 操作,請參考:https://git-scm.com/book/en/v2/Git-Branching-Rebasing

我同意重新設(shè)置測試分支以供以后合并到 master 是要走的路。即使其他答案是正確的,這也會將分支測試的更改歷史記錄在 master 的頭部,因為作者提到“你得到了一個更干凈的項目”,這是版本控制系統(tǒng)的目的。

“這不是一種安全方式,因為我們不知道 test 分支和 master 分支之間是否存在任何沖突”這句話是不正確的:總是可以中止合并。即使沒有沖突,只要沒有推送,您始終可以撤消最后一次本地提交。如果沒有正確理解 git,有些事情可能看起來有點可怕或不清楚,但“不安全”在任何方面都是不正確的。請注意不要用不正確的信息混淆他人。

同意@PaulvanLeeuwen,當(dāng)您將測試分支 git 合并到 master 時,您將收到有關(guān)沖突的通知,這就是您將介入并合并更改的地方。完成后,您將提交合并并推回。如果您后悔或似乎無法正確合并它,您可以隨時丟棄您的工作并再次從 master 中提取。所以這絕對不是不安全的..

為什么要變基 -i ?

變基本質(zhì)上比合并更不安全。提議將變基作為更安全的合并選擇是錯誤的。變基是一種有效的策略,但會帶來更多用戶應(yīng)注意的警告。

答3:

huntsbot.com全球7大洲遠(yuǎn)程工作機會,探索不一樣的工作方式

變基和合并都不應(yīng)該覆蓋任何人的更改(除非您在解決沖突時選擇這樣做)。

開發(fā)時通常的方法是

git checkout master
git pull
git checkout test
git log master.. # if you're curious
git merge origin/test # to update your local test from the fetch in the pull earlier

當(dāng)你準(zhǔn)備好合并回master時,

git checkout master
git log ..test # if you're curious
git merge test
git push

如果您擔(dān)心在合并中破壞某些內(nèi)容,git merge --abort 可以為您服務(wù)。

使用推然后拉作為合并的手段是愚蠢的。我也不確定您為什么將測試推向原點。

這個過程會增加提交的數(shù)量,每次你在分支之間切換時,你都必須提交你的分支。

什么?您是說每次切換分支時都會增加提交次數(shù)?還是說每次切換分支都要“提交你的分支”?第一個是不真實的,我不確定第二個是什么意思。

在結(jié)帳之前,您必須提交分支。這就是我要說的

你不知道:那是(其中一件事)git stash 是為了。

或者您可以修改您的最后一次提交(在本地分支中)并在推送之前使其成為完美的提交。

答4:

huntsbot.com聚合了超過10+全球外包任務(wù)平臺的外包需求,尋找外包任務(wù)與機會變的簡單與高效。

我會首先使要合并的分支盡可能干凈。運行你的測試,確保狀態(tài)是你想要的。清除 git squash 的新提交。

除了KingCrunches answer,我建議使用

git checkout master
git pull origin master
git merge --squash test
git commit
git push origin master

您可能在另一個分支中進(jìn)行了許多提交,而這應(yīng)該只是主分支中的一個提交。為了使提交歷史盡可能干凈,您可能希望將測試分支中的所有提交壓縮到主分支中的一個提交中(另請參見:Git: To squash or not to squash?)。然后,您還可以將提交消息重寫為非常富有表現(xiàn)力的內(nèi)容。無需深入研究代碼即可輕松閱讀和理解的東西。

編輯:您可能對

在 git 中,merge --squash 和 rebase 有什么區(qū)別?

合并與變基

如何重新設(shè)置拉取請求

所以在 GitHub 上,我最終為功能分支 mybranch 執(zhí)行了以下操作:

從原產(chǎn)地獲取最新信息

$ git checkout master
$ git pull origin master

找到合并基礎(chǔ)哈希:

$ git merge-base mybranch master
c193ea5e11f5699ae1f58b5b7029d1097395196f

$ git checkout mybranch
$ git rebase -i c193ea5e11f5699ae1f58b5b7029d1097395196f

現(xiàn)在確保只有第一個是 pick,其余的是 s:

pick 00f1e76 Add first draft of the Pflichtenheft
s d1c84b6 Update to two class problem
s 7486cd8 Explain steps better

接下來選擇一個非常好的提交消息并推送到 GitHub。然后發(fā)出拉取請求。

拉取請求合并后,可以在本地刪除:

$ git branch -d mybranch

在 GitHub 上

$ git push origin :mybranch

“這應(yīng)該只是主分支中的一次提交”,不一定;你可能想保留歷史

當(dāng)然。但是然后根本不壓縮提交

我認(rèn)為 --first-parent 似乎是最好的解決方案。 davidchudzicki.com/posts/first-parent

答5:

一個優(yōu)秀的自由職業(yè)者,應(yīng)該有對需求敏感和精準(zhǔn)需求捕獲的能力,而huntsbot.com提供了這個機會

舊線程,但我還沒有找到 my way 這樣做。對于使用 rebase 并希望在 master 之上合并來自(功能)分支的所有提交的人來說,這可能很有價值。如果途中發(fā)生沖突,您可以在每次提交時解決它們。您在此過程中保持完全控制,并且可以隨時中止。

獲取最新的 Master 和 Branch:

git checkout master
git pull --rebase origin master
git checkout 
git pull --rebase origin 

在 Master 上合并分支:

git checkout 
git rebase master

可選:如果您在 Rebase 期間遇到?jīng)_突:

首先,解決文件中的沖突。然后:

git add .
git rebase --continue

您可以隨時通過以下方式中止變基:

git rebase --abort

推送您的重新定位分支:

git push origin 

如果您之前推送過此分支,則需要使用強制推送覆蓋它:

git push origin -f 

在這樣做之前,請始終檢查您當(dāng)前的本地分支是否符合您的期望,因為強制推送會覆蓋遠(yuǎn)程存儲庫中的舊分支。

現(xiàn)在你有兩個選擇:

A) 創(chuàng)建一個 PR(例如在 GitHub 上)并通過 UI 將其合并到那里

B)返回命令行,將分支合并到master

git checkout master
git merge --no-ff 
git push origin master

完畢。

我也喜歡這種方式。您忘記提及的一件事是,您經(jīng)常必須在 rebase 后強制推送您的 。

已編輯。謝謝!

答6:

huntsbot.com提供全網(wǎng)獨家一站式外包任務(wù)、遠(yuǎn)程工作、創(chuàng)意產(chǎn)品分享與訂閱服務(wù)!文章來源地址http://www.zghlxwxcb.cn/news/detail-785551.html

這是我在團隊工作中使用的工作流程。場景如你所描述。首先,當(dāng)我完成 test 的工作時,我使用 master 進(jìn)行 rebase 以提取在我一直在 test 分支工作期間添加到 master 的任何內(nèi)容。

git pull -r upstream master

這會將更改拉到 master,因為您分叉了 test 分支并應(yīng)用它們,然后應(yīng)用您所做的更改以“在”master 的當(dāng)前狀態(tài)之上進(jìn)行測試。如果其他人對您在測試中編輯的相同文件進(jìn)行了更改,則此處可能存在沖突。如果有,您將不得不手動修復(fù)它們并提交。完成此操作后,您可以毫無問題地切換到 master 分支并合并 test。

答7:

huntsbot.com洞察每一個產(chǎn)品背后的需求與收益,從而捕獲靈感

git checkout master
git pull origin master
# Merge branch test into master
git merge test

合并后,如果文件被更改,那么在合并時會出現(xiàn)“解決沖突”的錯誤

因此,您需要首先解決所有沖突,然后您必須再次提交所有更改,然后推送

git push origin master

誰在測試分支中進(jìn)行了更改更好,因為他知道自己做了什么更改。

答8:

打造屬于自己的副業(yè),開啟自由職業(yè)之旅,從huntsbot.com開始!

我會使用變基方法。主要是因為它在語義上完美地反映了您的情況,即。您要做的是刷新當(dāng)前分支的狀態(tài)并“假裝”它是基于最新的。

因此,即使不簽出 master,我也會:

git fetch origin
git rebase -i origin/master
# ...solve possible conflicts here

當(dāng)然,僅從原點獲取不會刷新 master 的本地狀態(tài)(因為它不執(zhí)行合并),但對于我們的目的來說完全可以 - 我們希望避免切換,以節(jié)省時間.

一個優(yōu)秀的自由職業(yè)者,應(yīng)該有對需求敏感和精準(zhǔn)需求捕獲的能力,而huntsbot.com提供了這個機會

答9:

huntsbot.com聚合了超過10+全球外包任務(wù)平臺的外包需求,尋找外包任務(wù)與機會變的簡單與高效。

@KingCrunch 的答案在很多情況下都應(yīng)該有效??赡艹霈F(xiàn)的一個問題是您可能在另一臺需要從測試中提取最新版本的機器上。所以,我建議先拉測試。修訂版如下所示:

git checkout test
git pull
git checkout master
git pull origin master
git merge test
git push origin master

答10:

huntsbot.com精選全球7大洲遠(yuǎn)程工作機會,涵蓋各領(lǐng)域,幫助想要遠(yuǎn)程工作的數(shù)字游民們能更精準(zhǔn)、更高效的找到對方。

我會根據(jù)開發(fā)和功能分支回答,

如果您在功能分支上并且需要使用開發(fā)更新它,請使用以下命令:

git checkout develop
git pull
git checkout feature/xyz
git merge develop

現(xiàn)在您的 feature/xyz 已更新為 develop 分支,您可以將更改推送到遠(yuǎn)程 feature/xyz。

答11:

保持自己快人一步,享受全網(wǎng)獨家提供的一站式外包任務(wù)、遠(yuǎn)程工作、創(chuàng)意產(chǎn)品訂閱服務(wù)–huntsbot.com

正如標(biāo)題所說的“最佳方式”,我認(rèn)為考慮耐心合并策略是個好主意。

來自:https://git-scm.com/docs/merge-strategies

使用這個選項,‘merge-recursive’ 會花費一些額外的時間來避免有時由于不重要的匹配行(例如,來自不同函數(shù)的大括號)而發(fā)生的錯誤合并。當(dāng)要合并的分支大相徑庭時使用此選項。另請參閱 git-diff[1] --patience。

用法:

git fetch
git merge -s recursive -X patience origin/master

Git 別名

我總是為此使用別名,例如運行一次:

 git config --global alias.pmerge 'merge -s recursive -X patience'

現(xiàn)在你可以這樣做:

git fetch
git pmerge origin/master

原文鏈接:https://www.huntsbot.com/qa/xM8M/how-do-i-safely-merge-a-git-branch-into-master?lang=zh_CN&from=csdn

huntsbot.com提供全網(wǎng)獨家一站式外包任務(wù)、遠(yuǎn)程工作、創(chuàng)意產(chǎn)品分享與訂閱服務(wù)!

到了這里,關(guān)于如何安全地將 Git 分支合并到 master 中?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • git 將本地分支與遠(yuǎn)程master主分支合并

    參考:https://blog.csdn.net/xiaochumen0707/article/details/119113933 應(yīng)該是先commit 自己本地的代碼 再pull 直接pull 你本地的代碼還沒提交就直接被覆蓋了 我的建議是: 1.在本地修改與遠(yuǎn)程代碼無沖突的情況下,優(yōu)先使用:pull-commit-push 2.在本地修改與遠(yuǎn)程代碼有沖突的情況下,優(yōu)先使用:

    2024年02月06日
    瀏覽(20)
  • Git-開發(fā)分支(develop)合并到主分支(master)

    確保您正在 master 分支中,可以使用以下命令切換到 master 分支: 使用以下命令從 develop 分支中獲取最新的更改: 這將把 develop 分支中的更改合并到當(dāng)前的 master 分支中。 如果合并過程中出現(xiàn)沖突,需要手動解決這些沖突。 反之,如果沒有沖突則直接到步驟5即可 。Git 會在合

    2024年02月05日
    瀏覽(43)
  • git將master主分支最新代碼合并到自己的分支

    1. 打開項目,切換到master主分支 2. 拉取master主分支最新代碼 3. 切換到自己的分支dev 4. 把master主分支的代碼合并到自己的分支dev上 5. 推送最新代碼到自己的遠(yuǎn)程分支

    2024年02月12日
    瀏覽(19)
  • Git 合并自己分支A的代碼到dev或master分支

    假如我們現(xiàn)在要把自己分支A的代碼合并到develop分支或者master分支,可以遵循以下步驟

    2024年02月08日
    瀏覽(21)
  • idea中 使用git實現(xiàn)遠(yuǎn)程倉庫master分支和dev分支互相合并

    idea中 使用git實現(xiàn)遠(yuǎn)程倉庫master分支和dev分支互相合并

    1.在右下角當(dāng)前分支下,選擇創(chuàng)建分支選項 ?2.給分支起名字 3.創(chuàng)建后,自動切換成新分支 ?4.將dev分支內(nèi)容提交到遠(yuǎn)程dev倉庫 進(jìn)行add,commit,pull,push操作。 1commit操作 ?2.進(jìn)行pull操作,遠(yuǎn)程倉庫沒有,可暫時忽略 ?3.push操作? ?4.查看遠(yuǎn)程倉庫 ? 1.切換到master分支 ?切換到遠(yuǎn)

    2024年02月15日
    瀏覽(99)
  • 【團隊協(xié)作開發(fā)】IDEA中Git新建自己的dev工作分支,合并到master主分支教程(極其簡單,新手)

    【團隊協(xié)作開發(fā)】IDEA中Git新建自己的dev工作分支,合并到master主分支教程(極其簡單,新手)

    一、創(chuàng)建新dev工作分支 創(chuàng)建完新dev分支以后將默認(rèn)切換到新dev分支上 二、push到自己的遠(yuǎn)程dev工作分支 流程和master上push內(nèi)容一樣,也是先add暫存,然后commit,push 三、工作分支合并到master主分支 確保在自己分支上是對的,然后再合并到主分支中 1、先切換到master主分支 2、將

    2024年02月10日
    瀏覽(27)
  • git如何將分支名由main改為master

    要將分支名從 “main” 改為 “master”,請按照以下步驟操作: 首先,確保你已經(jīng)在要重命名的分支上。通常,這是 “main” 分支。要檢查當(dāng)前分支,請運行以下命令: 這將顯示所有本地分支,當(dāng)前分支前會有一個星號 (*)。 如果你需要切換到 “main” 分支,請運行以下命令

    2024年03月19日
    瀏覽(42)
  • git如何合并分支

    工作中團隊協(xié)作的時候需要把子分支合并到主分支上,這里給大家說一下如何合并分支 第一步 先將子分支的代碼上傳 第二步 切換子分支 第三步 第四步 合并子分支 第五步 提交

    2024年02月10日
    瀏覽(20)
  • 在git中如何撤銷分支合并

    一個項目,主要開發(fā)在dev分支,目前dev分支有需求A,在別的菜單頁面也有一個需求B,于是在dev分支下新建了一個分支dev_b,打算等A需求上線,再合并dev_b分支到dev。 具體的操作步驟: 在本地切換到dev分支:git checkout dev 新建一個dev_b分支:git checkout -b dev_b 在dev_b分支上開發(fā)

    2024年02月07日
    瀏覽(25)
  • 【Git】git初始化項目時 | git默認(rèn)創(chuàng)建main分之 | 如何將git默認(rèn)分支從main改為master

    在 Git 中,如果你在第一次提交后想要將默認(rèn)分支名從 main 修改為 master,你可以按照以下步驟進(jìn)行操作: 創(chuàng)建 master 分支: 首先,你需要在當(dāng)前的 main 分支基礎(chǔ)上創(chuàng)建一個新的 master 分支。使用以下命令: 刪除 main 分支: 現(xiàn)在你已經(jīng)創(chuàng)建了一個新的 master 分支,可以將 main

    2024年02月08日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包