【问题标题】:pull remote branch without merge拉远程分支而不合并
【发布时间】:2018-11-02 06:28:41
【问题描述】:

我创建了一个分支b1 并对其进行了一些更改并将其推送到远程存储库:

git branch b1
git checkout b1
git add newfile.txt
git commit -m "adding a new file"
git push origin b1

在连接到远程存储库的另一台机器上,我尝试在不与 master 合并的情况下提取分支:

$git branch
*master
$git pull origin b1
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From sl*******02:/opt/git/projet1
 * branch            b1    -> FETCH_HEAD
Updating fca3b48..1d96ceb
Fast-forward
 newfile.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 newfile.txt

$git branch
*master

我的预期:

$git branch
*master
b1

【问题讨论】:

  • 在推送代码之前,您似乎错过了签出新分支的一步?
  • git branch 列出本地分支,因为您从未签出b1 它只驻留在远程,所以也使用git branch -a 列出它。要将其作为本地分支,请使用git checkout b1 进行检查,这将在远程分支之外创建一个本地分支并在它们之间设置上游映射。
  • @LasseVågsætherKarlsen 这是我结帐时得到的 b1 error: pathspec 'b1' did not match any file(s) known to git.
  • 先试试不带参数的git fetch,或者git fetch origin

标签: git git-push git-pull


【解决方案1】:

我是这样做的:

步骤:

  • 结帐到不同的分支
  • git 存储
  • 删除了出现合并错误/冲突的本地分支
  • git 是否全部获取了
  • git checkout
  • git 拉取源

命令:

例如:

  • 错误分支名称:错误分支

  • 其他分支名称:其他分支

  • git checkout Other-branch
  • git stash
  • git branch -d Error-branch(如果不起作用,请在下面使用)
  • git branch -D Error-branch(如果有合并冲突)
  • git fetch all
  • git checkout Error-branch
  • git pull origin

希望能解决你的问题

【讨论】:

    【解决方案2】:

    在提交之前也可以

    使用以下命令

    git stash
    git pull
    git stash apply
    

    【讨论】:

      【解决方案3】:

      你实际上是在问两个问题:

      • 在标题中 - 如何在不合并的情况下拉取(我最初是为了这个问题而来的;)
      • 在描述中 - 如何在不合并到 master 的情况下签出分支

      拉取远程分支而不合并

      # Assuming you are on wanted branch (b1) already
      
      git pull --rebase
      

      没有merge,只有rebase

      签出远程分支(来自原点)

      git fetch 
      git checkout b1
      

      不合并到master,创建新分支b1

      【讨论】:

        【解决方案4】:
        git remote update origin —prune
        

        【讨论】:

        • 欢迎来到 Stack Overflow。如果格式化为代码,命令更容易阅读。通常可以通过添加一些解释来改进纯代码的答案,说明它们的工作方式和原因,在命令的情况下,如果成功,预期输出会是什么样子,或者如果适用,如何解释命令的结果。
        【解决方案5】:

        您可以使用git fetch origin b1 仅获取远程分支而不进行合并。

        见:https://git-scm.com/docs/git-fetch

        基本上git pullgit fetch && git merge 的快捷方式

        合并执行,因为您在 master 分支上,而不是您的本地 b1 分支上。

        【讨论】:

          【解决方案6】:

          你想签出远程分支

          git checkout b1
          

          如果你使用的是

          git checkout -b b1 origin/b1
          

          【讨论】:

          • 如果这个分支仍然不存在,我该如何签出?
          • @Carole 它默认来自您已经获取的唯一可用遥控器
          • 你能解释更多吗?
          • @Carole 您首先需要执行 git fetch,这会获取所有远程分支,您可以使用 git branch -a 查看它们,执行 git checkout b1 时切换到 origin/b1 分支
          猜你喜欢
          • 2019-08-11
          • 2015-07-23
          • 2011-03-04
          • 2013-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-04
          • 2011-10-10
          相关资源
          最近更新 更多