使用“ git checkout -b”创建公共存储库的新分支

时间:2018-07-16 18:03:24

标签: git

我正在尝试使用“ git checkout -b”从公共存储库创建一个新分支。我在What is the difference between "git branch" and "git checkout -b"?阅读有关此内容的内容。 Tuong Le提供了此解决方案:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

他添加了if there's no FROM_BRANCH, git will use the current branch

我正在尝试找出在[FROM_BRANCH]中使用什么。

在我的本地计算机上使用git remote -v时,显示以下信息:

origin  ssh://[username]@[domain]/~[username]/public_html/public.git (fetch)
origin  ssh://[username]@[domain]/~[username]/public_html/public.git (push)

我使用SSH登录到具有该公共存储库的服务器,并且这样做:

# git remote -v
origin  /home/[Unix user]/public_html/app (fetch)
origin  /home/[Unix user]/public_html/app (push)
# pwd
/home/[Unix user]/public_html/[path to source code]
# git branch
  D
  newheader
  responsivenavigation
  bluesidebar
* master
  reports

我知道,如果我仅使用git checkout -b mynewbranch而不指定[FROM_BRANCH],那么它将以master为基础创建一个新分支,因为master是当前分支。那不是我想要的。我想从这个公共存储库中的一个名为mynewbranch的分支创建一个新分支:/home/[username]/public_html/public.git。那是一个远程存储库,当我在本地计算机上使用git branch -a时,我将其视为remotes/origin/mynewbranch。谢谢。

更新1:我可以在本地计算机git checkout -b mynewbranch remotes/origin/mynewbranch上轻松使用它。但事实是,我不是想从本地计算机上执行此操作。我正在使用SSH来访问服务器,并且要从服务器上(我有这个remotes/origin/mynewbranch来访问服务器),我想根据此remotes/origin/mynewbranch创建一个新分支。当我转到服务器并使用git branch -a时,看不到此remotes/origin/mynewbranch。它住在哪里?如何从该remotes/origin/mynewbranch分支所在的服务器上根据remotes/origin/mynewbranch创建一个新分支?问题是,当我使用SSH登录服务器并使用git branch -a时,看不到此remotes/origin/mynewbranch分支。我期待看到它。

更新2:语法为:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

我正在尝试使用此

git checkout -b mynewbranch origin/mynewbranch

我收到此错误:

error: pathspec 'mynewbranch' did not match any file(s) known to git.
error: pathspec 'origin/mynewbranch' did not match any file(s) known to git.

更新3:在我的本地计算机上,执行此操作:

git branch -a

结果的其中一行是:

remotes/origin/mynewbranch

到目前为止非常完美。这意味着当我在本地计算机上使用git push origin mynewbranch时,该命令完成了将代码从本地计算机推送到公共存储库的工作。这就是为什么我在服务器remotes/origin/mynewbranch上看到此公共存储库的原因。我现在要做的就是在服务器上签出我刚刚推送到此公共存储库中的代码:remotes/origin/mynewbranch。我怎么做?登录具有公共存储库的服务器时,我使用SSH,然后尝试git branch -a。我看不到remotes/origin/mynewbranch。我想从公共存储库而不是从本地计算机中检出该分支。我该怎么办?

3 个答案:

答案 0 :(得分:0)

如果您要创建一个名为mynewbranch的分支,该分支始于(并跟踪)一个在本地标记为origin/mynewbranch的现有远程分支,通常您可以说

git checkout mynewbranch

只要mynewbranch不存在并且origin是您拥有名为(repo)/mynewbranch的远程跟踪引用的唯一存储库,这将创建本地分支并将其与跟踪参考。

答案 1 :(得分:0)

当您开始在现有的远程分支上工作时,只需在签出分支时使用--track标志即可。 例如。

$ git checkout --track origin/feature
Branch feature set up to track remote branch feature from origin.
Switched to a new branch 'feature'

答案 2 :(得分:0)

对我有用的解决方案是在拥有公共存储库的服务器上使用以下内容:

# git pull /home/[username]/public_html/public.git mynewbranch