zoukankan      html  css  js  c++  java
  • 有关git的配置

    git版本控制器总结

    关于部分内容请参考:
    https://www.cnblogs.com/smuxiaolei/p/7484678.html
    git是一个版本控制器,
    分布式管理:可以记录每次文件的改动,让朋友间协同编辑,不需要管理一堆类似文件
    查看某次改动,只需要在软件看一眼就可以,能记录每次文件的改动
    版本 用户     说明             修改日期
    1     user1     增加一行内容     2014/4/10 10:22
    2     user2     修改一行内容     2014/4/10 13:12
    3     user3     删除几个字         2014/4/15 20:42
    4     user2     增加某个内容     2014/4/20 16:32

    集中管理 VS 分布式管理

    1)集中管理:
    集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,
    所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。
    中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

    缺点:
    集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,
    可如果在互联网上,遇到网速慢的话,可能提交一个10M~20M的文件就需要10分钟甚至更多时间,这还不得把人给急死啊

    2)分布式管理
    版本库就在你自己的电脑上,和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,
    因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。
    而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
    在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,
    因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。
    因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,
    没有它大家也一样干活,只是交换修改不方便而已。

    为什么选择Git来控制版本,理由如下:
    1)快速
    2)离线工作
    3)回退
    4)省心
    5)选择有用的代码提交
    6)自由选择工作方式
    7)保持工作独立

    Git的安装
    yum install -y git
    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"

    创建版本库
    版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,
    每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

    第一步:创建一个仓库目录
    mkdir git_test
    cd git_test/

    第二步:通过git init 命令把这个目录变成git可以管理的仓库
    git init
    初始化空的 Git 版本库于 /git_test/.git/
    ls -al
    drwxr-xr-x 3 root root 4096 5月 10 13:53 .
    drwxr-xr-x. 19 root root 4096 5月 10 13:50 ..
    drwxr-xr-x 7 root root 4096 5月 10 13:53 .git

    Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了
    一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,
    就把Git仓库给破坏了。也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。

    第三步:把文件添加到版本库
     cat readme.txt
    Git is veryt good tool
    auth :cgt
    一定要放到git_test目录下面,子目录也可以,放到其他地方git找不到文件。
     
    把一个文件放到Git仓库只需要两步。
    1)用命令git add告诉git,把文件添加到仓库
    [root@master-node git_test]# git add readme.txt
    执行上面的命令,没有任何的显示就对了。Linux的哲学思想:没有消息就是最好的消息,说明添加成功。
    2)用命令git commit告诉git,把文件提交到仓库
    [root@master-node git_test]# git commit -m "cgt write a readme file"
    [master(根提交) 87818f5] cgt write a readme file
    1 file changed, 2 insertions(+)
    create mode 100644 readme.txt
     
    简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
    嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。
    git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。
     
    为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
    [root@master-node git_test]# touch file1 file2 file3
    [root@master-node git_test]# ls
    file1 file2 file3 readme.txt
    [root@master-node git_test]# git add file1 file2 file3
    [root@master-node git_test]# git commit -m "add 3 files"
    [master 827526e] add 3 files
    3 files changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 file1
    create mode 100644 file2
    create mode 100644 file3


    你的本地仓库由 git 维护的三棵"树"组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(staging),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。
    你可以提出更改(把它们添加到暂存区),使用如下命令:
    git add <filename>
    git add *
    这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
    git commit -m "代码提交信息"
    现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。


    回滚
    cat readme.txt
    Git is veryt good tool
    auth :cgt
    date:2016-5-10
    执行git status
    [root@master-node git_test]# git status
    # 位于分支 master
    # 尚未暂存以备提交的变更:
    # (使用 "git add <file>..." 更新要提交的内容)
    # (使用 "git checkout -- <file>..." 丢弃工作区的改动)
    #
    # 修改: readme.txt
    #
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
    虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你第二天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看,然后add之后在看一下status,是显示要commit的文件,现在再回想一下那个工作流图
    [root@master-node git_test]# git diff
    diff --git a/readme.txt b/readme.txt
    index b7cffdb..43b7253 100644
    --- a/readme.txt
    +++ b/readme.txt
    @@ -1,2 +1,3 @@
    Git is veryt good tool
    auth :cgt
    +date:2016-5-10
    [root@master-node git_test]# git add readme.txt
    [root@master-node git_test]# git status
    # 位于分支 master
    # 要提交的变更:
    # (使用 "git reset HEAD <file>..." 撤出暂存区)
    #
    # 修改: readme.txt
    接下来进行commit操作
    [root@master-node git_test]# git commit -m "add date"
    [master de00305] add date
    1 file changed, 1 insertion(+)
    提交之后,在查看status
    [root@master-node git_test]# git status
    # 位于分支 master
    无文件要提交,干净的工作区

    版本的回退
    修改readme.txt文件
     cat readme.txt
    Git is veryt good tool
    auth :cgt
    date:2016-5-10
    version:1
    [root@master-node git_test]# git add readme.txt
    [root@master-node git_test]# git commit -m "version"
    [master 8b7d4ee] version
    1 file changed, 1 insertion(+)
     
    目前我们已经提交了三次,暂时你还能记住,但是在实际工作中我们是记不住的,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:
    [root@master-node git_test]# git log
    commit 8b7d4eebe4e03809162f8193d6b2338926896ab4
    Author: caoxiaojian <1099415469@qq.com>
    Date: Tue May 10 14:59:16 2016 +0800
    version
    commit de003058c91312f695b57f42724f826f6ef42f17
    Author: caoxiaojian <1099415469@qq.com>
    Date: Tue May 10 14:52:10 2016 +0800
    add date
    commit 827526ee243c93bfaf8f4f2f9dc22d31325cb47a
    Author: caoxiaojian <1099415469@qq.com>
    Date: Tue May 10 14:23:08 2016 +0800
    add 3 files
    commit 87818f5454a2bc41cfbeca4b923a510d11fe72ac
    Author: caoxiaojian <1099415469@qq.com>
    Date: Tue May 10 14:19:08 2016 +0800
    cgt write a readme file
    git log 显示从最近到最远的提交日志,我们可以看到四次提交,最近的一次是version,上一次是date,最早的一次是cgt write a readme file 。
     
    如果嫌输出的信息太多,可以使用--pretty=oneline
    [root@master-node git_test]# git log --pretty=oneline
    8b7d4eebe4e03809162f8193d6b2338926896ab4 version
    de003058c91312f695b57f42724f826f6ef42f17 add date
    827526ee243c93bfaf8f4f2f9dc22d31325cb47a add 3 files
    87818f5454a2bc41cfbeca4b923a510d11fe72ac cgt write a readme file
     
    需要友情提示的是,你看到的一大串8b7d4eebe4e03809162f8193d6b2338926896ab4类似的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。
     
    现在开始回滚,
    准备把readme.txt回退到上一个版本,也就是“date”的那个版本,怎么做呢?
    首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
    回滚,我们可以使用git reset这个命令
     
    [root@master-node git_test]# git reset --hard HEAD^
    HEAD 现在位于 de00305 add date
    [root@master-node git_test]# cat readme.txt
    Git is veryt good tool
    auth :cgt
    date:2016-5-10
    可以看出,他没有version那行,说明回滚成功。
     
    再来看git log
    [root@master-node git_test]# git log
    commit de003058c91312f695b57f42724f826f6ef42f17
    Author: caoxiaojian <1099415469@qq.com>
    Date: Tue May 10 14:52:10 2016 +0800
    add date
    commit 827526ee243c93bfaf8f4f2f9dc22d31325cb47a
    Author: caoxiaojian <1099415469@qq.com>
    Date: Tue May 10 14:23:08 2016 +0800
    add 3 files
    commit 87818f5454a2bc41cfbeca4b923a510d11fe72ac
    Author: caoxiaojian <1099415469@qq.com>
    Date: Tue May 10 14:19:08 2016 +0800
    cgt write a readme file
    没有了之前的version,那我要怎么才能恢复呢,回你的终端上,看看version的commit id,我们找到了:
    8b7d4eebe4e03809162f8193d6b2338926896ab4 version,执行恢复。恢复的时候ID不需要写全部的。
    [root@master-node git_test]# git reset --hard 8b7d4eebe4
    HEAD 现在位于 8b7d4ee version
    [root@master-node git_test]# cat readme.txt
    Git is veryt good tool
    auth :cgt
    date:2016-5-10
    version:1

    使用git reflog,把之前的ID都显示出来
    git reflog
    8b7d4ee HEAD@{0}: reset: moving to 8b7d4eebe4
    de00305 HEAD@{1}: reset: moving to HEAD^
    8b7d4ee HEAD@{2}: commit: version
    de00305 HEAD@{3}: commit: add date
    827526e HEAD@{4}: commit: add 3 files
    87818f5 HEAD@{5}: commit (initial): cgt write a readme file

    工作区和暂存区
    工作区:
    就是在你的电脑里能看到的目录,比如咱们创建的git_test
    版本库:
    工作区中有一个隐藏目录.git(之前已经给童鞋们提到过这个文件),它不算工作区,而是git的版本库。

    git的版本库里面存放了很多的东西,其中最重要的就是称为stage(index)的暂存区,
    还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫head。


    管理修改
    cat readme.txt
    Git is veryt good tool
    auth :cgt
    date:2016-5-10
    version:1
    modify----------1
    [root@master-node git_test]# git add readme.txt
    [root@master-node git_test]# git status
    # 位于分支 master
    # 要提交的变更:
    # (使用 "git reset HEAD <file>..." 撤出暂存区)
    #
    # 修改: readme.txt
    #
    第四步,再次编辑readme.txt,然后直接commit,再次查看status
     
    [root@master-node git_test]# cat readme.txt
    Git is veryt good tool
    auth :cgt
    date:2016-5-10
    version:1
    modify----------1
    modify----------2
    [root@master-node git_test]# git commit -m "modify"
    [master 766baac] modify
    1 file changed, 1 insertion(+)
    [root@master-node git_test]# git status
    # 位于分支 master
    # 尚未暂存以备提交的变更:
    # (使用 "git add <file>..." 更新要提交的内容)
    # (使用 "git checkout -- <file>..." 丢弃工作区的改动)
    #
    # 修改: readme.txt
    #
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    发现第二次的修改没有commit,那是因为你没有add
     
    提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:
     
    [root@master-node git_test]# git diff HEAD -- readme.txt
    diff --git a/readme.txt b/readme.txt
    index 4416460..07c12e7 100644
    --- a/readme.txt
    +++ b/readme.txt
    @@ -3,3 +3,4 @@ auth :cgt
    date:2016-5-10
    version:1
    modify----------1
    +modify----------2

    撤销修改
    cat readme.txt
    Git is veryt good tool
    auth :cgt
    date:2016-5-10
    version:1
    modify----------1
    modify----------2
    caoxiaojian is xiaojianjian
    已经编辑完成,忽然发现了问题,最后一行,道出了笔者的心声。既然已经发现错误,那就很容易纠正它,你可以删除掉最后一行,手动把文件恢复到上一个版本的状态,如果用git status查看一下,
     
    [root@master-node git_test]# git status
    # 位于分支 master
    # 尚未暂存以备提交的变更:
    # (使用 "git add <file>..." 更新要提交的内容)
    # (使用 "git checkout -- <file>..." 丢弃工作区的改动)
    #
    # 修改: readme.txt
    #
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    你可以发现上面提示你使用 "git checkout -- <file>..." 丢弃工作区的改动,那我们执行下
     
    [root@master-node git_test]# git checkout -- readme.txt
    [root@master-node git_test]# cat readme.txt
    Git is veryt good tool
    auth :cgt
    date:2016-5-10
    version:1
    modify----------1
    已经回来了。
     
    命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
    总之,就是让这个文件回到最近一次git commit或git add时的状态。
    git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
    刚刚咱们没有将修改提交到暂存区,那假如你提交到了呢??????你说咋整呢?????是不是吓尿了????
    [root@master-node git_test]# cat readme.txt
    Git is veryt good tool
    auth :cgt
    date:2016-5-10
    version:1
    modify----------1
    caoxiaojian is xiaojianjian
    [root@master-node git_test]# git add readme.txt
    [root@master-node git_test]# git status
    # 位于分支 master
    # 要提交的变更:
    # (使用 "git reset HEAD <file>..." 撤出暂存区)
    # 修改: readme.txt
    你要是聪明的话,你应该已经知道要怎么做了。。。。对是的,就是你想的那样。
     
    [root@master-node git_test]# git reset HEAD readme.txt
    重置后撤出暂存区的变更:
    M readme.txt
    [root@master-node git_test]# git status
    # 位于分支 master
    # 尚未暂存以备提交的变更:
    # (使用 "git add <file>..." 更新要提交的内容)
    # (使用 "git checkout -- <file>..." 丢弃工作区的改动)
    #
    # 修改: readme.txt
    #
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    已经退出了暂存区。你可能要问,那要是已经commit了呢??你小子胆子还真不小啊,教你一招,之前不是讲过回滚嘛
    ,直接回滚。不过这个也是有条件的,就是你还没有把自己的本地版本库推送到远程。Git是一个分布式版本控制,
    他还有远程版本库,一旦你提交到远程版本库,那你就可以git go home

    删除文件
     cat test.txt
    qwertyuiop[
    adfghjjljh
    fdgscvxz
    [root@master-node git_test]# git add test.txt
    [root@master-node git_test]# git commit -m "del test"
    [master 63d3bf7] del test
    1 file changed, 3 insertions(+)
    create mode 100644 test.txt
    [root@master-node git_test]# rm -rf test.txt
    [root@master-node git_test]# git status
    # 位于分支 master
    # 尚未暂存以备提交的变更:
    # (使用 "git add/rm <file>..." 更新要提交的内容)
    # (使用 "git checkout -- <file>..." 丢弃工作区的改动)
    #
    # 修改: readme.txt
    # 删除: test.txt
    #
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
    [root@master-node git_test]# git rm test.txt
    rm 'test.txt'
    [root@master-node git_test]# git commit -m "remove test.txt"
    [master 5f04ee2] remove test.txt
    1 file changed, 3 deletions(-)
    delete mode 100644 test.txt
    现在文件就从版本库中彻底的删除了。
     
    命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
     
    另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
     
    使用
     
    git checkout -- test.txt
    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    远程仓库

    可以使用github给我们提供的服务,作为我们的一个远程仓库。但是需要做一下的设置。
    由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们首先生成秘钥。
     
    第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”页面,然后将你的key添加上。
    为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送

    github注册账号:

    https://jingyan.baidu.com/article/4e5b3e192200e291911e2468.html

    **************************************************************************************************

    **************************************************************************************************
    添加远程库

    你原本在本地已经创建了一个Git仓库,现在又想在github上也创建一个仓库,让这两个仓库可以远程同步。这样github的仓库既可以作为备份,又可以让其他人通过该仓库来协作。

    第一步:创建一个新的仓库repository
    右上角有个➕,然后现在new repository

    然后进入创建页面

    仓库内容的提交


    接下来咱们看如何使用
    本地没有仓库的情况下,要先创建仓库。本例中我没有仓库,所以按照上图中的进行操作。
    [root@master-node ~]# mkdir /test
    [root@master-node ~]# cd /test
    使用git init 创建定义仓库
    [root@master-node ~]# git init
    Initialized empty Git repository in /root/test/.git/
    [root@master-node ~]# ls -al
    total 8
    drwxr-xr-x 1 cgt 197121 0 五月 16 06:11 ./
    drwxr-xr-x 1 cgt 197121 0 五月 16 06:11 ../
    drwxr-xr-x 1 cgt 197121 0 五月 16 06:11 .git/

    在仓库中创建一个文件,然后add commit
    [root@master-node ~]# echo "# test " >> README.md
    [root@master-node ~]# git add README.md
    warning: LF will be replaced by CRLF in README.md.
    The file will have its original line endings in your working directory.

    [root@master-node ~]# git commit -m "first commit"
    [master (root-commit) 7eeb945] first commit
    warning: LF will be replaced by CRLF in README.md.
    The file will have its original line endings in your working directory.
    1 file changed, 1 insertion(+)
    create mode 100644 README.md
    至此,提交到本地的head中。也就是本地仓库中,然后从本地仓库向远程仓库提交。


    使用remote关联一个远程库,add是定义一个远程的名称,默认一般使用origin,后面跟的是远程仓库的名称
    [root@master-node ~]# git remote add origin git@github.com:caoxiaojian/test.git
    把本地库的内容推送到远程,实际上是将本地的当前分支master,推送到远程
    [root@master-node ~]# git push -u origin master
    Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts.
    Counting objects: 3, done.
    Writing objects: 100% (3/3), 210 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To git@github.com:caoxiaojian/test.git
    * [new branch] master -> master
    Branch master set up to track remote branch master from origin.
    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    **************************************************************************************

    报错一:提交push的时候报错

    Username for 'https://github.com' :Username

    Password for 'https://Username@github.com':

    remote:Invalid username or password.

    fatal:Authentication failed for 'https://github.com/username/repository.git/'

    报错原因:这个报错信息是自解释的,

    这意味着我们正在尝试使用无效的用户名或密码。但我肯定我用的是正确的用户名和密码。在我的例子中,我在我的GitHub帐号中打开了一个双重认证(2 FA)之后,就发生了这种情况。所以我知道是什么导致了这个错误信息。

     

    如何解决它

    为了解决这个问题,我们需要做的就是创建一个GitHub的个人访问令牌,并使用它而不是我们的GitHub密码和一个双重认证代码。

    Settings--------->>Developer settings------->>Personal access tokens------->>Generate new token

    ---------->>在token description处随便写个名字,选择repo,会使其从命令行访问存储库,可以在里面选择范围,权限等等。

     

     

     

    到此为止,输入时候输入此处的密码就不会报错。

    报错二:yum安装git时,报错

    git clone https://github.com/jquery/jqu...
    Cloning into 'jquery'...
    fatal: unable to access 'https://github.com/jquery/jqu...': Peer reports incompatible or unsupported protocol version.

    处理办法:yum update -y nss curl libcurl

    *************************************************************************************************

    *************************************************************************************************
    再次修改README.md
    [root@master-node ~]# echo "# this is my test file " >> README.md
    [root@master-node ~]# git add README.md
    warning: LF will be replaced by CRLF in README.md.
    The file will have its original line endings in your working directory.
    [root@master-node ~]# git commit -m "2 commit"
    [master warning: LF will be replaced by CRLF in README.md.
    The file will have its original line endings in your working directory.
    80bc0e7] 2 commit
    warning: LF will be replaced by CRLF in README.md.
    The file will have its original line endings in your working directory.
    1 file changed, 1 insertion(+)
    [root@master-node ~]# git push origin master
    Warning: Permanently added the RSA host key for IP address '192.30.252.120' to the list of known hosts.
    Counting objects: 3, done.
    Writing objects: 100% (3/3), 257 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To git@github.com:caoxiaojian/test.git
    7eeb945..80bc0e7 master -> master
    到github下面对应的仓库里查看



    克隆远程库
    在刚创建的仓库中创建新文件


    创建文件

    创建完成后可以看见你的新文件



    因为之前已经创建了test这个本地仓库,所以先删除,然后再clone
    [root@master-node ~]# rm -rf /test/
    [root@master-node ~]# git clone git@github.com:caoxiaojian/test.git
    Cloning into 'test'...
    Warning: Permanently added the RSA host key for IP address '192.30.252.121' to the list of known hosts.
    remote: Counting objects: 9, done.
    remote: Compressing objects: 100% (4/4), done.
    remote: Total 9 (delta 0), reused 6 (delta 0), pack-reused 0
    Receiving objects: 100% (9/9), done.
    Checking connectivity... done.
    [root@master-node ~]# cd /test/
    test (master)
    [root@master-node ~]# ls
    new_file README.md
    test (master)
    [root@master-node ~]# cat new_file
    make a new file for clone test
    ****************************************************************************************************

    git clone git@github.com:caoxiaojian/test.git

    这条命令会报错:

    Permissiondenied (publickey).

      fatal:Could not read from remote repository.

      Pleasemake sure you have the correct access rights

      and the repository exists.

    但是其实执行命令:git clone git@github.com:peiyunh/tiny.git 是没有问题的(不加--recursive参数),于是百度了一番,我理解的是原因是由于你在本地(或者服务器上)没有生成ssh key,你可以在ternimal下执行:

      cd ~/.ssh ls来查看是否有文件id_rsa以及文件id_rsa.pub,(我的已经生成了,所以我ls后会显示。)

    下面记录下解决办法

      1.首先,如果你没有ssh key的话,在ternimal下输入命令:ssh-keygen -t rsa -C "youremail@example.com", youremail@example.com改为自己的邮箱即可,途中会让你输入密码啥的,不需要管,一路回车即可,会生成你的ssh key。(如果重新生成的话会覆盖之前的ssh key。)

    2.然后再ternimal下执行命令:

      ssh -v git@github.com

     

      最后两句会出现:

     

      No more authentication methods to try.  

     

      Permission denied (publickey).

     

      3.这时候再在ternimal下输入:

     

      ssh-agent -s

     

      然后会提示类似的信息:

     

      SSH_AUTH_SOCK=/tmp/ssh-GTpABX1a05qH/agent.404; export SSH_AUTH_SOCK;  

     

      SSH_AGENT_PID=13144; export SSH_AGENT_PID;  

     

      echo Agent pid 13144;

     

      4.接着再输入:

     

      ssh-add ~/.ssh/id_rsa

     

      这时候应该会提示:

     

      Identity added: ...(这里是一些ssh key文件路径的信息)

     

      (注意)如果出现错误提示:

     

      Could not open a connection to your authentication agent.

     

      请执行命令:eval `ssh-agent -s`后继续执行命令 ssh-add ~/.ssh/id_rsa,这时候一般没问题啦。

     

      5.打开你刚刚生成的id_rsa.pub,将里面的内容复制,进入你的github账号,在settings下,SSH and GPG keys下new SSH key,title随便取一个名字,然后将id_rsa.pub里的内容复制到Key中,完成后Add SSH Key。

     

      6.最后一步,验证Key

     

      在ternimal下输入命令:

     

      ssh -T git@github.com

     

      提示:Hi xxx! You've successfully authenticated, but GitHub does not provide shell  access.

     

      这时候你的问题就解决啦,可以使用命令 git clone --recursive git@github.com:capxiaoming/test.git 去下载你的代码啦。

     

     

     

    ******************************************************************************************************
    分支管理
    分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
    现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

  • 相关阅读:
    Core Audio 在Vista/Win7上实现
    Windows上的音频采集技术
    采样率和比特率的区别
    各种流媒体服务器性能测试
    ARPU值分析
    doubango介绍
    解析nginx负载均衡
    H.264转码加速:NVENC大战Quick Sync
    autoCAD
    bwa比对软件的使用以及其结果文件(sam)格式说明
  • 原文地址:https://www.cnblogs.com/fengzhongzhuzu/p/8981852.html
Copyright © 2011-2022 走看看