zoukankan      html  css  js  c++  java
  • Git简介

    相关文档链接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    集中式版本控制系统(SVN,CVS):速度慢,必须联网才能使用。其中CVS是作为最早的开源而且免费的集中式版本控制系统,直到现在用的人不在少数;但是由于CVS自身设计问题,会造成提交文件不完整,版本库莫名其妙损坏的情况;同样是开源而且免费的SVN修正了这一稳定性问题,是目前用得最多的集中式版本库控制系统。分布式版本控制系统(Git):安全性更高,不需要联网等以及强大的分支管理(远超与SVN)

    理解集中式控制系统和分布式的区别:

    集中式控制系统:版本库是集中放在中央服务器的,然后干活的时候,用的是自己的电脑,所以要先从中央服务器取到最新的版本,干完活,再推送上去;反之如果中央服务器出了问题,所以人就无法干活了。

    分布式版本控制系统:没有"中央服务器",每个人的电脑上都是一个完整的版本库,所以在多人协助的时候,只需要将自己修改的推送上去,就可以相互看到对方的修改了。但在实际使用的时候,通常是有一台电脑充当"中央服务器"作用,不过仅仅只是作为交换修改的作用,没有也可以一样的工作。

    安装Git:因为最早Git是在Linux上开发的,后来才慢慢地有人把它移植到了Windows上的。如果要学习Git在Linux的安装可以查看上面的文档,这一次的学习主要是针对windows系统。

    下载安装程序:https://git-scm.com/downloads,然后按默认选项安装即可。

    安装完成后,点击鼠标右键找到“Git”->“Git Bash”,弹出一个类似命令行窗口的东西,就说明Git安装成功!

    安装成功之后,还需要最后一步设置,在命令行输入:

    注意git config命令的- -global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

    创建版本库:版本库又名仓库,英文名repository;您可以理解为一个目录,这个目录下的所有文件都将被git管理起来,不论是删除、修改,还是在未来某个时刻还原。

    所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录。

    切记目录名不能包含中文!!!

    第二步:通过git init 命令把这个目录变成git可以管理的仓库:

     这个时候你会发现在仓库目录下出现了一个.git文件,这个文件是GIT来管理版本库的,没事不要手动修改或删除,以免将GIT仓库给破坏了。

    如果您没有看到这个目录,那是因为这个目录默认隐藏的,用ls -ah命令就可以看见。

    使用windows时请注意建议你下载notepad++(https://notepad-plus-plus.org/)代替记事本,记得将编码设置成UTF-8。

    言归正传,我们编写一个aaa.text文件,内容如下:

    Git is a version control system.
    Git is free software.

    把一个文件放到Git仓库只需要两步:

    工作区和暂存区:

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。

    工作区(Working Directory)

    就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:

    版本库(Repository)

    作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

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

    前面我们提到的git add是把文件修改提交到暂存区,git commit 就是把所有暂存区的东西提交到当前分支。

    因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

    管理修改

    比如说:

    第一次修改 -> git add -> 第二次修改 -> git commit

    这个时候你git status的时候提示你第一次的修改只是放在暂存区,并未提交。如果要查看工作区和版本库里面最新版本的区别(可以使用git diff HEAD -- aaa.txt命令):

    撤销修改

    方法一:

    可以手动恢复到上一个版本的状态,也可以通过git status查看差异,git有个命令可以丢弃工作区的修改(将所有工作区的修改全部撤销):

    git checkout -- aaa.txt

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commitgit add时的状态。

    方法二:

    也可以通过git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区(git reset不光可以回退版本,也可以把暂存区的修改回退到工作区,我们用HEAD时,表示最新的版本)。

    删除文件

    同上,可以手动删除,或者用rm命令删了:

    rm aaa.txt

    当你删除了工作区的文件之后,这个时候工作区的文件就和版本库不一样了;git status命令会立刻告诉你哪些文件被删除了。

    现在有两种方法,一是从版本库张删除该文件,用命令git rm删掉,并且git commit:

    现在,文件就从版本库中被删除了。

    另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

    git checkout -- test.txt

     分支管理

    其他版本控制系统如SVN等都有分支管理,但是用过之后你会发现,这些版本控制系统创建和切换分支比蜗牛还慢,简直让人无法忍受,结果分支功能成了摆设,大家都不去用。

  • 相关阅读:
    [IOI1998] Pictures
    【C++】位操作(3)-获取某位的值
    PAT A 1013. Battle Over Cities (25)【并查集】
    hihoCoder 1391 Countries【预处理+排序+优先队列】2016北京网络赛
    PAT A 1014. Waiting in Line (30)【队列模拟】
    codeforces Round#379 div.2
    PAT A 1004. Counting Leaves (30)【vector+dfs】
    POJ 1163:The Triangle
    LeetCode39/40/22/77/17/401/78/51/46/47/79 11道回溯题(Backtracking)
    BZOJ 3680 吊打XXX
  • 原文地址:https://www.cnblogs.com/1156063074hp/p/9454733.html
Copyright © 2011-2022 走看看