Git 在推送分支之前获取最新更改

问题描述 投票:0回答:2

我有一个本地分支

features
,我基于本地
master
在我的代码中添加一些内容。我现在准备将它们合并回
master
,但是,远程
master
分支的状态从那时起已经发生了变化。

如何获取 master 的最新版本,然后在其上添加我的更改,以便我可以向远程

master
分支发出拉取请求。

我在这里读了几篇类似的文章,但他们都给出了不同的答案,我很困惑。

我应该首先“切换”到我的主分支,执行

git pull
然后以某种方式将我的
features
分支合并到其中(解决任何冲突),还是有其他方法。

有些文章指出了

git checkout branch features
的用法,但我不确定这有什么意义。据我了解,
git checkout
只是切换到某个分支。

任何人都可以为我指出正确的方向,告诉我如何处理这个问题。再说一遍,我只需要获取远程

master
分支的最新更改,这样当我推送我的
features
分支时,我就不会遇到大量冲突。

git merge version-control branching-and-merging git-checkout
2个回答
21
投票
  1. 前往
    master
    分支:
    git checkout master
  2. 更新您的本地
    master
    git pull origin master
  3. 解决冲突(如果适用)
  4. 返回
    features
    git checkout features
  5. master
    分支合并到
    features
    上:
    git merge master
  6. 通过以下方式推送更改:
    git push origin features

现在,您必须创建一个从

features
master
的新拉取请求。完成!


0
投票

我采纳了 Hector 的答案,并为 Windows 用户添加了一些“自动化”;

对我来说,我所有的个人存储库都在一个名为“Workspace”的目录中 所以我的文件树看起来像这样; c:\Users\Gavin\Workspace\App1 c:\Users\Gavin\Workspace\App2 促红细胞生成素1 c:\Users\Gavin\Workspace\App2 EP2

所以完整路径的最后一个目录也是 REPO 名称。

rem Start in the app-root
cd "C:\<Full\Path\to\mySourceCodeDirectory>"

rem Echo to the screen where we are
echo Current Path: %cd%

rem Get and store the last portion of the FULL PATH - (The repo name)
for %%f in ("%cd%") do set "current_directory=%%~nxf"
echo Git repository: %current_directory%

rem Get and save the current branch    
for /F "delims=" %%n in ('git branch --show-current') do set "current_branch=%%n"    
echo Current branch: %current_branch%

echo ===================================================

rem Turn echo back on so we can see what commands match any returned messages
@echo on
git stash push
git checkout master
git pull origin master
git checkout %current_branch%
git merge master
git push
git stash pop
© www.soinside.com 2019 - 2024. All rights reserved.