Git创建local repository和remote repository
参考:
①Git的使用--如何将本地项目上传到Github
②Git教程 - 廖雪峰的官方网站
这篇文章主要讲Git本地仓库的创建及上传到GitHub的步骤
Git的安装就不说了,直接上干货。
1、创建一个本地的版本库(其实也就是一个文件夹)。
可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建。
通过命令行在桌面新建一个TEST文件夹(你也可以在其他任何地方创建这个文件夹),并且进入这个文件夹
2、通过git init把它变成Git仓库;
$ git init
可以通过git status查看状态
$ git status
3、把项目复制到这个文件夹里面,再通过git add .把项目添加到仓库;
git add .
此时没有消息就是好消息,可以通过git status查看状态
4、告诉git你是谁
$ git config --global user.email "[email protected]"
$ git config --global user.name "Your Name"
5、再通过git commit -m "注释内容"把项目提交到仓库;
$ git commit -m "first commit"
6、创建SSH KEY。先看一下C盘用户目录下有没有.ssh目录,有的话看下里面有没有id_rsa和id_rsa.pub这两个文件,有就跳到GitHub设置,没有就通过下面命令创建
$ ssh-keygen -t rsa -C "[email protected]"
然后一路回车。这时你就会在用户下的.ssh目录里找到id_rsa和id_rsa.pub这两个文件。
登录Github,找到右上角的图标,打开点进里面的Settings,再选中里面的SSH and GPG KEYS,点击右上角的New SSH key,然后Title里面随便填,再把刚才id_rsa.pub里面的内容复制到Title下面的Key内容框里面,最后点击Add SSH key,这样就完成了SSH Key的加密。
7、在Github上设置好SSH密钥后,新建一个远程仓库,通过git remote add origin https://github.com/Allenem/2048game.git将本地仓库和远程仓库进行关联;
$ git remote add origin https://github.com/Allenem/2048game.git
8、最后通过git push -u origin master把本地仓库的项目推送到远程仓库(也就是Github)上(若新建远程仓库的时候自动创建了README文件会报错,解决办法如下)。该步骤会要求输入name或email和登录密码登录来上传。
$ git push -u origin master
由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需下面这样就可以了:
$ git push origin master
这时候你再重新刷新你的Github页面进入刚才新建的那个仓库里面就会发现项目已经成功上传了:
注意:
①创建远程仓库的时候,如果你勾选了Initialize this repository with a README(就是创建仓库的时候自动给你创建一个README文件),那么到了将本地仓库内容推送到远程仓库的时候就会报一个error:failed to push some refs to https://github.com/Allenem/2048game.git的错。
这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下:
$ git pull --rebase origin master
这时你再push就能成功了
②若前面没提交仓库$ git commit -m "first commit"也会报错,完成该步骤即可。
git 提交环节的三大部分
在git提交环节,存在三大部分:working tree, index file, commit(工作区,暂存区,远程仓库)
这三大部分中:
- working tree:就是你所工作在的目录,每当你在代码中进行了修改,working tree的状态就改变了。
- index file:是索引文件,它是连接working tree和commit的桥梁,每当我们使用git-add命令来登记后,index file的内容就改变了,此时index file就和working tree同步了。
- commit:是最后的阶段,只有commit了,我们的代码才真正进入了git仓库。我们使用git-commit就是将index file里的内容提交到commit中。
总结一下:
-
git diff
:是查看working tree与index file的差别的。 -
git diff --cached
:是查看index file与commit的差别的。 -
git diff HEAD
:是查看working tree和commit的差别的。(你一定没有忘记,HEAD代表的是最近的一次commit的信息)
eg:
本地README.md新增
## first change
git操作与显示如下:
- add前:
$ git diff
diff --git a/README.md b/README.md
index 83c831f..b87bcfb 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
# test
+
+## first change
$ git diff --cached
$ git diff HEAD
diff --git a/README.md b/README.md
index 83c831f..b87bcfb 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
# test
+
+## first change
- add后,commit前
$ git add .
$ git diff
$ git diff --cached
diff --git a/README.md b/README.md
index 83c831f..b87bcfb 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
# test
+
+## first change
$ git diff HEAD
diff --git a/README.md b/README.md
index 83c831f..b87bcfb 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
# test
+
+## first change
- commit后
$ git commit -m 'first change'
[master 89c28ca] first change
1 file changed, 2 insertions(+)
$ git diff
$ git diff --cached
$ git diff HEAD