git之本地仓库

git

以下步骤均在Deepin 15.7 环境下记录,不同Linux发行版命令可能不同。(Deepin 基于 Centos 开发,所以Centos 应该也是OK的)
参考:progit 2nd Edition (2014)

  • git处理数据更像是一种 stream of snapshots.* git处理数据更像是一种 stream of snapshots.
  • git管理下的文件一共有三种状态
    • committed: 文件已经成功的存储到本地数据库。
    • modified:文件已经被修改但是还没有被同步到数据库。
    • staged:
  1. 安装
> sudo apt-get install git
  1. 配置
> git config --global user.name "your name"
> git config --global user.email "example@email.com"
  • 普通用户执行上述命令,–global选项并没有作用,可以去掉。

普通用户在执行完上述命令之后,可以看到
.gitconfig
这个文件中已经有了刚才所输入的内容。如果是root用户执行了上述配置命令,则配置文件位于/root/.gitconfig

  • 查询配置:
>git config user.name
>git config user.email

实际上,通过观察刚才的文件格式,很容易推断出,如果我们直接按照相似的格式修改文件,比如在email下一行添加他行abc = def ,这样我们查询git config user.abc的时候,也会得到def的结果.

  • 查看所有配置内容:
>git config --list
  • 实际上,git 为每一个系统(root,/root/.gitconfig),每一个用户(user,~/.gitconfig),每一个项目都有一个相应的配置文件,有的时候git读取出的配置值可能不是我们想要的。这个时候可以使用命令git config --show-origin <user.email> 来查看当前配置项的值是从哪一个文件中读取的。
  • 在使用中想要获取帮助信息可以执行以下命令中的一个。
>git help <verb>
>man git-<verb>

Git Basics

整体工作流程

在这里插入图片描述
在这里插入图片描述

在空文件夹中创建一个仓库并向仓库中添加文件

1. 
在这里插入图片描述
2.当前文件夹下多一个叫.git的文件夹,这是一个git仓库的骨架,包含了一个git仓库所必备的所有文件。
在这里插入图片描述
3.写一个helloworld程序。
在这里插入图片描述
4.执行git add命令,选择想要添加到仓库中的文件。
在这里插入图片描述
5.执行 git commit命令将所选的文件添加到仓库
在这里插入图片描述

commit到仓库的文件是执行add命令时刻的文件。
在这里插入图片描述

从远程中克隆一个仓库

1.执行git clone <repository_url>,执行该命令不是简单的从远程接收个个文件的最新版本,而是获取远程仓库中的几乎所有的内容,包括其中的每个文件的每一次修改。(git 本身是一种分布式VCS)
2.选择克隆了一个JSON解析的开源库。
在这里插入图片描述
3. 也可以重命名克隆的文件夹
在这里插入图片描述
4. 克隆的结果
在这里插入图片描述

使用status查看当前仓库的状态

1.有一个untracked file,也就是仓库中还没有该文件的任何记录,但是本地却新建的文件。
在这里插入图片描述

2. 将文件添加到要提交的队列,再次查看状态。
在这里插入图片描述3. 将文件提交到仓库,再次查看状态。
在这里插入图片描述
4. 修改文件并提交,查看状态。
在这里插入图片描述
5.虽然status显示的信息很全面,但是有时也会显得很啰嗦,使用命令git status -sor git status --short 来获取更加简明的状态信息。还没有tracked过的文件会用符号??表示,A表示已经添加到staging area的新文件,M表示修改过的文件。一共有两列状态信息输出,左侧的表示staging area的状态,右侧表示working tree的状态。如下面的MM
在这里插入图片描述

忽略一些特定的文件不提交

1. 如果想让一些文件不被自动add(保持文件为untracked状态),可以使用配置文件.gitignore,来配置正则表达式忽略特定类型的文件。
在这里插入图片描述

更多规则参考这里
.gitignore一般位于仓库的根目录,用于对整个仓库进行限制。
.gitignore 也可以位于仓库中的各个文件夹下,则该文件中的规则只对当前文件夹下的文件有效。内层的文件不会屏蔽外层文件的效果,相互叠加。

查看已经staged或者还没有stage过的更改

  1. 使用git diff 查看还没有staged过的更改。如果staging area中有该文件,则git diff执行的是当前工作区与staging area中文件的对比。如果没有,这会将工作区的该文件与仓库中的备份比。
  • 没有任何参数的git diff是查看你在上次git add之后在本地修改了什么。
  1. 使用git diff --stagedgit diff --cached查看将要git commit 什么内容。比较的是staging area 与仓库中文件的不同。
  2. 使用 git difftool来使用第三方工具查看不同

commit文件到仓库

  1. git commit命令提交,会将当前staging area中的所有内容提交到仓库,在提交之前会要求输入对当前提交的备注。
  2. git commit -m '<message>'使用-m标签来直接输入备注。
  3. git commit -a使用-a标签来将working tree和staging area中的所有更改全部提交到仓库。

注意:使用-a标签不会自动add新文件,也就是说只有已经tracked过的文件会被自动跳过straging area 直接提交到仓库,而新创建的文件会被忽略。

删除文件

  1. 使用rm命令直接删除。
    在这里插入图片描述
  2. 使用git rm命令删除
    在这里插入图片描述3. 第一种方式是直接修改working tree中的内容,是系统文件系统首先删除这一文件,而git对此不会产生任何干涉。第二种方式是通过git来删除文件,git会将这一删除操作记录到staging area并删除文件。实际上,在第二种方式中,git会首先对比仓库中的文件与working tree和staging area中是否有区别,如果有则不会执行操作,因为在提交git仓库前删除文件,其中最近修改的内容不会在仓库中留下记录,以后也无法恢复,这是十分危险的。所以使用git rm也是一种更加安全的删除文件的方式。如果确定想要放弃本地修改直接删除文件。可以使用命令git rm -f来强制删除。
    在这里插入图片描述4. 如果想要删除staging area中的内容而保留本地磁盘中的文件。使用命令git rm --cached,其作用可以理解为撤销或部分撤销刚才的add操作。
    在这里插入图片描述

移动文件

  1. git本身并不支持重命名文件,也就是说,如果我们本地重命名了一个文件,那么仓库中不会有任何信息来体现这一过程。
  2. 可以使用git mv <source_file_name> <target_file_name>来重命名文件。
    在这里插入图片描述
  3. 实际上,git mv <source_file_name> <target_file_name>命令是 mv <source_file_name> <target_file_name> git rm <source_file_name> git add <target_file_name>三条命令的叠加。
    在这里插入图片描述

使用git log 命令查看提交历史记录

在这里插入图片描述

取消操作

  1. 使用git commit --amend来修改上次的提交操作

    1. 如果在上次commit之后直接执行git commit --amend,那么会获得修改备注信息的机会,而上次提交的备注信息会被忽略。2. 如果在上次commit之后直接执行git commit --amend,那么会获得修改备注信息的机会,而上次提交的备注信息会被忽略。
      在这里插入图片描述在这里插入图片描述3. 实际上,git commit --amend执行后的效果是将前一次的提交完全替换掉,在替换完成之后,仓库中不会再有任何关于前一次提交的记录。
      在这里插入图片描述
  2. 撤销上一次对staging area的修改。

    1. 使用命令git reset HEAD <file>来撤销上次git add的文件。
      在这里插入图片描述在这里插入图片描述
  3. 撤销对文件的本地修改

    • 使用命令git checkout -- <file>撤销本地修改到上一次commit时的状态。

远程协作

占坑

版本标签

占坑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值