关闭

Linux下git学习笔记(一)

标签: git
845人阅读 评论(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网站的观点或立场

当git上只做文件大小写重命名的修改时,如何躲坑...

git对文件名的大小写默认是不敏感的,因此有些朋友在进行了仅涉及大小写的重命名的时候,会遇到提交或更新的问题,本文教你如何躲坑...本文内容基于我电脑上的测试下结论,如有其它情况,请留言,谢谢。
  • get_set
  • get_set
  • 2016-03-30 18:45
  • 10031

git checkout -f实例|Git打包压缩方法

像android一样的源码,一个源码就有10G,如果要想发送或者刻录,这么大的代码很难传输。因此,可以这样做: 1.把工作目录下的.git复制一份。 2.压缩这个.git文件夹。linux中可以tar -cjf .git 会打包成一个v名字的文件,把它重命名为git.bz2。 3.发送给别人 4.别...
  • xzongyuan
  • xzongyuan
  • 2013-09-11 17:46
  • 5876

git基础学习(二):对修改的文件进行提交 git diff 和 git status

我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version control system. Git is free software. 现在,运行git...
  • xiaoshan812613234
  • xiaoshan812613234
  • 2014-04-30 11:20
  • 1647

win10下乌龟git安装和使用

一、安装git for windows 首先下载git for windows客户端http://msysgit.github.io/  安装过程没什么特别的,不停next就ok了          图太多就不继续了~~安装完之后最好重启...
  • jdsjlzx
  • jdsjlzx
  • 2016-04-08 17:55
  • 22282

Git 撤销合并

Git 的 revert 命令可以用来撤销提交(commit),对于常规的提交来说,revert 命令十分直观易用,相当于做一次被 revert 的提交的「反操作」并形成一个新的 commit,但是当你需要撤销一个合并(merge)的时候,事情就变得稍微复杂了一些。Merge Commit在描述 m...
  • sndamhming
  • sndamhming
  • 2017-02-20 13:31
  • 879

学习搭建Git服务器和多人协作开发

一,搭建Git服务器>>>>>>>>>>>>>>>>> 环境基于Ubuntu-12.04 项目服务器管理员:             ...
  • nan2ziyou
  • nan2ziyou
  • 2016-03-27 13:35
  • 1297

windows环境 - 手把手教你使用Git

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不 需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上 改了文件A,这时,你们两之间只需把各自的修改...
  • u012246458
  • u012246458
  • 2015-08-18 10:48
  • 9867

git创建仓库,并提交代码(第一次创建并提交)

一直想学GIT,一直不曾学会。主要是GUI界面的很少,命令行大多记不住。今天尝试提交代码,按GIT上给的方法,没料到既然提交成功了。 于是把它记下来,方便以后学习。 代码是学习用的,没多大意义; 下图是github在创建仓库后给的提示;按它一步步操作下去就可以了。 下图是在git命令...
  • kazeik
  • kazeik
  • 2013-06-17 17:21
  • 96793

git 分支使用

最近在公司使用git,由于之前接触不深,看了如下文章,感觉不错,分享如下: 转自 http://www.zhihu.com/question/21995370 另:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248...
  • nothingl3
  • nothingl3
  • 2015-08-07 12:26
  • 905

Eclipse与Git结合使用

在Eclipse下安装使用EGit
  • Geurney
  • Geurney
  • 2015-09-07 03:33
  • 2863
    个人资料
    • 访问:356320次
    • 积分:5995
    • 等级:
    • 排名:第4929名
    • 原创:219篇
    • 转载:162篇
    • 译文:0篇
    • 评论:107条
    座右铭

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

    博客专栏
    我的新浪微博

    点击图片可联系我