目录

基本概念

工作区(Working Directory): 就是你在电脑里能看到的目录

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

暂存区 : Git 的版本库里存了很多东西,其中最重要的就是称为 stage(index)的暂存区

配置

配置个人帐号信息

  • CLI 方式:
  git config --global user.email "jmilkfan@example.com"
git config --global user.name "jmilkfan"
  • Edit 方式:

    针对账户的配置: vim ~/.gitconfig
[user]        # User info
| email = jmilkfan@example.com
| name = jmilkfan [core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
editor = vim # 默认编辑器

针对单个项目的配置: vim projectName/.git/config

|   repositoryformatversion = 0
| filemode = true
| bare = false
[remote "origin"]
| url = http://fanguiju@192.168.1.1:8080/openstack/projectname
| fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
| remote = origin
| merge = refs/heads/master
[remote "gerrit"]
| url = ssh://fanguiju@192.168.1.1:8080/openstack/projectname.git
| fetch = +refs/heads/*:refs/remotes/gerrit/*

安装

sudo apt-get install git
# OR
yum install -y git

本地版本库

版本库又名仓库(repository),可以简单理解为一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

创建 Git 仓库

  • 创建工作目录
mkdir jmilkfanDir
  • 将工作目录变成 Git 工作区
cd jmilkfanDir
git init

生成 .git 目录, 这个目录才是本质上的 Git 仓库, 是 Git 来跟踪管理版本库的根本。

  • 在工作区创建文件, 并将文件添加到 Git 仓库中, 让 Git 仓库能够记录这个文件的当前状态(内容)

    NOTE1 : 只能跟踪文本文件的改动(txt/html/代码文件),而没法跟踪图片、视频、word文件这些二进制文件内容的变化

    NOTE2 : 建议所有文件都使用标准的 UTF-8 编码
touch README.md

git status   # 查看当前工作区的状态, 即工作区中有那些文件是和 Git 仓库中记录的内容不一样的
# Or
git status -s # 简约的状态查看方式 git add README.md # 添加单个文件
# Or
git add . # 添加所有文件 git diff # 查看当前工作区中的文件内容与已往 Git 仓库中记录的内容有那些不同, 强烈建议在每一次执行 commit 之前都 diff 一次来确保能完成期望的提交 git commit -m "注释, 便于记录这次提交的内容主题" # -m 只能提交单行注释, 并不规范
# Or
git commit # 进入 Vim 编辑模式, 可以编辑规范的注释

status 指令: 可以让我们时刻掌握 Git 仓库当前的状态

add 指令: 本质上是将工作区中的文件记录到 Git 仓库的暂存区中, 并没有真正写入到 Git 仓库

diff 指令: 看当前工作区中的文件内容与已往 Git 仓库中记录的内容有那些不同

commit 指令: 将暂存区的内容提交到 Git 仓库中记录. 所以, add 可以指定多个文件, 最终由 commit 一次性写入到 Git 仓库.

  • 删除文件
git rm README.md
git commit -m "remove README.md"

删除文件也会导致工作区和 Git 版本库的不一致, 所以也需要提交操作, 来让 Git 版本库来记录这一此的改变.

NOTE: 删错了, 也可以很轻松地把误删的文件恢复到最新版本

git checkout -- README.md

Git 仓库版本回退

Git 仓库的版本被称为 commit, 一旦你把文件改乱了,或者误删了文件,还可以回退最近的一个 commit.

通过 log 来查看 commit ID:

git log    # 查看完整的 log 信息
# Or
git log --pretty=oneline # # 查看简洁的 log 信息

回退的步骤:

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

  • git reset 指令. EG:

git reset --hard HEAD^
# Or
$ git reset --hard [commit ID]

NOTE: 回退 “回退” 的方法

只要上面的命令行窗口还没有被关掉,你就可以顺着往上找到那个希望回退 “回退” 的commit id

那么忘记了 commit 怎么办 ? 还可以使用 git reflog 指令

git reflog

修改管理

如果每次在工作区中对文件的修改,不 add 到暂存区,那就不会被提交到 commit 中.

所以当我们 git add 了一个文件后, 发现还需要继续对文件进行修改时, 先别着急提交第一次修改,再次 git add 第二次修改之后 git commit,就相当于把两次修改合并后一块提交了.

第一次修改 ⇒ git add ⇒ 第二次修改 ⇒ git add ⇒ git commit

  • 撤销修改

    我们可以通过 git checkout -- filename 手动的把 filename 文件中的修改撤销掉.

    git checkout -- filename命令中的 很重要,没有 ,就变成了“切换到另一个分支”.

把 filename 文件在工作区的修改全部撤销,这里有两种情况:

1. filename 文件自修改后还没有被 add 到暂存区,现在执行 git checkout -- filename 就能够撤销修改, 从而让文件回到和版本库中所记录的一样;

2. filename 已经 add 到了暂存区后,又对文件作了修改,现在执行撤销修改的话, filename 文件就回到 add 到暂存区后的状态(即仍会保留暂存区中的内容)。

NOTE: 针对第二种情况, 我们还可以在 commit 之前, 用命令 git reset HEAD filename 把暂存区的内容进行撤销,让 filename 文件重新放回工作区的状态. git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。

  • 使用技巧:

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git checkout -- filename

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,第一步用命令 git reset HEAD file,就回到了场景1,再git checkout -- filename .

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,git reset --hard [commit ID]

Git 本地仓库管理的更多相关文章

  1. git本地仓库管理远程仓库

    git remote add origin https://xxxxxgit push -u origin master

  2. Git本地仓库

    原文:http://www.cnblogs.com/wilber2013/p/4189920.html Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository) ...

  3. Git本地版本控制备忘

    首先git是一个版本控制工具,类似于SVN 笔记包括两部分,git本地版本控制和git远程协助 一.Git本地版本控制 以git windows版本msysgit为例,下载地址http://msysg ...

  4. **Git本地仓库图解

    Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录 ...

  5. 版本控制git之一 仓库管理 安装 基础

      版本控制git之一-仓库管理 git ​ 再开始这个话题之前,让我想起了一件很痛苦的事情,在我大学写毕业论文的时候,我当时的文件是这样保存的 毕业论文_初稿.doc 毕业论文_修改1.doc 毕业 ...

  6. Git本地服务器搭建及使用详解

    Git本地服务器搭建及使用 Git是一款免费.开源的分布式版本控制系统.众所周知的Github便是基于Git的开源代码库以及版本控制系统,由于其远程托管服务仅对开源免费,所以搭建本地Git服务器也是个 ...

  7. git本地提交到远程仓库命令

    创建好远程仓库,然后要从本地上传代码到远程仓库: 1.git init 初始化git本地仓库 2. git add 添加到暂存区 3. git commit -am "提交备注" ...

  8. 搭建Git本地服务器

    搭建Git本地服务器 参考文章:http://www.ossxp.com/doc/git/gitolite.html 当前任务,学习中... 公司小范围用法: 服务器上做的: .在服务器上建立一个用户 ...

  9. Git-gitblit-Tortoisegit 搭建Windows Git本地服务器

    1.Gitblit安装 1.1.Gitblit简介 Git在版本控制领域可谓是深受程序员喜爱.对于开源的项目,可以免费托管到GitHub上面,相当的方便.但是私有项目托管到GitHub会收取相当昂贵的 ...

随机推荐

  1. Java分支结构

    Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java有两种分支结构: if语句 switch语句 if语句 一个if语句包含 ...

  2. Vue源码------------- 数据响应系统的基本思路

    在 Vue 中,我们可以使用 $watch 观测一个字段,当字段的值发生变化的时候执行指定的观察者,如下: var vm = new Vue({ data: { num:1 } }) vm.$watc ...

  3. Redis Cluster集群详介绍和伪集群搭建

    1 什么是Redis-Cluster 为何要搭建Redis集群.Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着Redis不适合存储大数据,适合存储大数据的是Hadoop生态系 ...

  4. python之—flask虚拟环境

    一.安装: 输入以下命令可以检查系统是否安装了virtualenv : $ virtualenv --version 如果结果显示错误,你就需要安装这个工具. 1.Ubuntu 用户可以使用下述命令安 ...

  5. Spring Boot项目生成jar包,并在windows服务器中注册成服务,开机启动

    背景: 使用Spring Boot开发的Web项目,打包生成了一个jar包,希望能部署在Windows服务器中 尝试: 1.Spring Boot生成的jar包,可以直接用java -jar运行,但是 ...

  6. Android_开发片段(Part 3)

    1.Android中的五种布局方式:线性布局(Linear Layout).相对布局(Relative Layout).表格布局(Table Layout).网格视图(Grid View).标签布局( ...

  7. 微信小程序利用canvas生成海报分享图片

    一 . 效果 这是借用女神照生成的分享的海报,图片来自网络. 新增了poster组件和更新图片自适应 二 . 准备 准备两张图片连接,最好是自己开发账号验证的https图片链接. 三 . 实现思路 其 ...

  8. 带头结点的循环单链表----------C语言

    /***************************************************** Author:Simon_Kly Version:0.1 Date: 20170520 D ...

  9. *&m与m的区别

    int *a;int * &p=a; 把 int * 看成一个类型,a就是一个整型指针,p 是a的别名 #include<iostream> using namespace std ...

  10. KMP概念上小结

    kmp算法的时间复杂度是O(m+n) 主要作用: 1.最长公共前后缀问题 2.原串中含有几个模式串问题 3.循环节问题