欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

GitHub入门

程序员文章站 2022-07-13 17:58:56
...

之前只是在github上下载过项目,最初还以为github就是一个开源的网站呢,原来它主要是从事代码托管和版本控制的,现在因为信息安全工程的老师要求代码要提交到github上以供检查,刚好借此机会学习一下,具体如何使用github:

  • 首先要在github上注册一个帐号,最好还要把新手简介给看一下,实现其要求的helloworld输出,对github有一个初步的了解,大概了解一下github的工作流程,还有一些基本概念,比如repository,branch,commit,pull request,merge的概念。
  • 然后我们还要学习一下Git的知识,我们要知道github就是一个用git来做版本控制的项目托管平台,而git就是一个版本控制的工具。

- 下面我们来系统的介绍一个git工具

这里推荐一个网站寥雪峰老师的官方网站
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
我这里就简单的对这个网站的一些可以直接用到的东西拿出来,想要更好理解的,请直接看寥雪峰老师的网站。
-首先要安装Git工具(我这里是linux系统)所以只介绍这一个, 别的操作系统请看寥老师网站。
sudo apt-get install git

  • 创建一个版本库就是仓库(repository)
    mkdir learngit
    cd learngit
    这里也就是创建里一个目录,然后通过下面的命令,将其变成Git可以管理的仓库
    git init
    这时候目录下,会多一个.git的目录,这个目录git用来跟踪管理版本库的,不可以随便改
  • 往版本库中添加文件(添加的文件必须在仓库目录下)
    git add readme.txt(是将文件添加入暂存区)
    注意这里我们默认readme.txt在learngit这个目录或者子目录下
    git commit -m “wrote a readme file”(是将暂存区所在的文件添加入所在的分支)
    用命令git add告诉Git,把文件添加到仓库,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录
  • 我们可以使用git status命令查看结果,git status命令可以让我们时刻掌握仓库当前的状态
  • git diff 文件名 用来查看文件做里哪些修改
  • git log 命令显示从最近到最远的提交日志
  • HEAD表示当前版本(commit id) HEAD^表示上一个版本
  • git reset –hard HEAD^ 表示回退到上一个版本
  • git reset –hard commit id 表示回溯到commitid所在的版本
  • git reflog 用来记录你的每一次命令 //可以用来查询要回溯版本的commit id
  • git checkout – file可以丢弃工作区的修改
    git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
    总之,就是让这个文件回到最近一次git commit或git add时的状态。
  • 删除文件:git rm file 删除掉文件 然后git commit进行提交
    如果是资源管理器误删的话,可以使用git checkout – file 进行文件恢复

本地git仓库与GitHub中仓库进行链接

   1. 创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
ssh-****** -t rsa -C "[email protected]"
然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
   2.登陆GitHub,打开“Account settings”,“SSH and GPG Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,即可。
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
3.将本地仓库于github上的仓库进行关联
git remote add origin [email protected]:username/test.git遇到的问题:
1.fatal: 远程 origin 已经存在。 路径写错,origin已经创建,不能够重复创建,因此现在要  git remote rm origin
 删除origin 重新创建。
 2.put 项目时error: src refspec master does not match any.错误,发现原因分析引起该错误的原因是,目录中没有文件,空目录是不能提交上去的 。
 3.git commit 进行项目提交时遇到错误
 unable to auto-detect email address
 解决办法:
 找到工程目录的.git文件夹,打开之后找到config文件,在最后边加上一句话
 [user]
 email=your email
 name=your name

把本地库的内容推送到远程库上

git push -u origin master
出现里错误::更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。 提示:再次推送前,先与远程变更合并(如 ‘git pull …’)。
解决办法:
git fetch origin //获取远程更新
git merge origin/master //把更新的内容合并到本地分支
执行第二条语句时,有出线错误,fatal: 拒绝合并无关的历史
解决方法:git pull origin master –allow-unrelated-histories
此时推送终于完成。
以后每次
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
以后只要本地作了提交,就可以通过命令: git push origin master,进行推送即可。

从远程库克隆

分支

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout -b name

合并某分支到当前分支:git merge name

删除分支:git branch -d name

先介绍到这里,GItHub入门的目的肯定是达到了,以后多多使用,在进行总结。