Git和github使用方法总结

Git是一个版本控制系统,用于跟踪文件随时间变化状态的一款软件。更具体的说,git是一个分布式的版本控制系统,在git中参与项目的每程序员不仅能拥有文件的当前状态,还能拥有项目的完整历史记录。

git有很多优点,独自一个人工作时:

  • 如果编译过程中出错,你可以及时回到前一个时间点,以恢复较早的一个版本。
  • 如果你想要了解一天前,一周前、甚至一个月一年前的项目状态,你可以检查项目的先前版本以详细产看当时文件的状态。
  • 通过我们很难记住当时为什么要做出修改,使用git的提交提交信息功能,就很容易对你所做改动的原因进行文档记录,以便将来参考。
  • 因为使用git很容易恢复前一个版本的项目,你可以很有信心做出任何你想要的修改,如果项目修改后不能正常工作,你还可以随时回到较早前的一个版本。
  • 你可以通过创建历史记录的不同分支,来尝试对内容做出不同的更改,或独立构建不同的功能分支。然后你可以将这些不同分支合并到主项目历史记录中(master branch)。

与一个团队合作时:

  • 解决冲突:使用git,许多人可以在同一时间对同一个文件进行更改,通常git能够自动合并这些更改。如果不能自动合并,他将向你展示有何冲突,并且将你更易理解这些冲突。
  • 历史记录的独立分支流:在一个项目中不同的人可以在不同的分支工作,这使他们能独立工作在不同的功能上,然后再各自完成后合并这些功能。

git使用方法

