git查看远程分支地址 - git跟踪远程分支




如何查看远程Git分支? (18)

接受的答案不适合你?

虽然第一个和选定的答案在技术上是正确的 ,但您可能还没有从远程存储库中检索所有对象和引用。 如果是这种情况,您将收到以下错误:

$ git checkout -b remote_branch origin/remote_branch

致命:git checkout:更新路径与切换分支不兼容。
您是否打算签出无法解析为提交的'origin / remote_branch'?

如果收到此消息,则必须首先执行git fetch origin ,其中origin是运行git checkout remote_branch之前远程存储库的名称。 以下是响应的完整示例:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

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

如您所见,运行git fetch origin检索了我们尚未设置为在本地计算机上跟踪的任何远程分支。 从那里开始,因为我们现在有一个参考远程分支,我们可以简单地运行git checkout remote_branch ,我们将获得远程跟踪的好处。

有人用git push origin test将名为test的分支git push origin test送到共享存储库。 我可以看到git branch -r

现在我正在尝试检查远程test分支。

我试过了:

  • git checkout test什么都不做

  • git checkout origin/test给出* (no branch) 。 这令人困惑。 我怎么能在“没有分支”?

如何查看远程Git分支?


更新

Jakub的答案实际上改善了这一点。 Git版本≥1.6.6,只有一个遥控器,您可以这样做:

git fetch
git checkout test

正如用户masukomi在评论中指出的那样,如果你有多个遥控器, git checkout test将不适用于现代git。 在这种情况下使用

git checkout -b test <name of remote>/test

老答案

在开始在远程分支上本地工作之前,您需要在下面的答案中调用它。

要获取分支,您只需:

git fetch origin

这将为您获取所有远程分支。 您可以通过以下方式查看可用于结帐的分支机构:

git branch -v -a

有了远程分支机构,您现在需要查看您感兴趣的分支机构,为您提供本地工作副本:

git checkout -b test origin/test

git fetch && git checkout your-branch-name


git remote show <origin name>命令将列出所有分支(包括未跟踪的分支)。 然后,您可以找到需要获取的远程分支名称。

例:

$ git remote show origin

使用以下步骤获取远程分支:

git fetch <origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

例:

$ git fetch origin test:test
$ git checkout test

好的 ,答案很简单......你基本上看到了分支,但你还没有本地副本!...

你需要fetch分支......

您可以简单地获取然后结帐到分支,使用下面的一行命令来执行此操作:

git fetch && git checkout test

我还创建了下面的图片,供您分享差异,看看fetch工作原理以及它的不同之处:


获得新创建的分支机构

git fetch

切换到另一个分支

git checkout BranchName

使用:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

在我的良性案例中,其他答案不适用于现代Git。 如果远程分支是新的,您可能需要先拉,但我没有检查过这种情况。


其他人和女孩给出了解决方案,但也许我可以告诉你为什么。

git checkout test什么都不做

Does nothing不相等doesn't work ,所以我猜你在终端输入'git checkout test'并按回车键,不会出现任何消​​息,也不会出现错误。 我对吗?

如果答案是'是',我可以告诉你原因。

原因是工作树中有一个名为“test”的文件(或文件夹)。

解析git checkout xxx

  1. Git最初将xxx视为分支名称,但没有任何名为test的分支。
  2. 然后Git认为xxx是一个路径,幸运的是(或不幸的是),有一个名为test的文件。 所以git checkout xxx意味着丢弃xxx文件中的任何修改。
  3. 如果没有名为xxx文件,那么Git将尝试根据某些规则创建xxx 。 其中一条规则是,如果存在remotes/origin/xxx则创建一个名为xxx的分支。

命令

git fetch --all
git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name>

等于

 git fetch --all

然后

 git checkout -b fixes_for_dev origin/development

两者都将从development创建latest fixes_for_dev


在这种情况下,您可能希望创建一个跟踪远程test分支的本地test分支:

$ git branch test origin/test

在早期版本的git ,您需要一个显式的--track选项,但是当您从远程分支分支时,这是默认选项。


如果远程分支名称以特殊字符开头,则需要在checkout命令中使用单引号,否则git将不知道您正在谈论哪个分支。

例如,我试图检查一个名为#9773的远程分支,但命令无法正常工作,如下图所示:

出于某种原因,我想知道尖锐的符号(#)是否与它有关,然后我尝试用单引号包围分支名称,比如'#9773'而不仅仅是#9773 ,它运行良好。

$ git checkout -b '#9773' origin/'#9773'

您可以使用以下Bash脚本开始跟踪所有远程分支:

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`
  do git branch -f --track "$branch" "origin/$branch"
done

这也是一个单行版本:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ;

我尝试了上面的解决方案,但它没有用。 试试这个,它有效:

git fetch origin 'remote_branch':'local_branch_name'

这将获取远程分支并创建一个名为local_branch_name的新本地分支(如果尚不存在)并跟踪其中的远程分支。


我遇到了error: pathspec 'desired-branch' did not match any file(s) known to git.的情况error: pathspec 'desired-branch' did not match any file(s) known to git. 对于上述所有建议。 我正在使用git版本1.8.3.1。

所以这对我有用

git fetch origin && git checkout branch_name 

背后的解释是我注意到在获取远程分支时,它被取出到FETCH_HEAD:

git fetch origin desired-branch
git checkout -b desired-branch FETCH_HEAD

要克隆Git存储库,请执行以下操作:

git clone <either ssh url /http url>

上面的命令检出所有分支,但只初始化master分支。 如果要结帐其他分支机构,请执行以下操作:

git checkout -t origin/future_branch (for example)

此命令检出远程分支,您的本地分支名称将与远程分支相同。

如果要在结帐时覆盖本地分支名称:

git checkout -t -b enhancement origin/future_branch

现在您的本地分支名称是enhancement ,但您的远程分支名称是future_branch

Documentation


请按照命令创建一个空文件夹。 输入并使用此命令:

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin.
Switched to a new branch '1_4_0_content_discovery'

这将是远程未命名源( documentation )的DWIM

$ git checkout -t remote_name/remote_branch

要添加新遥控器,您需要先执行以下操作:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

第一个告诉Git远程存在,第二个获取提交。


首先,你需要做:

git fetch #如果你不知道分支名称

git fetch origin branch_name

其次,您可以通过以下方式检查远程分支到您的本地:

git checkout -b branch_name origin/branch_name

-b将从您选择的远程分支创建指定名称的新分支。





remote-branch