0<—1还是1—>0?
关联仓库有两种方式,一种是将项目先上传到Git远程仓库,然后本地新建一个空的git文件夹进行拉取,即0<—1的方式。另外一种是先将本地项目目录转成git本地仓库,再将本地库和远程仓库关联起来,然后将本地项目代码推送到远程,即1—>0的方式。
因为项目最开始总是在本地进行开发,远程是空的,所以对于git仓库的初始化采用第一种比较合适。
GitHub上创建一个空的Repository
注意,要是完全空的,连REAMME.MD都没有的空库。
之后该怎么干呢,其实github已经提示了:
注意,这是新建一个完全空的仓库才会有的提示,现在,动手吧。
本地新建一个git库
到本地项目目录下,使用git初始化命令:
git init
这里为了模拟,创建一个只有一个文件的文件夹作为项目文件:
只有一个文件:
进行初始化:
这就已经成功地将此文件夹变为了一个git本地库,但是注意,此时文件夹里的所有文件/夹都还是在Working区(回忆一下Git(一)的内容),这可以通过git branch和git status得到验证:
可以看到,git branch -a没有任何内容,git status告诉我们,的确是在master分支下,但是目前没有任何提交(No commits yet),但是工作区有个test.txt文件没有跟踪(untracked files),建议使用git add进行跟踪。
很清晰,那么我们进行跟踪(add)和提交(commit):
可以看到,commit完了之后,git branch -a才出现了分支。虽然之前git status提示我们的确是在master分支下。
同远程空库进行关联
先到GitHub的repository下拿到clone路径:
https://github.com/ProLayman09/linkLocalRemote.git
接下来在本地项目目录下使用下面命令
git remote add origin #yourURL
yourURL就是刚才拿到的clone路径,实操:
注意
git remote add origin #yourURL
只是将二者关联,远程库仍然没有创建新分支。
这一点可以从git branch -a没有添加任何新分支得到验证。
接下来:
git push -u origin master
在远程仓库(默认名字为origin,千万不要自己瞎改)创建一个master分支,并将本地当前分支(master)下的repository区的内容(本例中其实就一个test.txt文件)推送到远程刚创建的master分支下,而**-u**的作用是:将本地当前分支(master)和远程刚创建的这个分支(master)关联起来,以后的pull,push都默认是这两个分支之间的操作。
参考:添加远程库
实操结果:
去看看远程仓库:
有了test.txt文件。
成功!
0<—1方式
直接clone一个不为空的远程仓库又该怎么呢?
先在GitHub上创建一个不为空的Repository(带README.MD),并使用upload功能上传一个文件:
Upload files:
结果:
本地新建一个文件夹:
为了理解,专门加一个文件:
初始化:
直接拉取:
git clone https://github.com/ProLayman09/testRemote2Local.git
看下本地文件夹:
跟想象中的不一样。。。既然没有用到创建的localNotEmpty文件夹直接拉取文件,而是单独创建一个文件目录,这一点我们用git branch -a也能看到:
而进入testRemote2Local目录下进行git branch -a:
这提示我们,不用创建上面本地库,直接在想要的路径下,git clone即可,所以上述的过程可以简化为:在桌面(假设我们就想放在桌面上)进行git clone:
(因为mac下直接在桌面打不开终端,只能迂回:finder——我的电脑(whu)——桌面——双指击——新建位于xxx):
看下本地桌面的文件夹:
搞定!!!
所以0<—1的方法很简单:新建远程仓库——upload files——本地在想要的路径下直接git clone。
总结
其实就是github新建空repository的提示:
1 —> 0 方式:
- 远程新建一个完全空的repository
- 本地git init:将一个文件夹初始化为git本地库
- git add和git commit将文件夹中内容(working区)推送到repository区
- git remote add origin #yourURL
- git push -u origin master
0 —> 1 方式:
- 选好想要放的位置
- 打开终端
- git clone #yourURL // 拉取
- git push -u origin master // 关联
直接拉取
注意,上面说的两种方式都应用于:远程仓库还没有于任何本地仓库关联起来,如果已经关联起来,例如现在只是想拉取一个远程仓库(已经同其他本地库关联过了)内容,则只需要最简单的:
git clone #yourURL