【问题标题】:How to checkout a remote git branch ? Or to link a remote branch with a different git directory branch?如何签出远程 git 分支?或者将远程分支与不同的 git 目录分支链接?
【发布时间】:2021-03-07 10:11:48
【问题描述】:

我正在使用多个存储库

  • origin : 远程仓库

  • back : 这是我本地 PC 上存储库的备份

  • uptreams : 用于稍后拉取请求的存储库

     git remote -v
     back    /opt/lampp/htdocs/work/repo_backup/webtrees (fetch)
     back    /opt/lampp/htdocs/work/repo_backup/webtrees (push)
     origin  https://github.com/ckl67/webtrees.git (fetch)
     origin  https://github.com/ckl67/webtrees.git (push)
     upstream        https://github.com/fisharebest/webtrees.git (fetch)
     upstream        https://github.com/fisharebest/webtrees.git (push)
    

本地 在我的“git 目录”中,我正在使用多个分支

  • 主人
  • 工作
  • 开发

在我的“git 目录”中,我在分支“work”中工作,因为我不想干扰“master”分支

我的存储库“back”用于测试软件。 此“本地”存储库用于将(html、php、javascript)代码 ftp 到本地目录以进行测试(Apache、mysql 本地服务器)

当我“返回”推送到存储库时

     git push back

我所有的分支也会被推送 默认情况下,存储库“back”将指向分支“master”

所以这意味着我无法测试我的代码。 为此,我必须“返回”存储库,

   checkout work
   "test"
   checkout master

因为,我已经看到在我的存储库“返回”时无法“git push back”,分支“work”被激活!

所以我在这里有点麻烦。

问题 1) 可以远程结帐吗?

从我的“git 目录”到我的存储库“back”的结帐分支“work”? 所以原则将来自我的“git目录”

 git push back
  --> checkout to "work" in repository "back
 * perform test --> ftp to my local directory in order to test
  --> checkout back to "master" in repository "back
 git push back :: to update all branches (master/work/dev)

解决方案 2) 可以链接 git directory/work --> back/master 意思是,当我“git push back”时,返回/工作将被更新 我已经测试过了

  git branch --set-upstream-to=back/master work

但是没用

  git branch --set-upstream-to=back/master work
  The 'work' branch is set to follow the remote 'master' branch from 'back'.
  /opt/lampp/htdocs/work/webtrees $ git push back fatal: The upstream branch of your current branch does not match
  with the name of your current branch

当然是因为,在“repository back”中我有

  git clone --depth 1 https://github.com/ckl67/webtrees.git

谢谢

【问题讨论】:

  • 关于问题 1:是。你可以签出一个远程分支....比如,说:git checkout a-remote/a-branch。这将使您进入 detached HEAD 状态,并且不会创建本地分支。
  • 很遗憾,您的建议无效,请您帮忙

标签: git git-branch upstream-branch


【解决方案1】:

在我的“git 目录”上运行命令,git 结果突出显示在存储库“返回”上,我现在指向最后一次提交 (与本地工作分支相同)

git checkout back/work
HEAD is now on 34a8a8e small correction in gitignore file for temporary fix of #3479

所以,一切都应该没问题! 但是在存储库“返回”

  VirtualBox:/opt/lampp/htdocs/work/repo_backup/webtrees$ git branch --all
  * master
    work
    remotes/origin/HEAD -> origin/master
    remotes/origin/master

我看到分支 master 还在签出!!

你能解释一下,并给出诀窍吗?

【讨论】:

  • 在最后一个命令中,当您进行结帐时,您在 remote 分支上......好吧,远程分支指向的修订版。 .. 而你在分离的 HEAD.. 与 git status
  • plus,您应该通过编辑将其作为附加信息添加到问题中,而不是作为答案。欢迎来到 SO!
  • 是的,你是对的,当我在 git 目录中运行 git status 时,我得到了 git status HEAD détachée sur back/master 所以这意味着 ??
  • ... 这是否意味着无法修改远程分支?...因为在存储库 "back" 上,我仍然看到 master 已签出
  • 你可以....但不能通过只是在本地提交。您可以在本地处理分离的 HEAD 或使用本地分支提交,然后您可以推送到远程分支(如果在分离的 HEAD 上工作,您可以执行 git push the-remote HEAD:the-branch)
猜你喜欢
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 2018-12-22
  • 2012-10-22
  • 2015-09-26
相关资源
最近更新 更多