git命令之gitclone⽤法
2015年02⽉26⽇ 13:59:11
阅读数:81047
在使⽤git来进⾏版本控制时,为了得⼀个项⽬的拷贝(copy),我们需要知道这个项⽬仓库的地址(Git URL). Git能在许多协议下使⽤,所以Git URL可能以ssh://, http(s)://, git://,或是只是以⼀个⽤户名(git 会认为这是⼀个ssh 地址)为前辍.
有些仓库可以通过不只⼀种协议来访问,例如,Git本⾝的源代码你既可以⽤ git:// 协议来访问:
git clone git:///pub/scm/git/git.git
也可以通过http 协议来访问:
git://协议较为快速和有效,但是有时必须使⽤http协议,⽐如你公司的防⽕墙阻⽌了你的⾮http访问请求.如果你执⾏了上⾯两⾏命令中的任意⼀个,你会看到⼀个新⽬录: 'git',它包含有所的Git源代码和历史记录.
另外,如果访问⼀个Git URL需要⽤法名和密码,可以在Git URL前加上⽤户名,并在它们之间加上@符合以表⽰分割,然后执⾏git
clone命令,git会提⽰你输⼊密码。
⽰例
另外,我们可以通过-b <name>来指定要克隆的分⽀名,⽐如
$ git clone -b master2 ../rver .
表⽰克隆名为master2的这个分⽀,如果省略-b <name>表⽰克隆master分⽀。
GIT URLS
In general, URLs contain information about the transport protocol, the address of the remote rver, and the path to the repository. De蛋糕图片女生
pending on the transport protocol, some of this information may be abnt.
Git natively supports ssh, git, http, https, ftp, ftps, and rsync protocols. The following syntaxes maps插入表格
y be ud with them:
ssh://[ur@][:port]/path/to/repo.git/
git://[:port]/path/to/repo.git/
http[s]://[:port]/path/to/repo.git/
ftp[s]://[:port]/path/to/repo.git/
rsync:///path/to/repo.git/
An alternative scp-like syntax may also be ud with the ssh protocol:
[ur@]:path/to/repo.git/
The ssh and git世界轮胎十大排名
protocols additionally support ~urname expansion:
ssh://[ur@][:port]/~[ur]/path/to/repo.git/
git://[:port]/~[u击的成语
r]/path/to/repo.git/
[ur@]:/~[ur]/path/to/repo.git/
For local repositories, also supported by git natively, the following syntaxes m孩子嗓子疼
ay be ud:
/path/to/repo.git/
file:///path/to/repo.git/
Examples
Clone from upstream:
$ git clone git:///pub/scm/.../linux-2.6 my2.6 $ cd my2.6 $ make
Make a local clone that borrows from the current directory, without checking things out:
$ git clone -l -s -n . ../copy $ cd ../copy $ git show-branch
Clone from upstream while borrowing from an exist火锅怎么做好吃又简单的做法
ing local directory:
$ git clone --reference my2.6 \ git:///pub/scm/.../linux-2.7 \ my2.7 $ cd my2.7
Create a bare repository to publish your changes to the public:
$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
Create a repository on machine that borrows from Linus:
$ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \ /pub/scm/.../me/subsys-2.6.git
在公司项⽬实际开发过程中,⼤多数情况是先创建远程库,将项⽬⼀些内容在远程库中建⽴,之后员⼯们将远程库中内容clone到各⾃的本地GIT仓库中通过协同努⼒共同开发项⽬!所以这篇博客就简单介绍了⼀下如何将GIT远程库clone⼀份到本地!
⾸先我们登录到⾃⼰的github⽹站,如下图创建⼀个新的GIT仓库repository起名为CloneRapTest,在创建时勾选Initialize this repository with a README,这样创建此仓库后会默认创建⼀个README.md⽂件在仓库中。
然后打开Git-Bash⼯具,进⼊到某个cd⽬录下,想要将远程库clone到哪就进⼊到哪个cd⽬录下,这⾥
我们进⼊到/e/gittest⽬录下,(/e/gittest⽬录本⾝是⼀个本地仓库的⼯作⽬录,这⾥是为了测试可不可以clone⼀个远程库到⼀个本地仓库⽬录下)接着使⽤命令git
clone 后⾯跟相应远程库地址即可,如下图。
部分找到Clone or download,点击下拉按钮就可以显⽰此远程库的地址了
点击U HTTPs,就可以显⽰此远程库对应的⽀持http协议的地址,但我们默认使⽤ssh⽀持的git原⽣协议,速度较快,且不必每次推送都使⽤命令!
回到Git-Bash,当我们输⼊git clone命令点击回车之后,就开始从远程库clone到本地库了,这期间有时会提⽰你The authenticity of host ' (192.30.253.113)' can't be e银耳桃胶
stablished,即存在可靠性问题,然后提⽰你输⼊yes继续。这⾥我们直接输⼊yes,之后clone⼯作就完成了,去到/e/gittest⽬录下会发现多出了⼀个CloneRepTest⽂件夹,且⽂件夹中有⼀个REAEME.md⽂件,表名远程库已经成功clone了⼀份到本地!
⾸先来回顾⼀下,在上⼀篇git系列⽂章中,我们讲了如何创建本地git仓库并把⽂件push到远程仓库,也就是先有本地仓库,后有远程仓库。那么,这次我们来运营助理
讲⼀个新的玩法,就是先有远程仓库,后有本地仓库,即把远程仓库“克隆(clone)”到本地。
假设现在你的团队其他成员已经在git上建好了仓库,并且也push过代码,这个远程git仓库还叫“StudyGit”,有两个⽂件:a.txt和README.md,现在,您也要开始贡献代码了,那么,您⾸先需要把团队其他成员提交的所有东西都拉取到你的本地⽬录,这你的名字高清图片
个时候就会⽤到“clone”命令了:
git clone :onlyanyz/StudyGit.git
只要执⾏这句指令,就可以把远程仓库的所有东西都拉取到本地⼯作⽬录了,当然⽣成的本地⽬录名和远程仓库名字是⼀样的。
如果您现在查看下当前本地git仓库的状态,如下:
1. yanyaozhen@macbookpro:~/Coding/StudyGit$ git status
2. On branch master
3. Your branch is up-to-date with 'origin/master'.
4. nothing to commit, working directory clean
命令回显表⽰,我的本地分⽀已经更新为最新的远程master分⽀了。此后,我们就可以按照“”这篇⽂章所述进⾏添加代码并提交了。
现在,让我们再看下刚才clone到本地的git项⽬,现在有两个⽂件,如下:
1. yanyaozhen@macbookpro:~/Coding/StudyGit$ ll
2. total 16
3. -rw-r--r-- 1 yanyaozhen staff 21B 1脚背痛风怎么办
1 19 00:04 README.md
4. -rw-r--r-- 1 yanyaozhen staff 4B 11 19 00:
接下来,假如A同学在github上的这个仓库中⼜新增了⼀个⽂件b.txt,那现在github远程仓库中就有三个⽂件(注意,现在本地仓库中的⽂件就已经与远程仓库不同了)。
接下来,我们在本地继续我们的开发⼯作,假如新建了⼀个⽂件“c.txt”,现在,让我们来把"c.txt"⽂件加⼊暂存区,然后commit到本地仓库,这时,我们想把刚才的⼯作成果再push到远程,执⾏如下:
1. yanyaozhen@macbookpro:~/Coding/StudyGit$ git push origin master
2. To :onlyanyz/StudyGit.git
3. ! [rejected] master -> master (fetch first)
4. error: failed to push some refs to ':onlyanyz/StudyGit.git'
5. hint: Updates were rejected becau the remote contains work that you do
6. hint: not have locally. This is usually caud by another repository pushing
7. hint: to the same ref. You may want to first integrate the remote changes
8. hint: (e.g., 'git pull ...') before pushing again.
9. hint: See the 'Note about fast-forwards' in 'git push --help' for details.