如何从另一个分支获取更改

时间:2016-06-08 17:39:01

标签: git

我目前正在featurex分支机构工作。我们的主分支名为分支our-team。自从我开始处理featurex以来,对分支our-team进行了更多更改。在我推送featurex进行合并之前,我会在本地希望将所有更改从our-team分支转换为featurex,以便我可以确保一切按预期工作。

我已在本地完成此操作以获取our-team的所有最新更改。

git checkout our-team
git pull

我该怎么做?

5 个答案:

答案 0 :(得分:28)

第1步:转到主分支our-team

  • git checkout our-team

第2步:从our-team分支

中提取所有新更改
  • git pull

第3步:转到您的分行featurex

  • git checkout featurex

步骤4:将our-team分支的更改合并到featurex分支

  • git merge our-team git cherry-pick {commit-hash} 如果要合并特定提交

第5步:使用our-team分支

的更改推送您的更改
  • git push
  

注意:在推送之前将our-team分支合并到featurex分支后,您可能需要修复冲突

答案 1 :(得分:9)

当您在分行git rebase our-team

时,可以使用featurex

DOC:https://git-scm.com/docs/git-rebase

它会在our-team分支的末尾移动分支的起点,合并featurex分支中的所有更改。

答案 2 :(得分:8)

git pull origin our-team

import UIKit
import AVKit
import AVFoundation
import MediaPlayer

class ViewController: UIViewController {

    let avPlayerViewControler = AVPlayerViewController()
    var avPlayer:AVPlayer?
    var videoNumber:Int!
    var url:String!

    override func viewDidLoad() {
        super.viewDidLoad()

        let urlpathString:String? = NSBundle.mainBundle().pathForResource("url", ofType: "mp4")

        if let urlPath = urlpathString {

            switch videoNumber {
            case 1 : url="20"
            case 2 : url="10"
            default : break
            }
            let movieUrl = NSURL(fileURLWithPath: urlPath)

        }
        self.avPlayer = AVPlayer(URL: movieUrl)
        self.avPlayerViewControler.player = self.avPlayer

    }

    @IBAction func Cool(sender: UIButton) {
        videoNumber=1
    }
}

但首先你要确保你已经在要更新的分支上(featurex)。

答案 3 :(得分:6)

针对其他在Google上发帖的人。 有两个选项,合并重新定基您的分支机构。两者的工作方式不同,但结果相似。

accepted answer rebase 。这会将对our-team所做的所有提交,然后应用于featurex,并提示您根据需要进行合并。

重新设置基准的一点警告是,您丢失/重写了分支历史记录,实际上是告诉git分支不是从123abc提交开始的,而是从456cde分支开始的。这 会给分支机构中的其他人员造成问题,一些远程工具会抱怨这一点。如果您确定自己在做什么,那就是--force标志的作用。

other posters的建议是 merge 。这将使用featurex分支(无论其处于何种状态),并尝试将其与our-team的当前状态合并,提示您进行一次大型合并合并并修复所有合并错误,然后再进行推送到our-team。区别在于您要在featurex新提交之前应用提交our-team提交,然后解决这些差异。您也不会重写历史记录,而是向其中添加一个提交,而不是重写以前的提交。

两个选项均有效,并且可以同时使用。通常,(如果您使用的是诸如git-flow之类的广泛工具和方法)对功能分支所做的工作通常是将其合并到主分支中,通常要经过合并请求,然后解决所有问题一个或多个合并提交中发生的冲突。

Rebasing是一个有趣的选项,它可以帮助您在最终进行合并之前修复分支,并减轻必须进行一次大型合并提交的痛苦。

答案 4 :(得分:2)

你快到了:)

剩下的就是

git checkout featurex
git merge our-team

这会将我们的团队合并到featurex中。

以上假设您已经在featurex中提交/隐藏了您的更改,如果不是这种情况,则需要先执行此操作。