gitclone,git clone b dev
git clone做了什么
打开一个directory,输入
发生了如下图所示的事情
git的 clone 命令将远程仓库在本地命名为origin,创建一个指向它的 master 分支的指针,并且在本地将其命名为 origin/master( 如第二个图的origin/master指针 ),同时创建一个master指针,并将 HEAD 指针指向这个master指针( 如第二个图的master指针 ),这样就有工作的基础,并且工作目录变成master指针指向的快照。
git clone时出现Permission denied (public key)问题解决
总结一下,出现这个问题原因是clone的时候需要使用一个公钥和本地的私钥来做身份认证。
1、首先确认自己有没有git帐号
2、有的话,生成一对公私钥对,公钥上传到github,私钥需要添加到本地的私钥列表
具体步骤如下所示:
用? git clone ?时出现错误:
Permission?denied?(publickey).
上网搜了一下, 原因是'You've probably not added a public key to your SSH keys.'
解决方法如下:
用下面的命令生成public key
$ ssh-keygen -t rsa
复制 public key (id_rsa.pub) 到你账户的 list of SSH keys , 再重新运行clone命令
如果还不行,执行下面的分析步骤:
1、首先尝试重新添加以前生成的key,添加多次,仍然不起作用。
2、使用命令 ssh -v git@github.com测试,最后几行结果如下:
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/gr/.ssh/id_rsa
debug1: Trying private key: /home/gr/.ssh/id_dsa
debug1: Trying private key: /home/gr/.ssh/id_ecdsa
debug1: No more authentication methods to try.
Permission denied (publickey).
3、分析:尝试了3个private key,但都没有成功,最后是导致Permission denied.
4、查看我的密钥, ls ~/.ssh/ :
bajie ?bajie.pub ?known_hosts
5、发现我的id_rsa文件我命令为bajie, 所以根本没有使用它。同时可以使用如下命令查看密钥列表:
ssh-add -l
6、上面命令的密钥列表为空,所以要添加我的密钥,使用命令:
gr@grpc:~/workspace/git/home$ ssh-add ~/.ssh/bajie
Enter passphrase for /home/gr/.ssh/bajie:
Identity added: /home/gr/.ssh/bajie (/home/gr/.ssh/bajie)
7、再次查看,如下,添加成功:
gr@grpc:~/workspace/git/home$ ssh-add -l
2048 63:c5:d8:6c:a0:0c:a8:9c:26:d8:f8:95:de:29:04:eb /home/gr/.ssh/bajie (RSA)
8、再使用ssh -v git@github.com测试连接,可以看到验证通过:
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1:Offering RSA public key: /home/gr/.ssh/bajie
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1:Authentication succeeded (publickey).
Authenticated to github.com ([192.30.252.129]:22).
9、最后git clone项目成功。
git clone --depth=1 的用法
在github或gitlab克隆项目时,因项目太大git clone会报错,如下:
解决的办法为:
--depth 用来指定克隆的深度,1表示克隆最近的一次commit。
这种方法克隆的项目只包含最近的一次commit的一个分支,体积很小。
需要将该分支所有的commit克隆下来的话,可以用下面的命令:
但会产生另外一个问题,他只会把默认分支clone下来,其他远程分支并不在本地,所以这种情况下,需要用如下方法拉取其他分支:
git 从本地clone
git clone 除了从远程地址clone,还能从本地clone。
有时候方便开发我们需要不同的分支在不同的文件夹下同步开发,避免频繁的编译重构。
直接复制文件夹,里面的node_modules target 等被gitignore的文件会非常慢.
git clone 命令
? ?拷贝一个 Git 仓库到本地
? ? 1、拷贝一个 Git 仓库到本地,本地目录名称与Git 仓库同名
? ??????????git clone 版本库的网址
? ? 2、拷贝一个 Git 仓库到本地,重新定义本地目录名称
? ??????????git clone 版本库的网址 本地目录名
? ? 3、?拷贝一个指定分支到本地,本地目录名称与分支同名
? ???????????git clone?-b 分支名 版本库的网址
? ???4、拷贝一个指定分支到本地,重新定义本地目录名称
????????????git clone?-b 分支名 版本库的网址 本地目录名
git clone
1、git clone 的理解
git clone默认会把远程仓库整个给clone下来 ,只能clone远程库的master分支并在本地默认创建一个master分支 ,无法clone所有分支,若想要其它分支的内容,如下:
git clone默认会把远程仓库整个给clone下来
但只会在本地默认创建一个master分支
如果远程还有其他的分支,此时用git branch -a查看所有分支:
$ git branch -a
*master
remotes/origin/HEAD - origin/master
remotes/origin/python_mail.skin
remotes/origin/vip
能看到远程的所有的分支,如remotes/origin/python_mail.skin 可以使用checkout命令来把远程分支取到本地,并自动建立tracking
$ git checkout -b python_mail.skin origin/python_mail.skin
Branch python_mail.skin set up to track remote branch python_mail.skin from origin.
Switched to a new branch 'python_mail.skin'
或者使用-t参数,它默认会在本地建立一个和远程分支名字一样的分支
$ git checkout -t origin/python_mail.skin