簡體   English   中英

如何從另一個分支(開發)更新我的工作 Git 分支?

[英]How to update my working Git branch from another branch (develop)?

一個月前,我從主develop分支創建了一個名為feature1的新分支。

⇒  git branch 
  develop
* feature1

我已經在feature1上工作了一個月,並且已經推動了很多變化來develop

如何使用develop的最新提交更新我當前的分支feature1

我不想結帳master並將我的feature1分支合並到其中。 我也不想使用git cherry-pick手動將提交從develop移動到feature1

我該怎么做呢?

您只需將開發合並到功能1:

git checkout feature1
git merge develop

無需涉及其他分支,例如 master。

首先,您需要更新您的開發分支,然后檢查您的功能並合並/重新設置它。

git checkout develop
git pull
git checkout feature/myfeature

現在您可以決定是否運行:

git merge develop
git rebase develop
  • merge保留分支中的所有提交歷史記錄,如果您的部分提交有很多有趣的內容,這很重要。

  • rebase rebase 意味着從feature中刪除提交歷史,而不是從develop中獲得歷史; 在某些團隊中,此選項是強制性的。

准備好后,您可以推送到自己的分支(例如拉取請求)

git push origin feature/myfeature

這個用例對於保持更新您的 PR 分支非常有幫助。 首先,我建議您首先獲取遠程更改,即git fetch然后從develop合並或變基,但從遠程更改,例如

git rebase -i origin/develop

或者

git merge origin/develop

這樣,您將更新您的 PR 分支,而無需在分支之間來回切換。

如果您不希望develop頭和feature1頭都合並到feature1中,而是希望在使用develop的最新編輯“更新” feature1分支時保持每個分支頭不同,請不要使用 fast-forward

git pull
git co feature1
git pull
git merge --no-ff develop
git push

我個人每次執行合並時都嘗試使用--no-ff ,因為在我看來它可以保持歷史非常干凈。

分支機構:

開發 ====> 開發

功能1 ====> 工作


步驟 1從站點發送 Git

檢查您正在同步的分支

git status

為提交添加文件

git add .

帶有描述的提交

git commit -m "COMMENT"

發送到您同步的分支

git push

步驟 2將更新后的工作分支與 DEV(開發)同步 - 將工作分支與開發分支同步(更新開發分支)

與遙控器同步並切換到DEV分支

git checkout DEV

請求合並您正在與 feature1 分支同步的分支

git merge feature1

將當前分支與 feature1 分支合並

git push

第 3步 GIT 查找遠程 - 從更新的開發分支更新工作分支

連接到參考分支

git checkout DEV

搜索更改

git pull

與您的工作分支同步

git checkout feature1

請求合並與 DEV 分支同步的分支

git merge DEV

將當前分支與 DEV 分支合並

git push

在 IntelliJ IDEA 中,只需按照以下步驟操作:

  1. 打開 Git 工具窗口(查看->工具窗口->Git) 在此處輸入圖像描述

  2. 選擇“日志”

    在此處輸入圖像描述

  3. 右鍵單擊“開發”

  4. 單擊任一

    -Merge 'develop' 到 'feature1' (保留分支中的所有提交歷史記錄)

    或者

    -rebase 'develop' 到 'feature1' (從你的分支中刪除提交歷史,取而代之的是開發歷史)

    在此處輸入圖像描述

  5. 最后 Git 推送

我做了一個新的分支為我的代碼就像一個月前,我創建從開發分支特征1支。

⇒  git branch 
  develop
* feature1

我已經使用Feature1了一個月,並且許多更改都被推送到了開發分支上,如何使用開發一個的最新提交來更新當前的分支Feature1

我不想簽出master並合並我的feature1分支。 我也不想使用git cherry-pick來將提交從develop手動移動到feature1。

有什么幫助嗎?

為了避免使用簡單的合並從開發中提交,我發現更簡單(技術較少)的方法是特別是如果你已經推送

  1. 改變以開發,並確保您提取了最新的更改
  2. 從 develop 創建另一個分支, feature1_b
  3. feature1合並到feature1_b
  4. 如果您想要原始功能1,請feature1

因此,當您將feature1_b的 PR 轉為開發時,它只會包含您的新更改,而不是整個提交歷史。

如果您還沒有推送,那么@stackdave 的答案是一個很好的答案。

$ git checkout <another-branch> <path-to-file> [<one-more-file> ...]
$ git status
$ git commit -m "Merged file from another branch"
  1. git checkout開發
  2. git pull 3.git checkout localbranch

然后根據您的要求運行合並或變基

  1. git 合並開發
  2. git rebase開發

我找到了解決方案。 簽出上一個分支並拉取新分支https://stackoverflow.com/a/71306254/17779236

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM