git的repository笔记

终于搞好了github,这里对两台电脑将本地库与github远程库的关联做一个总结性教程吧。这么做的目的,自己想捣鼓是一方面,主要还是想工作电脑和家用电脑能随时对代码文件保持一致性,而且随时能对代码的修改能有个清晰直观的了解。

基本配置:两台电脑 都是系统ubuntu14.04 所有操作都是在terminal下执行
(另外,推荐liaoxuefeng.com 廖老师讲的git教程真的太好了)

首先,要确保系统装了git,直接在terminal下输入命令$ git --version,安装了会出现诸如git version 1.9.1这样的;若未安装会提示安装,就按照提示安转就行了$ sudo apt-get install git然后输入密码回车
安装好之后,$ cd进入根目录,建立一个文件夹(最好是空的,不至于太乱), 并且进入该目录

$ mkdir gitwork
$ cd gitwork

然后,初始化建立一个本地库

$ git init

接着,通过在gitwork下新建一个文件

$ vim test.md

(这里说一句 vim没装就按照指示$ sudo apt-get install vim安装一下,如果提示因为什么依赖关系导致安装fail 极有可能是安装版本和依赖的vim-common版本不统一原因,可以先$ sudo apt-get remove vim-common卸载它依赖的这个版本 然后再$ sudo apt-get install vim让它自己装它依赖的软件,一般这种问题都这么解决,也许)

vim 下怎么edit我就不说了 随便打个test内容保存退出就可以

接着,将gitwork目录下的文件加入本地库

$ git add test.md

按理说是没有反应的,继续输入指令

$ git commit -m "create a new file named test.md"

这时会出来什么找不到用户,没关系,没有就添加用户, 执行下列指令

$ git config --global user.name "xiaoming"
$ git config --global user.email "xiaoming@gmail.com"

其中,xiaoming以及xiaoming@gmail.com 是需要换成自己的github用户名和github登录邮箱的
config好之后,再次执行$ git commit -m "create a new file named test.md"这一步,会出现诸如以下:

[master 010e2a1] add some words and delete some words
1 file changed, 3 insertions(+), 1 deletion(-)

以上,就算是本地库搞好了

接下来,搞本地库和远程库的关联

在这之前,需要先登录github,create a new repository,命名最好是gitwork,和本地库一致,(不一样的话应该也可以)(其他不要更改不然后面需要多一步操作),然后create repository
接着,到terminal下$ cd确保进入根目录,为了生成ssh key用于github远程关联,具体操作:

$ ssh-keygen -t rsa -C "xiaoming@gmail.com"

其中,邮箱换成自己的。
然后一路回车,okk。
接下来需要将ssh key pub添加至github中,这一步是相当关键的。
先说一下我自己吧,之前因为不知道什么原因死活ssh key添加进入但就是无法推送到远程库,最后google的方法突然就行了,也是奇怪。但是我另一台机子就是按照我最初的方法做的而且成功了,所以,ubuntu装东西很陶醉。。
进入正题
上面一路回车之后,我们执行

$ eval "$(ssh-agent -s)"

出现Agent pid 15924 然后,

$ ssh-add ~/.ssh/id_rsa

出现以下:

Identity added: /home/gatsby/.ssh/id_rsa (/home/gatsby/.ssh/id_rsa)

(上面两步我没太懂 大概就是什么add ssh key to ssh-agent有需求的可以看这篇的讲解)

然后 通过terminal下安装xclip剪切板,用command将ssh的id_rsa.pub里的内容复制下来,命令如下

$ sudo apt-get install xclip
$ xclip -sel clip < ~/.ssh/id_rsa.pub

然后直接ctrl+v加入到github的settings下的ssh and gpg keys的new ssh key的key下,然后add ssh key确认按钮点一下,ok。

接下来,就是关联至远程库的命令

$ git remote add origin git@github.com:xiaoming/gitwork.git

(xiaoming换成自己的github名称)
这时会出现什么我忘记了 大概命令不输入错误是不会有问题的吧
然后

$ git push -u origin master

出现诸如:

Counting objects: 8, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (7/7), 620 bytes | 0 bytes/s, done.
Total 7 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
To git@github.com:gatsby2016/gitwork.git
38f95ed..cf56b61 master -> master

一堆,就可以了。如果出现什么:

To git@github.com:gatsby2016/gitwork.git
! [rejected] master -> master (fetch first)
error: 无法推送一些引用到 'git@github.com:gatsby2016/gitwork.git'
提示:更新被拒绝,因为远程版本库包含您本地尚不存在的提交。这通常是因为另外
提示:一个版本库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。

一堆,说明你在github远程库的gitwork上做了改动,导致本地库和远程库不一致,这时
$ git pull origin master先将远程库数据拉下来就行。
当出现诸如

来自 github.com:gatsby2016/gitwork
*branch master -> FETCH_HEAD
已经是最新的!
Merge made by the 'recursive' strategy.

一堆,就可以了。

然后可以更改文件,提交,或者对其他电脑推到远程库的数据拉下来再提交都可以。


以上就是关联本地库和远程库以及推送的基本总结,鄙人还是菜鸟,有问题还是多baidugoogle

关于git其他操作可以看廖老师的网站,liaoxuefeng.com 干货满满啊!