• git入门


    Git

    git是一种分布式版本控制系统。

    一、什么是分布式版本控制系统?

    分布式版本控制系统(Distributed Version Control System,简称 DVCS)。 在这类系统中,像 GitMercurialBazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

    二、git安装

    官方版本可以在 Git 官方网站下载。

    打开 https://git-scm.com/download/win,然后选择相应的版本即可。

    三、git使用

    1、创建目录

    选择一个合适的地方创建一个空目录

    2、初始化仓库

    git init
    
    • 1

    瞬间 Git 就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),同时在当前目录下多了一个.git的目录,这个目录是 Git 来跟踪管理版本库的,如果你没有看到 .git 目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看到了。

    3、克隆现有的仓库

    git clone

    git clone https://gitcode.net/codechina/help-docs
    
    • 1

    也可以自定义本地仓库的名字

    git clone https://gitcode.net/codechina/help-docs mydocs
    
    • 1

    4、编辑并添加文件

    新建readme.txt

    第一步,用命令git add告诉 Git,把文件添加到仓库:

    git add readme.txt
    
    • 1

    执行上面的命令,没有任何显示,说明添加成功。

    5、提交变动到仓库

    第二步,用命令git commit告诉 Git,把文件提交到仓库:

    git commit -m "wrote a readme file"
    
    • 1

    这里简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

    也可以一次提交多个文件

    git add file1.txt
    git add file2.txt file3.txt
    git commit -m "add 3 files."
    
    • 1
    • 2
    • 3

    6、查看git仓库当前状态变化

    git status命令可以让我们时刻掌握仓库当前的状态

    git status
    
    • 1

    7、比较变动

    git diff这个命令查看相较于上一次暂存都修改了些什么内容

    git diff readme.txt 
    
    • 1

    8、修改文件并提交

    提交修改提交新文件一样的两步

    (1)git add

    git add readme.txt
    
    • 1

    (2)git commit

    git commit -m "add distributed"
    
    • 1

    9、git回退(reset)

    假设我们需要将 readme.txt 回退到上一个版本,也就是 wrote a readme file 的这个版本,我们需要怎么操作呢?

    首先,Git 必须知道当前版本是哪个版本,在 Git 中,用**HEAD表示当前版本**,也就是最新的提交e55063a上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    git reset

    git reset --hard HEAD^
    
    • 1

    10、git重置(reflog)

    假如你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?

    当你用git reset --hard HEAD^回退到wrote a readme file版本时,再想恢复到add distributed,就可以通过git reflog命令找到add distributedcommit id

    git reflog

    git reflog
    
    50ed06b (HEAD -> master) HEAD@{0}: reset: moving to HEAD~
    e55063a HEAD@{1}: reset: moving to HEAD
    e55063a HEAD@{2}: commit: add distributed
    50ed06b (HEAD -> master) HEAD@{3}: commit (initial): wrote a readme file
    ESC
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    从上面的输出可以看到,add distributedcommit ide55063a,现在,我们就可以通过 git reset --hard e55063a切换到最新的版本上了。

    11、查看日志

    如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

    git log --pretty=oneline

    git log --pretty=oneline
    
    e55063ad7f97dd979e4f94e12d2bc44a25a0fd55 (HEAD -> master) add distributed
    50ed06bd62fd34afbe501e6f2a4af73ccbe187f0 wrote a readme file
    (END)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    12、工作区和暂存区

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

    工作区(Working Directory)

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f7g6n6PH-1656061420135)(https://codechina.csdn.net/CoCo_Code_Op2/course_test_repo/-/raw/70770c9493a21cdacf4e140ab7fe117ee23782a8/static/images/006.png)]

    版本库(Repository)

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

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xxBwgVWV-1656061420136)(https://codechina.csdn.net/CoCo_Code_Op2/course_test_repo/-/raw/70770c9493a21cdacf4e140ab7fe117ee23782a8/static/images/007.jpeg)]

    13、撤消修改(git commit --amend)

    有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令来重新提交:

    git commit --amend

    git commit --amend
    
    • 1

    14、撤消对文件的修改(git --checkout)

    如果你并不想保留对 readme.txt 文件的修改怎么办? 你该如何方便地撤消修改——将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)

    git checkout -- readme.txt
    
    • 1

    15、删除文件

    一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:(rm删除的是工作区的文件,也就是你本地的文件)

    rm test.txt
    
    • 1

    Git知道你删除了文件,因此,工作区和版本库就不一致了

    如果要从版本库中删除文件

    (1)git rm 或者git add

    (2)git commit -m "remove test.txt"

    如果是删错了文件,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:(还原版本库

    git checkout -- test.txt
    
    • 1
  • 相关阅读:
    在 Linux 上使用 Systemd 运行 Java Jar 应用程序
    我如何使用工具学习网络技术?
    Hadoop生态之Flume
    《Autosar_MCAL高阶配置》总目录_培训教程持续更新中...
    Ansible初识以及安装
    代码随想录 单调栈part2
    Github-Readme-Stats 简明教程
    【源码】完美运营版商城+虚拟商品全功能商城+全能商城小程序+智慧商城系统+全品类百货商城
    嵌入式系统软件开发环境_3.主要功能和典型产品
    偏差与方差
  • 原文地址:https://blog.csdn.net/weixin_55983004/article/details/127439589