有人推了一个分行test
与git push origin test
共享仓库的共享仓库。git branch -r
如何查看遥控器test
我试过了
git checkout test
,它没有做任何事情git checkout origin/test
给给* (no branch)
有人推了一个分行test
与git push origin test
共享仓库的共享仓库。git branch -r
如何查看遥控器test
我试过了
git checkout test
,它没有做任何事情git checkout origin/test
给给* (no branch)
当前回答
TL; DR TR; TL; TDR
使用git switch
而不是git checkout
。更多详情见此页面上的.
我认为答案是过时的。checkout
至switch
和restore
现在。
以下是我的总结:
如果您想要为远程分支更新一些内容, 您应该创建一个本地分支以“ 跟踪” 远程分支 。 您可以在本地更新任何您想要更新的内容, 并最终推到远程 。 如果您在克隆您的仓库后直接检查到远程分支, 您可能会看到“ 忽略的 HEAD” 状态, 以及 Git 的下列消息 :
Note: switching to 'origin/asd'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d3e1083 Update a
那么,我们如何建立本地分支来追踪远程分支呢?
要创建本地分支以跟踪远程分支, 您可以使用git checkout <remote branch name>
或git switch <remote branch name>
。如果您有一个文件或文件夹的名称与您的远程分支名称相同,git checkout
将输出一些错误消息, 但是git switch
可以正常工作! 正常工作! 正常工作!
示例:
查看所有分支, 我们想要创建一个本地分支, 跟踪远程分支remotes/origin/asd
,我们也有文件名asd
:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/asd
remotes/origin/ereres
remotes/origin/master
remotes/origin/zxc
$ ls
a asd
文件名与远程分支相同, 如果我们使用 Git , Git 应该输出一些错误信息git checkout
创建本地分支以跟踪远程分支
$ git checkout asd
fatal: 'asd' could be both a local file and a tracking branch.
Please use -- (and optionally --no-guess) to disambiguate
如果我们用它,它就会有效git switch
!
$ git switch ereres
Branch 'ereres' set up to track remote branch 'ereres' from 'origin'.
Switched to a new branch 'ereres'
$ git branch -vv
* ereres 3895036 [origin/ereres] Update a
master f9e24a9 [origin/master] Merge branch 'master' of
其他回答
答案已经分割, 取决于是否配置了一个远程仓库或多个。 原因是对于单个远程案例, 某些命令可以简化, 因为模糊性较小 。
Git 2. 23 更新:旧版本见结尾部分。
在这两种情况下,先从远程仓库获取,以确保您下载了所有最新修改。
$ git fetch
这将为您获取所有远程分支。 您可以看到可用以检查的分支 :
$ git branch -v -a
...
remotes/origin/test
开始于树枝的树枝remotes/*
可被视为只读取远程分支的复制件 。 要在分支上工作, 您需要从分支中创建本地分支 。 这是与 Git 命令一起完成的 。switch
(自 Git 2.23 以来, 通过给它提供远程分支的名称( 减去远程名称) :
$ git switch test
在此情况下, Git 是在猜测 (可以使用--no-guess
),您正试图用相同的名字检查和跟踪远程分支。
如果存在多个远程存储库,则需要明确指定远程存储库的名称。
与之前一样, 从获取最新的远程更改开始 :
$ git fetch origin
这将为您获取所有远程分支。 您可以看到可用以检查的分支 :
$ git branch -v -a
手边有远程树枝 现在需要查看您感兴趣的树枝-c
创建一个新的本地分支 :
$ git switch -c test origin/test
欲了解更多关于使用的信息git switch
:
$ man git-switch
我还为您创建了下面的图像, 以便分享差异, 看看如何获取工作, 以及拉动有什么不同:
git switch
在此之前,在Git 2.23中加上git checkout
用于交换分支。
仅使用一个远程仓库退出 :
git checkout test
如果有多个已配置的远程仓库, 它会变长一点
git checkout -b test <name of remote>/test
在这种情况下,你可能想要 创建本地test
正在跟踪远程test
分支 :
$ git branch test origin/test
先前版本的git
,你需要一个明确的--track
选项,但当您正在从一个远程分支进行分支分割时,这是默认值。
创建本地分支和切换到它,使用:
$ git checkout -b test origin/test
请遵循命令创建空文件夹。 请输入并使用此命令 :
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'
我被困在一个状况中看到error: pathspec 'desired-branch' did not match any file(s) known to git.
以上所有建议。我正在讨论Git 1.8.3.1版本。
所以这个为我工作:
git fetch origin desired-branch
git checkout -b desired-branch FETCH_HEAD
背后的解释是,我注意到 当我拿起遥控树枝时,时前:
git fetch origin desired-branch
From github.com:MYTEAM/my-repo
* branch desired-branch -> FETCH_HEAD
您可以开始跟踪所有远程分支, 使用以下 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 ;