我在Git中创建了一个新分支:
git branch my_branch
Run Code Online (Sandbox Code Playgroud)
推它:
git push origin my_branch
Run Code Online (Sandbox Code Playgroud)
现在说有人在服务器上做了一些更改,我想从中拉出来origin/my_branch.我做:
git pull
Run Code Online (Sandbox Code Playgroud)
但我得到:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.my_branch.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.
If you often merge with the same branch, you may want to
use something like …Run Code Online (Sandbox Code Playgroud) 如何查询git以找出哪些分支包含给定的提交?gitk通常会列出分支,除非有太多分支,在这种情况下它只是说"很多(38)"或类似的东西.我需要知道完整列表,或者至少是否某些分支包含提交.
我已经开始玩Git并遇到过"上游"和"下游"这两个词.我之前见过这些,但从未完全理解它们.这些术语在SCM(软件配置管理工具)和源代码的上下文中意味着什么?
一个"陈旧"的git分支是我听过很多的术语.我知道它与分支有关,这些分支被认为不太有用或无用,但无法找到确切的定义.什么是"陈旧"的git分支?
我很难理解git-fetch的细微差别.我知道做一个fetch,将远程refs提取到本地跟踪分支.
我有几个问题:
是否有可能本地跟踪分支不存在?如果是,那么它会自动创建吗?
如果我执行fetch并指定非跟踪分支作为目标,会发生什么?
git-fetch的手册页指定:
git-fetch <options> <repository> <refspec>
Run Code Online (Sandbox Code Playgroud)我如何使用refspec从远程主站获取内容到其远程跟踪分支?我相信如果我现在的HEAD在主人身上并且我跑了,这可能是可能的
git fetch origin master
但是,我可以使用<+?src:dest>refspec来实现同样的目的吗?我认为这将有助于我更好地理解这些概念.
还有一个问题:
我的.git/config文件有以下行用于获取(仅显示相关行):
fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
有人可以解释这条线的确切含义吗?
我对Git很新.
我正在创建一个分支,然后想要推送它origin.
我认为简单发布git push(站在我的分支上)应该足够了.
这样做是否可行/合理(通过指定push.default简单)?
这主要是好奇心的本质,因为我正在努力熟悉Git.我查看了'git fetch'的文档,但我没有看到下面的明显解释.在此先感谢,如果这是显而易见的,请道歉.
1)从中央存储库,比如说GitHub,我克隆一个名为website两台机器上的存储库,HostA和HostB.
2)on HostA,我对文件进行了更改,比如说README.txt,然后提交它.
在这一点上HostA,分支的提交master和
origin/master预期的不同,因为我尚未推动
git show master
git show origin/master
Run Code Online (Sandbox Code Playgroud)
报告不同的哈希值(因为master有变化而origin/master没有)
3)一旦我推,他们就是在那之后.
4)现在,HostB如果我做了以下事情:
git fetch
git merge FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
之后,在HostB上master并origin/master在查询时报告相同的哈希值git show
但
如果相反我做了,在HostB:
git fetch origin master
git merge FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
在那一点上,哈希仍然不同.
git show origin
git show origin/master
Run Code Online (Sandbox Code Playgroud)
报告不同的哈希值
跟踪分支origin/master在我做普通之前不会更新git fetch
为什么是这样?
假设您有一个具有中央主git存储库的场景,开发人员和CI引擎可以从中进行克隆.即非常接近传统的非分布式版本控制系统设置,具有中央集线器和许多节点.
现在说服务器被闪电或任何其他可能导致中央存储库与其所有集中备份一起消失的东西被盗或被攻击.您剩下的就是各种克隆,幸运的是其中一个已完全更新,因此您创建了一个空白的git存储库替换服务器,用作未来的中央存储库并开始处理克隆.
完全更新的克隆使用"git branch -a"知道所有"远程/源"分支,但只有一个本地分支.(这让我担心 - 失去分支机构信息).
重新建立一个新的中央git存储库的步骤是什么,表现在任何方式,如旧的,分支机构和所有?
我有一个带有一些子模块的项目.其中许多是从GitHub fork中克隆到的,我为自定义mod添加了一个分支.典型的设置如下:
在本地文件夹中:MyProject1/Frameworks/SomeAmazingRepo /
$ git branch -vva
*my-fork 123456 [my-fork/my-fork] Latest commit msg from fork
master abcdef [origin/master] Latest commit msg from original repo
remotes/my-fork/my-fork 123456 [my-fork/my-fork] Latest commit msg from fork
remotes/my-fork/master abcdef [origin/master] Latest commit msg from original repo
remotes/origin/HEAD -> origin/master
remotes/origin/master abcdef [origin/master] Latest commit msg from original repo
$ git remote -v
my-fork git@github.com:MyUser/SomeAmazingRepo.git (fetch)
my-fork git@github.com:MyUser/SomeAmazingRepo.git (push)
origin git://github.com/OriginalOwner/SomeAmazingRepo.git (fetch)
origin git://github.com/OriginalOwner/SomeAmazingRepo.git (push)
Run Code Online (Sandbox Code Playgroud)
我git clone --recursive我的项目开始一个新的分拆计划,当它开始递归,它吐出了一个错误,声称它找不到这些回购存储的提交.检查后,似乎没有添加遥控器,并且分支机构在主机中留下(空)...
在本地文件夹中:MyProject2/Frameworks/SomeAmazingRepo /
$ git branch …Run Code Online (Sandbox Code Playgroud) 我仍然学习git而不确定一些基本的东西是如何运作的.我做了一个本地分支:
git branch AppStore
Run Code Online (Sandbox Code Playgroud)
我不记得我是如何将这个分支推送到github.com的,但我可以在存储库中看到MyBranch.当我做
git branch -a
Run Code Online (Sandbox Code Playgroud)
我看到了这个:
ARC
* AppStore
Refactoring
Release3
master
remotes/origin/AppStore
remotes/origin/HEAD -> origin/master
Run Code Online (Sandbox Code Playgroud)
还列出了更多的遥控器.因此,在我创建分支的计算机上,我看到了AppStore分支.但是,我的同事都不能.当我们尝试了
git pull origin AppStore
Run Code Online (Sandbox Code Playgroud)
它抓住了变化.但是当我们尝试时
git checkout AppStore
or
git checkout origin AppStore
Run Code Online (Sandbox Code Playgroud)
我们无法做到.我们缺少什么?谢谢!
编辑:
我根据VonC的回答尝试了这个:
git push --set-upstream origin AppStore
Run Code Online (Sandbox Code Playgroud)
在输入我的凭据后,我得到:
Branch AppStore set up to track remote branch AppStore from origin.
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)
但我的同事仍然看不到分支: - .
git ×10
branch ×2
git-fetch ×2
cloning ×1
definition ×1
git-branch ×1
git-clone ×1
git-remote ×1
terminology ×1
versioning ×1