相关疑难解决方法(0)

为什么我需要一直做`--set-upstream`?

我在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 git-branch

1364
推荐指数
18
解决办法
93万
查看次数

如何列出包含给定提交的分支?

如何查询git以找出哪些分支包含给定的提交?gitk通常会列出分支,除非有太多分支,在这种情况下它只是说"很多(38)"或类似的东西.我需要知道完整列表,或者至少是否某些分支包含提交.

git version-control

1029
推荐指数
2
解决办法
28万
查看次数

"下游"和"上游"的定义

我已经开始玩Git并遇到过"上游"和"下游"这两个词.我之前见过这些,但从未完全理解它们.这些术语在SCM(软件配置管理工具)和源代码的上下文中意味着什么?

versioning git version-control terminology definition

869
推荐指数
6
解决办法
26万
查看次数

什么是"陈旧"的git分支?

一个"陈旧"的git分支是我听过很多的术语.我知道它与分支有关,这些分支被认为不太有用或无用,但无法找到确切的定义.什么是"陈旧"的git分支?

git branch

112
推荐指数
4
解决办法
5万
查看次数

很难理解git-fetch

我很难理解git-fetch的细微差别.我知道做一个fetch,将远程refs提取到本地跟踪分支.

我有几个问题:

  1. 是否有可能本地跟踪分支不存在?如果是,那么它会自动创建吗?

  2. 如果我执行fetch并指定非跟踪分支作为目标,会发生什么?

  3. 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 git-fetch

52
推荐指数
3
解决办法
3万
查看次数

git push vs git push origin <branchname>

我对Git很新.

我正在创建一个分支,然后想要推送它origin.

我认为简单发布git push(站在我的分支上)应该足够了.

这样做是否可行/合理(通过指定push.default简单)?

git

41
推荐指数
2
解决办法
9万
查看次数

git fetch与git fetch origin master对跟踪分支有不同的影响

这主要是好奇心的本质,因为我正在努力熟悉Git.我查看了'git fetch'的文档,但我没有看到下面的明显解释.在此先感谢,如果这是显而易见的,请道歉.

1)从中央存储库,比如说GitHub,我克隆一个名为website两台机器上的存储库,HostAHostB.

2)on HostA,我对文件进行了更改,比如说README.txt,然后提交它.
在这一点上HostA,分支的提交masterorigin/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上masterorigin/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 branch git-fetch

23
推荐指数
1
解决办法
5万
查看次数

Firedrill:从开发人员克隆重新创建中央git存储库

假设您有一个具有中央主git存储库的场景,开发人员和CI引擎可以从中进行克隆.即非常接近传统的非分布式版本控制系统设置,具有中央集线器和许多节点.

现在说服务器被闪电或任何其他可能导致中央存储库与其所有集中备份一起消失的东西被盗或被攻击.您剩下的就是各种克隆,幸运的是其中一个已完全更新,因此您创建了一个空白的git存储库替换服务器,用作未来的中央存储库并开始处理克隆.

完全更新的克隆使用"git branch -a"知道所有"远程/源"分支,但只有一个本地分支.(这让我担心 - 失去分支机构信息).

重新建立一个新的中央git存储库的步骤是什么,表现在任何方式,如旧的,分支机构和所有?

git

20
推荐指数
2
解决办法
1298
查看次数

如何让`git clone --recursive`重新创建子模块的遥控器和分支?

我有一个带有一些子模块的项目.其中许多是从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 cloning git-clone git-remote git-submodules

16
推荐指数
1
解决办法
2万
查看次数

看不到远程分支

我仍然学习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

16
推荐指数
2
解决办法
4万
查看次数