安装以及配置用户名和邮箱
创建版本库
将文件提交版本库中
版本回退
git和github远程连接
添加远程仓库
克隆远程仓库

  • 安装以及配置用户名和邮箱
    windows和linux下安装都很简单,注意安装成功后要配置用户名和邮箱,也就是说本地所有仓库都是用该用户和邮箱来唯一标识和使用。基本上github用哪个邮箱和用户名,本地git配置就用哪个邮箱和用户名。命令如下。
    这里写图片描述
  • 创建版本库
    版本库就是repository,可以理解为一个存放代码的目录,这个目录里的所有文件都可以被Git来管理,每个文件的删除修改,Git都能记录下来。创建方法很简单,就是选定一个目录,我选定的是/c/shuai/hello这个目录,然后执行git init命令,就可以把这个目录变为可以管理的仓库。此时hello目录下会有一个.git目录,这里面存放的就是文件各版本记录。
    这里写图片描述
  • 将文件添加到版本库中
    首先要明确,版本控制系统只能跟踪文本文件(txt,网页,代码等)的改动,对于视频、音乐、图片是没办法跟踪文件变化的。在仓库目录hello下,新建read.txt文件,里面内容初始为one。使用git add filename命令把文件存添加到缓冲区内,执行后没有任何提示就说明添加成功了。然后执行git commit命令,把文件提交到仓库。还可以为该次提交写注释,标明自己都做了哪些修改,命令为git commit -m 注释。也可以在提交的时候在vim里写注释,我的注释是this is the first message.
    Git和github使用方法总结_第1张图片
    小总结:将文件添加到版本库中主要是两个命令组合使用:git add和git commit,git add负责将文件添加进缓冲区,git commit负责将文件从缓冲区提交至版本库。缓冲区是.git目录中(版本库)比较重要的组成部分,用来暂存文件修改。

    将文件添加到版本库中常用命令。

  • git status 命令:
    用来查看是否还有文件未提交
    通过上文可以知道,文件提交(添加到版本库)需要两步,添加进缓冲区和提交至版本库。那么我们来分别看看当文件处于不同状态时,git status命令的不同。
    对文件read.txt做修改,在原来基础上添加一行two。先不要执行git add命令添加进缓冲区,执行git status:
    Git和github使用方法总结_第2张图片
    然后执行git add命令,文件放进缓冲区后,还未提交时,用git status命令查看文件提交情况。
    Git和github使用方法总结_第3张图片
    可以明显看出,两者情况有何不同。 红字表示已经修改,但未进缓冲区,绿色表示已经修改,也已经放进缓冲区,但还未提交至版本库。平时大家使用git时,在确定无误后,可以添加完后可以直接提交。
    当把文件从缓冲区提交到版本库后,使用git status查看。
    这里写图片描述

  • git diff filename命令
    该命令只在文件修改后,但还未add或commit之前有效,用来记录文件做了哪些修改。一旦add或commit后,该命令就没反应了。我们对read.txt文件执行如下删除one-添加one-添加two操作后,先不要add,用git diff命令查看做了哪些修改。当确定无误后,在add和commit。
    Git和github使用方法总结_第4张图片

  • git log命令
    这个命令和git diff恰好相反,是只对提交后的文件有记录。不管之前你修改过多少次,只要没提交(commit)过,即使add过,git log也不会记录的。
    Git和github使用方法总结_第5张图片

  • 版本回退
    目前我们已经会了修改文件,当实际工作中,我们发现当前版本出现错误,想回退到上一个版本。此时可以用git reset命令。HEAD^就是指回退到上一个版本的指针。如果回退到上上个版本,命令是HEAD^^,如果回退到10各版本之前,命令是HEAD~100。
    这里写图片描述
    Git和github使用方法总结_第6张图片
    这里我们回退到上一个版本,用cat命令查看文件内容,发现two没有了,git log也只是记录了上个版本的信息。当我们发现后悔了,其实不应该回退的,脑残想再回到当前版本,命令如下:git reset --hard 版本号。通过git reflog命令查看所有提交文件的版本号。我们发现two版本注释为second,其对应版本号为9365bcc,然后执行git reset –hard 9365bcc就可以回到刚才的版本了。用cat命令查看内容,发现有two了。
    Git和github使用方法总结_第7张图片
  • git和github建立远程连接
    这块是和github结合使用,将本地git仓库和github仓库之间进行文件传输。首先应该注册github账号,应该和本地的用户名和邮箱一致。然后由于git和github间的传输是通过SSH加密的,故需要产生密钥,一个放在本地git仓库(私钥),一个放在github仓库(公钥)。
    Git和github使用方法总结_第8张图片
    首先在本地git仓库目录下,执行ssh-keygen -t rsa -C “邮箱@163.com”命令,会产生公钥和私钥密钥对,然后选择保存密钥对的目录,系统会默认给个目录,我选择了放在C/shuai/hello/.ssh下,注意的一点就是必须要有.ssh这个文件,这里是放私钥的,然后在该目录下会同时产生一个公钥。然后要输入git和github进行文件传输的密码,可设可不设。成功后,会给出私钥.ssh和公钥.ssh.pub的目录位置,私钥是自己留着的,放在本地git仓库中,公钥是可以公开的,给github。两者进行通信时,git用私钥给文件加密,github收到后,用公钥解密;反之,github用公钥给文件加密,git收到后用私钥解密。

    然后打开github,按照图示,先打开本地公钥文件.ssh.pub(可用notepad++打开),copy到github的Key中,点击add SSH key,就表示github以成功拥有了公钥,和git可以远程通信了。
    Git和github使用方法总结_第9张图片

  • 添加远程仓库
    目前情景是,已经在本地创建了一个git仓库,又想在github上创建一个同样git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。首先在github上创建hello.git的仓库,然后在本地git仓库目录下,执行:git remote add origin https://github.xom/Miaoshuai0677/hello.git,然后输入git push -u origin master命令,如果你设过本地git和github通信的密码,此时会要求你输入用户名和密码:Git和github使用方法总结_第10张图片Git和github使用方法总结_第11张图片

    push成功后,github上会有新的文件。
    这里写图片描述

  • 从github上克隆到本地
    首先在本地新建一个目录,作为保存克隆项目的仓库,然后执行git clone 地址的命令。成功后,会发现本地仓库中有了新的项目名字。
    Git和github使用方法总结_第12张图片

你可能感兴趣的:(Git和github使用方法总结)