github初探(二)
晚上闲来无事,继续折腾github,这次主要讲讲如何创建一个本地git仓库并且同步的远程git仓库以及git branch。
首先创建一个项目,创建项目前,我们要做的有两件事:
- 在github上创建一个仓库,可以登录到github.com或者在github for windows上完成,创建后,github会自动完成项目的初始化(git init)
- 打开git bash,到用户的项目目录将github上的项目clone到本地
-
1 yourname@yourname-PC /path/to 2 $ git clone git://github.com/youremail/project.git 3 Cloning into 'project'... 4 remote: Counting objects: 3, done. 5 remote: Compressing objects: 100% (2/2), done. 6 Receiving objects: 100% (3/3), done. 7 remote: Total 3 (delta 0), reused 0 (delta 0) 8 yourname@yourname-PC /path/to 9 $
这样,一个本地的仓库就创建好了。
创建仓库以后,我们会对项目进行修改,比如,新建一个文件example.js。我们先手动创建一个新的example.js文件,之后,将修改提交到本地仓库。
-
1 yourname@yourname-PC /path/to 2 $ cd project 3 yourname@yourname-PC /path/to/project (master) 4 $ git add example.js 5 yourname@yourname-PC /path/to/project (master) 6 $ git commit -a -m 'create example.js' 7 [master c0cb8b9] create example.js 8 1 file changed, 0 insertions(+), 0 deletions(-) 9 create mode 100644 example.js 10 yourname@yourname-PC /path/to/project (master)
git add表示将创建的文件信息添加到git的索引库中,也就是说创建一个新的文件以后要git add才能把文件真正的添加到仓库之中(但是并没有提交这一修改)。
git commit命令的参数-a表示提交全部修改(all),-m表示添加注释信息(message)
当然,这里只是将修改提交到本地仓库,并没有同步到远程的服务器仓库上,下面将本地的提交过的修改同步到远程仓库上
-
1 yourname@yourname-PC /path/to/project (master) 2 $ git remote add origin git@github.com:youremail/project.git 3 yourname@yourname-PC /path/to/project (master) 4 $ git push origin master 5 Counting objects: 4, done. 6 Delta compression using up to 4 threads. 7 Compressing objects: 100% (2/2), done. 8 Writing objects: 100% (3/3), 277 bytes, done. 9 Total 3 (delta 0), reused 0 (delta 0) 10 To git@github.com:youremail/project.git 11 fbf0eb6..c0cb8b9 master -> master 12 yourname@yourname-PC /path/to/project (master)
$ git remote add是为github上的仓库指定一个别名,上例中就将git@github.com:youremail/project.git指定为一个origin的别名,这样就省去了push和其他操作输入一长串仓库名的麻烦。
至此,我们就完成了项目的创建->本地修改->本地提交->同步到github的一个过程。
上面的第11行我们看到master->master的字样,这里的master代表的是github的项目分支,对于项目分支,我们可以这样理解,例如,一个项目有master和secondary两个分支,那么这两个分支就相当这个项目并行的两个版本,在merge(合并)之前,这两个分支是互不影响的,在secondary提交的修改不会影响master分支中的项目,也就是说,如果我们在开发项目的过程中,突然有一个idea想试验一下,但又担心影响到项目的主体,那么我们就可以建立一个分支(branch)来进行修改和提交了,当然,如果这个idea经过了实践的检验,我们也可以合并到master分支中,你的secondary分支的更改会同步到master分支,你的idea就会应用到项目中。
对于分支,有如下的命令:
-
1 yourname@yourname-PC /path/to/project (master) 2 $ git branch secondary 3 yourname@yourname-PC /path/to/project (master) 4 $ git checkout secondary 5 Switched to branch 'secondary' 6 yourname@yourname-PC /path/to/project (secondary) 7 $
git branch是新建一个本地的分支,git checkout是切换到其他分支,上面我们就由默认的master分支切换到了secondary分支,这时,我们可以将secondary分支上的修改提交到本地并同步到远程git服务器上
-
1 yourname@yourname-PC /path/to/project (secondary) 2 $ git push origin secondary 3 Counting objects: 3, done. 4 Delta compression using up to 4 threads. 5 Compressing objects: 100% (2/2), done. 6 Writing objects: 100% (2/2), 297 bytes, done. 7 Total 2 (delta 0), reused 0 (delta 0) 8 To git@github.com:youremail/project.git 9 c0cb8b9..27c5c5d secondary -> secondary 10 yourname@yourname-PC /path/to/project (secondary) 11 $
这里的origin是之前用git remote add添加的仓库别名。
git push表示将本地的修改同步到远程git服务器上,分支提交的修改也会同步到相应的分支上。
总结:以上就是我们在进行git分布式仓库项目开发的一些常用操作了,当然在使用git bash的过程,我们或多或少会遇到一些错误,仔细阅读错误信息,会发现不少错误是因为事先预设的origin——仓库别名不能用于某些操作,git bash也会很人性化的提示你使用另一个路径进行提交,可能是git协议和ssh协议应用的场景的不同吧。