我是一个git新手,我一直在阅读一个“主”分支。 “master”只是人们使用的常规名称,还是具有HEAD
等特殊含义?
当我对我所拥有的克隆进行git branch
时,我只看到一个单独的分支 - 我正在使用的那个分支。根本没有“主人”。如果我输入git checkout master
(正如我在很多教程或指南中看到的那样),我得到了
error: pathspec 'master' did not match any file(s) known to git.
我很困惑为什么我的克隆没有master
,每个人似乎都暗示它总是存在。
答案 0 :(得分:79)
要签出本地不存在但位于远程仓库中的分支,您可以使用此命令:
git checkout -t -b master origin/master
答案 1 :(得分:65)
大多数Git存储库使用master
作为主要(和默认)分支 - 如果您通过git init
初始化新的Git存储库,则默认情况下会master
签出。
但是,如果您克隆存储库,则您拥有的默认分支是远程HEAD
指向的任何分支(HEAD
实际上是指向分支的符号引用名称)。因此,如果您克隆的存储库指向HEAD
,例如foo
,那么您的克隆将只有一个foo
分支。
您克隆的远程可能仍然有master
分支(您可以使用git ls-remote origin master
进行检查),但默认情况下您不会创建该分支的本地版本,因为{{1只检查远程的git clone
。
答案 2 :(得分:37)
master
只是一个分支的名称,除了在创建新的存储库时默认创建它,它没有什么神奇之处。
您可以使用git checkout -b master
添加回来。
答案 3 :(得分:21)
我实际上遇到了与全新存储库相同的问题。我甚至尝试使用git checkout -b master
创建一个,但它不会创建分支。然后我意识到如果我做了一些更改并提交了它们,git创建了我的主分支。
答案 4 :(得分:13)
在我的情况下,有一个 develop 分支但没有 master 分支。因此,我克隆了将新创建的HEAD指向现有分支的存储库。然后我创建了缺少的主分支并更新HEAD以指向新的主分支。
git clone git:repositoryname --branch otherbranch
git checkout -b master
git update-ref HEAD master
git push --set-upstream origin master
答案 5 :(得分:12)
如果它是你克隆的新回购,它可能仍然是空的,在这种情况下:
git push -u origin master
应该可以解决它。
(在我的情况下做了。不确定这是同一个问题,我想我应该发布这个问题。可能会帮助其他人。)
答案 6 :(得分:7)
我遇到了同样的问题并找出了问题所在。初始化存储库时,实际上没有任何分支。当您启动项目时,运行public class ConwayGame {
static JPanel panel;
static JFrame frame;
public static void main(String[] args) throws InterruptedException{
int [][] array = new int [40][40];
/*
* Set the pattern for Conway's Game of Life by manipulating the array below.
*/
/*Acorn
*/
array[19][15]=1;
array[19][16]=1;
array[19][19]=1;
array[19][20]=1;
array[19][21]=1;
array[18][18]=1;
array[17][16]=1;
panel = new JPanel();
Dimension dim = new Dimension(400, 400);
panel.setPreferredSize(dim);
frame = new JFrame();
frame.setSize(400,400 );
Container contentPane = frame.getContentPane();
contentPane.add(panel);
frame.setVisible(true);
/*
* Runs the Game of Life simulation "a" number of times.
*/
Graphics g = panel.getGraphics();
drawArray(array, g);
//paint(g);
//Thread.sleep(125);
//g.dispose();
}
/*
* Creates the graphic for Conway's game of life.
*/
public static void drawArray(int[][] array, Graphics g) {
int BOX_DIM = 10;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
g.drawRect(i * BOX_DIM, j * BOX_DIM, 10, 10);
if (array[i][j] == 0) {
g.setColor(Color.WHITE);
g.fillRect(i * BOX_DIM, j * BOX_DIM, 10, 10);
}
if (array[i][j] == 1) {
g.setColor(Color.BLACK);
g.fillRect(i * BOX_DIM, j * BOX_DIM, 10, 10);
}
}
}
}
}
然后git add .
,将创建主分支。
没有检查任何内容你没有主分支。在这种情况下,您需要按照此处其他人建议的步骤进行操作。
答案 7 :(得分:0)
主分支上似乎必须至少有一个本地提交才能执行:
git push -u origin master
因此,如果您执行了git init .
然后git remote add origin ...
,则仍需执行以下操作:
git add ...
git commit -m "..."
答案 8 :(得分:0)
如果您从Github Web GUI创建新的存储库,有时会得到名称“ main”而不是“ master”。通过在终端上使用命令git status
,您将看到自己所在的位置。在某些情况下,您会看到origin/main
。
如果您尝试通过CLI将应用程序推送到云服务,请使用“ main”,而不是“ master”。
示例:
git push heroku main
答案 9 :(得分:0)