关闭

Linux下git学习笔记(一)

标签: git
764人阅读 评论(0) 收藏 举报
分类:


我是跟着廖雪峰大神的博客学习git的,他讲的非常容易懂
(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也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.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上面了

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:286705次
    • 积分:5339
    • 等级:
    • 排名:第5066名
    • 原创:218篇
    • 转载:161篇
    • 译文:0篇
    • 评论:60条
    座右铭

    一个真正强大的人,不会把太多心思花在取悦和亲附别人上面。所谓圈子、资源,都只是衍生品。最重要的是提高自己的内功。只有自己修炼好了,才会有别人来亲附。自己是梧桐,凤凰才会来栖;自己是大海,百川才来汇聚,花香自有蝶飞来。你只有到了那个层次,才会有相应的圈子,而不是倒过来!

    博客专栏
    我的新浪微博

    点击图片可联系我