zoukankan      html  css  js  c++  java
  • github新手使用指南

    常用命令:

     
    Git 速查表(摘自 AI有道)

    一、常见命令

    • git init : 初始化 git 仓库,即将一个文件夹初始化为一个 git 仓库。具体的操作是创建一个 .git 隐藏文件夹
    • git status : 查看仓库的状态
    • git add <file> : 将文件提交到暂存区
    • git commit -m <代码提交信息> : 将暂存区的文件提交到仓库中,并附带说明信息
    • git log : 查看所有产生的 commit 记录
    • git config -l : 查看自己的配置,默认配置都在.git/config 文件中

    1.2 分支相关的命令

    • git branch <branch_name> : 如果不加上 <branch_name>,查看当前分支情况。如果加上,就是创建一个分支。
    • git checkout <branch_name> : 切换到<branch_name>的分支上
    • git checkout -b <branch_name> : 创建一个分支并切换到这个分支上,效果相当于合并上面 2 个命令。
    • git merge <branch_name> : 将 <branch_name> 分支合并到当前所在的分支上
    • git branch -d <branch_name> : 将 <branch_name> 分支删除
    • git branch -D <branch_name> : 将 <branch_name> 分支强制删除。如果 <branch_name> 分支存在未合并的代码时,那么用 -d 是删除不了。

    1.3 标签相关的命令

    • git tag : 查看历史 tag 记录。
    • git tag <tag_name> <commit_id> : 在指定提交 id 上创建一个 tag。如果不写 <commit_id> ,那就在最新的 commit 上创建一个 tag。
    • git checkout <tag_name> : 切换到 <tag_name> 标签
    • git show <tag_name> : 查看标签信息
    • git tad -d <tag_name> : 删除标签
    • git push origin <tag_name> : 将某个标签推送到远程仓库
    • git push origin :refs/tags/<tag_name> : 可以删除一个远程标签。

    1.4 SSH

    提前申明, windows 系统并不自带 SSH, 但是安装的 Git 中带有 SSH。所以以下命令请在 Git bash 下执行。

    • ssh-keygen -t rsa : 指定 rsa 算法生成密钥。
    • ssh -T git@github.com : 测试 ssh 是否成功添加到 github 中

    1.5 Github 操作

    • git clone ... : 将 github 项目复制到本地的当前目录
    • git push origin <本地分支>:<远程分支> : 把本地分支中本地代码同步到远程分支
    • git pull orgin <branch_name> : 把远程 <branch_name> 分支的最新的代码同步到本地当前分支中
    • get remote add origin git@github.com:xxx/xxxx.git : 将当前本地仓库与远程进行联接
    • git remote -v : 查看我们当前项目有哪些远程仓库

    1.6 补充命令

    • alias 别名

      • git config --global alias.<别名> "<原命令>"。比如 git config --global alias.c "checkout",之后 git c == git checkout
    • diff

      • git diff : 比较工作区文件和暂存区文件差异。如果加上文件名,就仅比较这个文件在工作区与暂存区的区别
      • git diff <commit_id1> <commit_id2> : 比较两次提交之间的差异
    • checkout

      • 作用 1 :切换分支、标签以及 commit。本质是「用某个 HEAD 中的最新内容替换掉你的工作区中的文件」。切换时,暂存区的内容不受影响但相当于在切换前执行了 git stash
      • 作用 2 :撤销还没进入暂存区的修改的作用。举个例子,假设我们在一个分支开发一个小功能,刚写完一半,这时候需求变了,而且是大变化,之前写的代码完全用不了了,好在你刚写,甚至都没有 git add 进暂存区,这个时候很简单的一个操作就直接把原文件还原:git checkout a.md,本质上是将 HEAD 内容覆盖掉工作区的内容。注意,checkout 命令只能撤销还没有 add 进暂存区的文件。
    • stash

      • 作用:把当前分支中的工作区的所有修改先暂存到栈上。
      • 运用场景:假设我们正在一个新的分支做新的功能,这个时候突然有一个紧急的bug需要修复,而且修复完之后需要立即发布。当然你说我先把刚写的一点代码进行提交不就行了么?这样理论上当然是ok的,但是这会产品垃圾commit,原则上我们每次的commit都要有实际的意义,你的代码只是刚写了一半,还没有什么实际的意义是不建议就这样commit的,那么就用 git stash 保留。
      • git stash : 把当前分支所有没有 commit 的代码先暂存起来
      • git stash list : 查看所有 stash 记录
      • git stash apply : 将暂存的代码还原
      • git stash drop : 把最近一条 stash 记录删除。注意:每次还原代码后,最好删除这条 stash 记录
      • git stash pop == git stash apply + git stash drop
      • 注意:执行了 git add 的数据在切换分支时,会自动暂存一起。本质上是因为切换分支不影响暂存区的数据。但需要手动恢复。

    二、常用概念

    2.1 工作区、暂存区与 HEAD

    • 工作区就是你还没有执行 git add 的文件,它持有实际文件;
    • 暂存区就是你执行了 git add 但没执行 git commit 的文件,它像个缓存区域,临时保存你的改动;
    • HEAD 就是你执行完 git commit,它指向你最后一次提交的结果并且清空暂存区。
     
    工作区、暂存区与 HEAD 参考:http://rogerdudler.github.io/git-guide/index.zh.html

    在实际中,工作区有一个隐藏目录 .git ,它不属于工作区,而是 Git 的版本库。Git 的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫 index )的暂存区,还有 Git 为我们自动创建的第一个分支
    master ,以及指向master的一个指针叫 HEAD。

     
    实际目录中,三种状态的联系 参考:https://www.liaoxuefeng.com

    与此同时,History 保存着所有分支信息,HEAD 指针指向当前分支。

     
    三种状态的联系(更详细版)[3]
     
    三种状态之间的转换及其命令 [3]

    上述命令有待验证。

    2.2 分支 branch

    stormzhang 从0开始学习 GitHub 系列之「团队合作利器 Branch」

    2.3 标签 tag

    本质:标签作用于提交上,可以看成是某个提交的别称。

    运用:主要用于标记软件的版本号。

    2.4 SSH

    简单点说,SSH是一种网络协议,用于计算机之间的加密登录。目前是每一台 Linux 电脑的标准配置。而大多数 Git 服务器都会选择使用 SSH 公钥来进行授权,所以想要在 GitHub 提交代码的第一步就是要先添加 SSH key 配置。

    命令生成的密钥会存放在两个文件 id_rsa 和 id_rsa.pub ,而 id_rsa 是私钥,id_rsa.pub 就是公钥。这两文件默认分别在如下目录里生成:

    Linux/Mac 系统 在 ~/.ssh 下,win系统在 /c/Documents and Settings/<username>/.ssh 下,都是隐藏文件,相信你有办法查看的。

    接下来要做的是把 id_rsa.pub 的内容添加到 GitHub 上,这样你本地的 id_rsa 私钥跟 GitHub 上的 id_rsa.pub 公钥进行配对,授权成功才可以提交代码。

    2.5 Github 操作

    Push

    如果你本地代码有更新,那么就需要把本地代码推到远程仓库,这样本地仓库跟远程仓库就可以保持同步了。

    Pull

    如果远程仓库有更新,那么需要把远程仓库的最新代码更新到本地,然后保证两端代码的同步。一般我们在 push 之前都会先 pull ,这样不容易冲突。

    先有远程仓库,后有本地仓库:Clone

    使用 git clone 命令,将远程仓库复制到本地中。然后,修改本地仓库并进行 git commit。然后,git pull orgin <远程分支> 建立本地仓库和远程仓库之间联系以及保持同步。最后,git push origin <本地分支>:<远程分支> 将本地仓库的修改提交到远程仓库中

    通过 git clone 命令复制的仓库,不需要使用 git init 初始化,同时也不需要声明与远程仓库关联(因为已经声明了)。

    先有本地仓库,后有远程仓库:关联本地已有项目

    如果我们本地已经有一个完整的 git 仓库,并且已经进行了很多次 commit ,我们想将本地仓库提交到 github 上。

    假设本地仓库 test2,要提交到 github test 项目中,一般步骤是:

    1. 在 github 创建 test 项目
    2. 在 test2 目录中输入 git remote add origin git@github.com:xxxx/test.git 将本地 test2 项目与 github 的 test 项目关联起来
    3. git push origin master

    合并操作:merge & rebase

    git merge branch_a 与 git rebase branch_a 的效果是一样,都是将 branch_a 分支合并到当前的分支中。但两者合并方式不同:rebase 跟 merge 的区别你们可以理解成有两个书架,你需要把两个书架的书整理到一起去,

    • 第一种做法是 merge ,比较粗鲁暴力,就直接腾出一块地方把另一个书架的书全部放进去,虽然暴力,但是这种做法你可以知道哪些书是来自另一个书架的;
    • 第二种做法就是 rebase ,他会把两个书架的书先进行比较,按照购书的时间来给他重新排序,然后重新放置好,这样做的好处就是合并之后的书架看起来很有逻辑,但是你很难清晰的知道哪些书来自哪个书架。

    合并冲突

    如果两个分支 a,b 同时修改了同一个位置时,合并到 master 时就会报冲突。不管两个分支合并的先后顺序、中间是否还合并了其他的分支(即任何情况下),都会报冲突。发生冲突的地方,Git 会在发生冲突的位置使用 <<<<< 、======、>>>>> 标记出不同分支的内容。如

    <<<<<<< HEAD  # HEAD 内容
    Creating a new branch is quick & simple.
    =======
    Creating a new branch is quick AND simple.
    >>>>>>> feature1 # feature1 分支的内容
    

    此时,你需要手动地进行正确的合并后,再 git add . 与 git commit 就可以了。

    2.6 Git 与 SVN 对比

     
    Git 与 SVN 对比

    Git 属于分布式版本控制系统,而 SVN 属于集中式。集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。

    参考:

    1. stormzhang 从 0 开始学习 GitHub 系列
    2. git - 简明指南
    3. CS-Notes Github




    链接:https://www.jianshu.com/p/3a437dbc6f2a
    来源:简书

    https://blog.csdn.net/Hanani_Jia/article/details/77950594源博客地址

    首先,我先对GitHub来一个简单的介绍,GitHub有一个很强大的功能就是,你在服务器上边可以创建一个库(稍后会介绍怎么创建),写代码是一件很重的任务,尤其是很多人完成一个很大的项目的时候,就十分的复杂,一群人一起来写某个项目,大家完成的时间,完成的进度都是不相同的,你写一点我写一点,甚至可能你今天写的出现了错误,影响到了我昨天写的代码,最后怎么才能将大家的代码轻松的汇总起来,又怎么在汇总所有人的代码之后发现错误等等一系列问题。这样我们就用到了GitHub这个软件。我们在GitHub服务器上有一个主仓库,这里用来储存你的所有代码,如果不付费的话是所有人都可以看的,如果你不想让别人看到你的代码,可以选择付费仓库。我们创建了主仓库之后,就可以在电脑上创建分支,之后你就可以在电脑上完成自己的代码,写完之后直接同步在电脑的分支,当你认为可以上传的自己的主仓库时,就可以申请更新,当通过审核的时候,你代码就出现在了自己的主仓库中,这样全世界的程序员都可以查看你的代码。全世界现在已经有300万的注册用户,甚至还有一些相当知名的开源项目也在其中公布代码。在GitHub上你可以看到很多计算机领域的精英所分享的自己的代码。这是GitHub的两个主要优点,适合团队协作,以及下载其他优秀者的代码。

     

    今天,GitHub已是:一个拥有143万开发者的社区。其中不乏Linux发明者Torvalds这样的顶级黑客,以及Rails创始人DHH这样的年轻极客。

    · 这个星球上最流行的开源托管服务。目前已托管431万git项目,不仅越来越多知名开源项目迁入GitHub,比如Ruby on Rails、jQuery、Ruby、Erlang/OTP;近三年流行的开源库往往在GitHub首发,例如:BootStrapNode.jsCoffeScript等。alexa全球排名414的网站。

    https://github.com/ 这是GitHub的官方网站,在官网上可以注册属于自己的GitHub账号,网上是全英文的,对于英语不好的同学建议使用谷歌浏览器,谷歌浏览器可以翻译网页变为中文使用起来十分方便。

     

    通过简单的步骤之后你就会有一个属于自己的GitHub账号。再简单注册完成之后会需要验证你所输入的邮箱才能正常使用你的GitHub。

     在注册完成之后,完成一些简单的设置之后,你需要创建一个属于自己的库

     

    在登陆自己的GitHub账号之后,在网页右上角的小加号是用来创建自己的库的按钮,之后的步骤将网页翻译成中文之后,按提示进行创建自己的库即可。

     

    第一个框是自己为自己的库起一个名字,第二个框是自己对库的一个简单介绍

    在创建完成自己的库之后,下面就要让自己的电脑克隆一个自己所创建的库,方面自己电脑上的代码同步到GitHub你所创建的库当中。

      为了实现,就需要安装一个软件,Git Bash。

     

    下面我就介绍一下这个软件的安装,以及简单的配置。

    git-scm.com 首先进入GitHub官网,下载适合自己电脑的版本

     

    下载完安装包之后运行

    在安装过程中直接默认选项即可。

     在对git bash进行配置的时候大多数新手都是一头雾水,下面我对配置的每一步就会有详细的记录。代码我也是从网上和学长那边要来的。

     

    我第一次打开软件后看到这个界面也是一脸懵逼的,然后通过查阅了各种各样的资料之后才有了一些思路。

     首先要在本地创建一个ssh key 这个的目的就是你现在需要在你电脑上获得一个密匙,就是咱们平时的验证码一样的东西,获取之后,在你的GitHub账号里边输入之后,你的电脑就和你的GitHub账号联系在一起了,这样以后就可以十分方便的通过Git bash 随时上传你的代码。下边介绍一下如果获得这个钥匙,又是如何输入到你的GitHub里边的呢。

      

    很多人第一次打开这个GitHub的时候一脸懵逼,认为这是什么。对于一个新手来说看到这个是没有任何思路,没有任何想法的。

    这一栏 开始是你的计算机的名字在我这里就是Hanani @后边的内容是你的计算机型号,很多时候有的人打开之后@后边是乱码,这个时候也不要在意,因为有些电脑型号是中文的,可能在显示的时候出现了问题,不影响你后期的操作。

      接下来,就要开始获取属于你自己的密匙。在git bash中所有功能都是通过简单的一些代码来实现的。获取密匙的时候需要输入

    $ ssh-keygen-t rsa-C "your_email@youremail.com"

    需要输入这个代码,引号内需要改成你在注册GitHub的时候绑定的邮箱账号。之后会有一些简单的让你确认的操作,之后让你会提示操作路径、密码等等,一般情况下就直接按回车一路过就可以。

     

    如果之后你出现了这个界面之后,就说明你的密匙已经成功创建了。现在你就需要去他刚刚显示的存储位置打开它,把其中的内容复制出来。

     

    在.ssh这个文件夹中

    之后你会看到这些内容,有的人会在id_rsa后边带有一个pub,之前看网上教程需要找到带pub的文件,因为我在生成后没有带.pub的文件,怀着忐忑的心打开id_rsa后发现这里边的密匙也是可以使用的。打开id_rsa的时候需要用记事本的方式打开。

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIskXqZF3SSFtACK6zoNGJabikTBC3kig6+4j4dCq1tswhA9YkuJCi0WpRmGYWBQ67dyT2or7RedFZlULLZN3nL6AWlo5V2jRXw4WQxCon2rU1p122wmiTzqYOfsykjwullWV4bYcZU4n77A4/9WwlSqZCpEbcdwV8IMkvwfJUInSWqTvmYMcKTWu8yad5DZ2v7LBWfgsL/Tfx7aEB8UjDNJ6SPw30Yijy+62YrftYGgbuwoiL9hDNGO2LfjgOkglHTBJaZe31uQLLWc5uCzd+7Dgh7RaKMmeuz2Uv7yqm/IEU9jH8cPMR9YRPIhmzg38G2s9ILn27QqW9j1hrFY1V 15229020556@163.com

    这就是我所获取的密匙,打开之后很长的一段,不要惊讶,没有问题,这就是你所需要的密匙。

     现在你就需要登录到你的GitHub上边添加这个密匙,

     

    打开你GitHub的设置界面,找到SSH and GPG keys这个选项之后,在网页右上角有一个添加新的SSH keys 点击

     

    这里的title 是让你给你的密匙起一个名字,根据个人喜好,什么名字都可以,然后把你在刚刚文件中复制的密匙,填写在下边的大框里。保存即可。

    之后你就可以回到你的Git bash上边了

    然后输入上边的代码,来检查是否成功绑定。第一次绑定的时候输入上边的代码之后会提示是否continue,在输入yes后如果出现了:You've successfully authenticated, but GitHub does not provide shell access 。那就说明,已经成功连上了GitHub。接下来还需要简单的设置一些东西。

    输入上边的代码,name最好和GitHub上边的一样,email是一定要是注册GitHub的那个邮箱地址

    这两个的顺序可以颠倒,没有固定的顺序。

     下面就要将你的库克隆下来到本地电脑中,方便以后进行上传代码。

     

    在库创建完成之后 会有一个网址出现在网页中。

    个人习惯将自己的文件储存在d盘之中,所以你先需要将git bash定位在d盘中

     

    在git bash中输入 cd /D 注意盘名字一定要是大写。如不输入这个语句 不给git bash定位的话,默认的本地文件位置是在c盘中。

    输入之后会出现/D说明定位成功。

    之后输入

    git clone后边的网址就是你创建库成功之后的网址

    之后打开我所定位的D盘

     

    可以看到,D盘中已经有以我的库名所创建的文件夹了。

    打开这个文件夹,然后在其中创建一个任意格式,任意名称的文件。

     

    之后重新定位git 把书 的位置,定位在你库的文件夹。

    之后输入ls语句 ls的作用是查看你目前所定位的文件夹中的文件,现在可以看出来,我刚刚所创建的test文件已经出现了。

    然后输入 git add test.txt

    之后输入然后git commit -m "cc"  引号内的内容可以随意改动,这个语句的意思是 给你刚刚上传的文件一个备注,方便查找记忆而已

    输入之后出现以上情况,然后在输入git push origin master 之后会出现一个

     

    界面,在这里登陆你之前注册的GitHub账号之后点击login。

     

    如果之后出现这种情况的话,就是登陆失败了,这时候你就需要输入你GitHub的账号名称

    输入之后会出现这个界面,然后再次输入你的GitHub密码。

    出现类似界面,你就可以欢呼了,代表你成功了。

    现在打开你的GitHub网站,找到你创建的库

     

    发现今天的格子已经绿了,说明你已经上传了你刚刚所创建的文件。

    再之后,你只需要将你的代码,放到库的对应的文件夹中,然后使用 先CD到你库里面,再git add 、git commit -m "   " 、最后git push origin master,将你的代码提交就可以了。

     同样我感觉网页版的github更适合新手小白,https://blog.csdn.net/hanani_jia/article/details/79855429 这是我写的一篇网页版github的简单操作,需要的可以看一下。

  • 相关阅读:
    JAVA
    JAVA
    软件工程概论
    大道至简杂记
    InvokeRequired和Invoke
    C#代码:用事件模式实现通知
    VS 2012 C#快捷键
    error LNK2026: 模块对于 SAFESEH 映像是不安全的
    写EXCEL(csv 可以用EXECEL打开,逗号分列隔符)
    防止界面卡顿
  • 原文地址:https://www.cnblogs.com/lixiaochong/p/14086227.html
Copyright © 2011-2022 走看看