Linux下git学习笔记(一)


我是跟着廖雪峰大神的博客学习git的。他讲的非常easy懂
(http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000),然后自己跟着学的时候并非非常顺利。向github提交代码的时候老是报错,只是最后google非常久之后给攻克了。
先回想下今天学的吧

一:在Linux上安装Git

sudo apt-get install git

由于Git是分布式版本号控制系统,所以。每一个机器都必须自报家门:你的名字和Email地址
安装完毕后。还须要最后一步设置。在命令行输入:

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

二:创建本地版本号库
所以。创建一个版本号库非常简单,首先。选择一个合适的地方。创建一个空文件夹:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

pwd命令用于显示当前文件夹。

第二步,通过git init命令把这个文件夹变成Git能够管理的仓库:

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

瞬间Git就把仓库建好了,并且告诉你是一个空的仓库(empty Git repository)。细心的读者能够发现当前文件夹下多了一个.git的文件夹,这个文件夹是Git来跟踪管理版本号库的。没事千万不要手动改动这个文件夹里面的文件,不然改乱了,就把Git仓库给破坏了。

假设你没有看到.git文件夹,那是由于这个文件夹默认是隐藏的。用ls -ah命令就能够看见。
如今我们编写一个readme.txt文件,内容例如以下:

Git is a version control system.
Git is free software.
一定要放到learngit文件夹下(子文件夹也行),由于这是一个Git仓库。放到其它地方Git再厉害也找不到这个文件。

和把大象放到冰箱须要3步相比,把一个文件放到Git仓库仅仅须要两步。

第一步,用命令git add告诉Git,把文件加入到仓库:

$ git add readme.txt

执行上面的命令,没有不论什么显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明加入成功。

第二步,用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

三:将本地的仓库提交到github上面

第1步:创建SSH Key。在用户主文件夹下,看看有没有.ssh文件夹。假设有,再看看这个文件夹下有没有id_rsa和id_rsa.pub这两个文件,假设已经有了,可直接跳到下一步。假设没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C “youremail@example.com”
你须要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值就可以,由于这个Key也不是用于军事目的。所以也无需设置password。

假设一切顺利的话,能够在用户主文件夹里找到.ssh文件夹。里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥。不能泄露出去,id_rsa.pub是公钥,能够放心地告诉不论什么人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”。填上随意Title。在Key文本框里粘贴id_rsa.pub文件的内容:

github-addkey-1

点“Add Key”,你就应该看到已经加入的Key:

然后在github上建立一个仓库。我们先把它命名为learngit
在本地的仓库下执行命令:

$ git remote add origin git@github.com:michaelliao/learngit.git(这个是github上的仓库名)

请千万注意,把上面的michaelliao替换成你自己的GitHub账户名。否则,你在本地关联的就是我的远程库,关联没有问题,可是你以后推送是推不上去的,由于你的SSH Key公钥不在我的账户列表中。

加入后。远程库的名字就是origin,这是Git默认的叫法。也能够改成别的,可是origin这个名字一看就知道是远程库。

下一步,就能够把本地库的所有内容推送到远程库上:

$ git push -u origin master
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 13.73 KiB, done.
Total 23 (delta 6), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

然后我并没有成功
我出现的是

$ git push -u origin master
To git@github.com:qzmly100/repository-.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:qzmly100/repository-.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

基本上每次push都是这样的错误提示。
原因是:简单说就是你的远程库里有了本地库没有的东西,须要先同步。然后才干把本地库内容推送到远程库里~

解决的方法

要先抓取并合并远程仓库所有内容:
git pull origin master
再推送本地仓库数据:
git push origin master

基本上每次改动完以后直接提交都要先pull一下,然后再push

然后就能够提交到github上面了

posted on 2017-08-19 14:24  ljbguanli  阅读(213)  评论(0编辑  收藏  举报