文章目录
- push还是clone?
- push
- 本地新建一个git库
- 同远程空库进行关联
- clone
- 总结
- push的方式:
- clone方式:
- 综上,还是直接clone的方式好
push还是clone?
关联仓库有两种方式:
① 将本地项目目录转成git本地仓库,再将本地库和远程仓库关联起来,然后将本地项目代码推送到远程,这里称为push的方式;
② 将项目先上传到Git远程仓库,然后本地拉取远程库,达到关联的效果,这里称为clone的方式。
push
GitHub上创建一个完全空的Repository。方法可见Git(三) —— GitHub上新建一个仓库 之后该怎么干呢,其实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分支下。
回顾Git(一) —— Git架构:四个区这提示我们:git status是从Working区获取分支信息,而git branch是从本地库(Repository)而不是Working区或Stage区获取分支信息。刚刚的操作中,在commit后Repository才第一次有内容进来(之前的Repository是空的),进而获取到分支信息。
同远程空库进行关联
先到GitHub的repository下拿到clone路径:
https://github.com/ProLayman09/linkLocalRemote.git
接下来在本地项目目录下使用下面命令
git remote add origin #yourURL
yourURL就是刚才拿到的clone路径,实操:
注意
git remote add origin #yourURL
只是将本地库(Repository)和远程库关联起来,远程库默认名字就是origin,不要修改。而本地分支(此时其实就是一个master)和远程分支之间并没有建立联系,实际上,此时远程库没有任何分支。
这一点可以在上述命令执行后,去远程库查看分支信息得到验证。
接下来:
git push -u origin master
注意,这个命令有三个作用:
- 在远程库(origin)创建一个名为master的新分支
- 将本地当前分支(master)下的repository区的内容(本例中其实就一个test.txt文件)推送到远程刚创建的master分支下
- 使用**-u**参数使本地当前分支(master)和远程刚创建的这个分支(master)关联起来,下次本地master分支的再次push和pull时,可以不指定远程分支名称,默认就是master分支
这里再次强调一遍,所有远程仓库的默认名称就是origin,不管创建Repostitory时是什么名称,千万不要自己瞎改。
参考:添加远程库 实操结果:
去看看远程仓库:
有了test.txt文件。
成功!
clone
直接clone一个不为空的远程仓库又该怎么操作呢?
先在GitHub上创建一个不为空的Repository(带README.MD),并使用Upload功能上传一个文件(当然使用Create new file创建一个新文件也可以):
Upload files的同时选择在远程库创建master分支:
结果:
ps:显示的“1 branch”就是刚刚创建的master分支。在桌面(假设我们就想放在桌面上)进行git clone:
(因为mac下直接在桌面打不开终端,只能迂回:finder——我的电脑(whu)——桌面——双指击——新建位于xxx):
看下本地桌面的文件夹:
搞定!
这里也可以看到,首次使用0<—1的方式从远程库拉取时,将自动拉取远程master分支的内容作为本地分支内容,并且命名为master。
且经实测(此处为后来实验的,就不上图了),0<—1方式同样git clone操作之后自动将两个master关联起来,在之后的操作中,可以不指明名称地push/pull
所以0<—1的方法很简单:新建远程仓库——upload files——本地在想要的路径下直接git clone。
总结
push的方式:
其实就是github新建空repository的提示:
- 远程新建一个完全空的repository
- 本地git init:将一个文件夹初始化为git本地库
- git add和git commit将文件夹中内容(working区)推送到repository区
- git remote add origin #yourURL
- git push -u origin master
clone方式:
- 选好想要放的位置
- 打开终端
- git clone #yourURL // 拉取
- git push -u origin master // 关联
综上,还是直接clone的方式好