美文网首页gitAndroidDevelopergit
Git+GitHub,构建自己的开源仓库之Git命令

Git+GitHub,构建自己的开源仓库之Git命令

作者: 星际之痕 | 来源:发表于2016-07-04 10:18 被阅读1152次

    把本地仓库关联到GitHub仓库

    通过第一篇Git+GitHub,构建自己的开源仓库之初识Git的操作,我们已经有了一个本地仓库git-test了,现在把它发布到我的GitHub仓库里,怎么操作呢?

    • 配置SSH加密信息
      由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,首先要做的就是配置SSH加密信息。

      1. 生成SSH Key:因为安装完git后,SSH也会默认安装上,所以,在Git Bash输入命令ssh,会出现下面的内容:


        ssh信息ssh信息

        证明ssh已经安装在电脑里了。现在可以输入生成ssh key的命令了:

        ssh-keygen -t rsa
        

    后面执行三个回车(不包括上面这条命令的回车),然后在你的用户目录下会生成.ssh文件夹,是隐藏文件,里面有以下内容(known_hosts文件暂时可以忽略):


    生成的SSH公钥和私钥生成的SSH公钥和私钥
    1. 添加公钥到GitHub账户
      id_rsa是私钥,id_rsa.pub是公钥(文件类型是Microsoft Publish的那个),用编辑器打开公钥,拷贝里面的内容;然后登陆你的GitHub账户,打开“settings”,点击左侧“SSH and GPG keys”页面,然后,点“New SSH Key”,填上任意Title(也可不填),在Key文本框里粘贴刚才拷贝的公钥:


      拷贝公钥拷贝公钥

      点“Add SSH Key”,你就应该看到上面的列表中已经添加的Key。


      添加公钥成功添加公钥成功
    • 配置用户名和邮箱
      用户名是你GitHub账户的用户名,邮箱是你GitHub账户注册用的邮箱

      git config --global user.name "your-github-account-name"
      git config --global user.email "your-github-email@163.com"
      
    • 关联本地仓库

      1. 登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:


        创建GitHub Repo创建GitHub Repo
      2. 关联仓库,cd到本地仓库根目录,执行:

        git remote add origin git@github.com:chengshengyang/git-test.git
        

    origin是仓库的名字,这里使用的是约定俗成的名称origin,chengshengyang一定要换成你自己的GitHub账户名字,也就是你配置的用户名。
    好了,这样就关联成功,可以试试在本地git-test仓库里新建一个文本文档test.txt,然后push到GitHub上。


    Git常用命令操练

    在Git Bash输入git命令:


    git常用命令一览表git常用命令一览表

    如果忘记了某个命令可以先到这里面来找找看,这里还对git的命令做了一个分类,每个命令后面对应一个简短的说明。

    • 状态查询

      git status
      

    这条命令的使用频率是相当的高,有多高呢?

    三四楼那么高三四楼那么高
    这条命令简直就像是我们在git中的眼睛一样,时刻告诉我们当前的仓库是什么情况,上次离开时的最后保存状态是怎样,接下来有哪些事需要做等等。
    注意:如果家里的这台电脑还没有Git相关环境,请参考第一篇文章,准备好Git环境
    • 查看改动内容
      git diff
      我们用git status查看到本地文件有改动,但是不知道具体有哪些变化,可以用这条命令来查看,比如我改动了本地的b.txt文件,输入git status:
      $ git status
      On branch master
      Your branch is up-to-date with 'origin/master'.
      Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   b.txt
      
      no changes added to commit (use "git add" and/or "git commit -a")
      

      现在知道b.txt的状态是modified,那看看编辑了什么内容:

      $ git diff b.txt
      diff --git a/b.txt b/b.txt
      index 6608a0d..2323b58 100644
      --- a/b.txt
      +++ b/b.txt
      @@ -1,4 +1,3 @@
       00000000000000000000000000
       111111111111111111111111111
      -2222222222222222323333333333
      -44444444444444
      \\ No newline at end of file
      +2222222222222222323333333333
      \\ No newline at end of file
      

    减号是删除,加号是新增,上面的内容是说最后一行从原来的“444444444444...”变成了现在的“2222222222222222323333333333”,也就是删除了最后一行内容。

    • 拉取服务器最新内容
      git pull origin master
      一般再开始新的工作之前,都要先保证自己的本地仓库与远程仓库保持一致,也就是把自己的代码更新到最新状态,这样做的好处是减少冲突的可能性。

      git的大多数命令都是可以脱机工作的(push和pull必须联网),因为,你的操作都是对本地仓库的内容进行操作的,可以在不联网的情况下,正常的提交代码,这种便捷性是一些传统的CVCS系统所不具备的,比如Perforce在不连接到服务器的情况下几乎什么都做不了,包括编辑;Subversion和CVS虽然可以编辑内容,但无法提交代码。

    • 添加到暂存区
      git add

      对本地代码进行了增删改操作之后,需要提交到远程仓库时,git add命令是第一步,把需要提交的内容添加到暂存区,关于暂存区这个概念是git特有的,其他的传统的版本控制系统并没有这个概念,暂存区的作用是暂存本地将要提交的内容,然后提交时一次性将暂存区的内容全部提交到远程仓库。
      问题来了,要添加的内容太多怎么办?
      git add -A
      那万一这里面又有一个文件a.java是我不小心修改的,或者暂时不想提交,执行git add -A后怎么把a.java移除暂存区呢?
      git rm --cached a.java
      这样就把文件a.java从暂存区中移除来了,但不会物理删除,也不会被提交到远程仓库了。

    • 内容提交
      git commit -m "description for commit"

      把暂存区的内容提交到本地仓库,这个时候,我们的内容在GitHub或者其他的远程仓库中还是没有的,因为commit操作还是在本地进行的,也正因为如此,Git才可以脱机工作。那如果想要提交到GitHub远程仓库怎么办呢?看下面

    • 推送到远程仓库
      git push origin master

      这条指令才是真正的把本地内容推送到远程仓库,别人才能更新到你的推送。

    以上,基本上是使用Git进行版本控制的一个常用的最简单的流程会用到的命令了,也是使用频率比较高的命令,包括:拉取远程仓库最新内容-编辑本地仓库内容-将编辑的内容添加到暂存区-修改暂存区内容-提交到本地仓库-推送到远程仓库。

    当然,我们在实际使用时绝不会这么简单。git的命令也不少,这里不可能一次说完,关键在于经常使用、经常练习,没事的时候多敲敲命令,领会每个命令的含义。


    统计下人数统计下人数

    相关文章

      网友评论

      • 星际之痕:生成ssh公私密钥的时候,会生成一个known_hosts文件,这个文件的作用,从目前来看,是记录当前设备信息的,具体是IP地址信息。比如,之前配置好公钥私钥后,电脑的IP地址发生变化,那就需要重新执行生成公私钥的指令,然后这个known_hosts文件就会增加一条记录,记录的就是IP地址和对应的公钥信息。否则,像仓库push新内容的时候会失败或提示警告信息。
      • Ziv_xiao:git ssh-keygen -t rsa 这个应该是ssh-keygen -t rsa 吧。
        Ziv_xiao:@星际之痕 :grin:
        星际之痕:@Ziv_xiao 果然,是我写错啦,这不是git命令:joy:多谢提醒,这就改正!
      • 星际之痕:今天在创建一个新的GitHub时,出了点错,把关联远程仓库的指令git remote add origin git@github.com:chengshengyang/xxx.git写成git remote add origin git@github.com/chengshengyang/xxx.git,区别在于github.com后面紧跟的冒号:写成了左斜杠/,导致指令找不到服务器上对应的仓库,会报错,大家刚开始练习指令的时候一定要看清、写准。
      • zmy235:总结到位,收藏了
        星际之痕:@zmy235 嗯,用到了多看看

      本文标题:Git+GitHub,构建自己的开源仓库之Git命令

      本文链接:https://www.haomeiwen.com/subject/wnlcjttx.html