• Git 与 SVN 不同,是分布式的版本控制系统,不需要主服务器即可工作,实际中为了方便各个工作者间同步工作,通常还是会设置主服务器。
  • Git的设置及初始化:
    • 设置全局用户信息:

luojiahu@ubuntu:~/learning/learngit$ git config --global user.name "luojiahu"

luojiahu@ubuntu:~/learning/learngit$ git config --global user.email "luojiahu@yeah.net"

    • 初始化目录为Repository:

luojiahu@ubuntu:~/learning/learngit$ git init

Initialized empty Git repository in /home/luojiahu/learning/learngit/.git/

  • 文件的提交:

luojiahu@ubuntu:~/learning/learngit$ git add ReadMe.txt

luojiahu@ubuntu:~/learning/learngit$ git commit -m "add a readme file."

[master (root-commit) 849bbd2] add a readme file.
  1 file changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 ReadMe.txt

  • 查看当前Repository的状态信息

luojiahu@ubuntu:~/learning/learngit$ git status

On branch master

Changes not staged for commit:
   (use "git add <file>..." to update what will be committed)
   (use "git checkout -- <file>..." to discard changes in working directory)

modified:   ReadMe.txt

no changes added to commit (use "git add" and/or "git commit -a")

  • 查看详细的文件变化内容

luojiahu@ubuntu:~/learning/learngit$ git diff ReadMe.txt

diff --git a/ReadMe.txt b/ReadMe.txt

index e69de29..38b41f6 100644

--- a/ReadMe.txt

+++ b/ReadMe.txt

@@ -0,0 +1 @@

+add some content.

  • 查看提交日志,可以通过—pretty=oneline 限制为显示单行

luojiahu@ubuntu:~/learning/learngit$ git log

commit f2adaa19be7976661aa65228ca20ca02a83c1999

Author: luojiahu <luojiahu@yeah.net>

Date:   Tue Aug 28 08:09:00 2018 -0700

add GPL

commit 356f51ac350dca07602a5b7f4d0b6fbf7d8eb27f

Author: luojiahu <luojiahu@yeah.net>

Date:   Tue Aug 28 08:07:16 2018 -0700

add some content.

commit 849bbd2050a94e8cec1403ebdac5f1d56ad914b8

Author: luojiahu <luojiahu@yeah.net>

Date:   Tue Aug 28 07:45:18 2018 -0700

add a readme file.

luojiahu@ubuntu:~/learning/learngit$ git log --pretty=oneline

f2adaa19be7976661aa65228ca20ca02a83c1999 add GPL

356f51ac350dca07602a5b7f4d0b6fbf7d8eb27f add some content.

849bbd2050a94e8cec1403ebdac5f1d56ad914b8 add a readme file.

  • Git版本的回退:

在Git中,用HEAD表示当前版本,上一各版本是HEAD^,上上个为HEAD^^,以此类推… 版本号太大是可以用类似HEAD100~表示。

可以通过git reset命令实现版本的回退,不添加—hard 参数仅仅回退当前工作版本,添加—hard 修改实际文件内容。

luojiahu@ubuntu:~/learning/learngit$ git reset HEAD^

Unstaged changes after reset:

M    ReadMe.txt

luojiahu@ubuntu:~/learning/learngit$ git log

commit 356f51ac350dca07602a5b7f4d0b6fbf7d8eb27f

Author: luojiahu <luojiahu@yeah.net>

Date:   Tue Aug 28 08:07:16 2018 -0700

add some content.

commit 849bbd2050a94e8cec1403ebdac5f1d56ad914b8

Author: luojiahu <luojiahu@yeah.net>

Date:   Tue Aug 28 07:45:18 2018 -0700

add a readme file.

回退后又后悔了怎么办?可以通过 git reflog 查看每一步的操作命令

luojiahu@ubuntu:~/learning/learngit$ git reflog

849bbd2 HEAD@{0}: reset: moving to HEAD^

356f51a HEAD@{1}: reset: moving to HEAD^

f2adaa1 HEAD@{2}: commit: add GPL

356f51a HEAD@{3}: commit: add some content.

849bbd2 HEAD@{4}: commit (initial): add a readme file.

然后,通过git reset –hard commit_id 恢复至对应的版本,commit_id不必写全

luojiahu@ubuntu:~/learning/learngit$ git reset –hard f2adaa1
HEAD is now at f2adaa1 add GPL

  • 工作区与版本库:

Git 中当前的工作路径即为工作区(Working Directory),在Working Directory 下的 .git目录即为版本库(Repository)。其中版本库又分为暂存区(Stage),Master分支,及HEAD指针等。git add 命令将修改的文件提交到Stage区,而git commit命令将暂存区的内容提交到当前的分支。

  • Git 管理 “修改” 而不是 “文件”

git commit 只会将上次 git add 命令提交到 Stage 区的修改提交到当前分支,在最近一次 gti add 命令之后对文件做的修改将不会被提交。

  • 撤销修改
  1. 当对工作区的修改,未添加到暂存区时,可以通过:git chechout – filename 命令恢复修改
  2. 当对工作区的修改已经添加到暂存区,可以通过:git reset HEAD ReadMe.txt 命令恢复暂存区,然后按照1中的步骤恢复工作区。

luojiahu@ubuntu:~/learning/learngit$ git status
On branch master
Changes to be committed:
   (use "git reset HEAD <file>..." to unstage)

modified:   ReadMe.txt

luojiahu@ubuntu:~/learning/learngit$ git reset HEAD ReadMe.txt
Unstaged changes after reset:
M    ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ git status
On branch master
Changes not staged for commit:
   (use "git add <file>..." to update what will be committed)
   (use "git checkout -- <file>..." to discard changes in working directory)

modified:   ReadMe.txt

no changes added to commit (use "git add" and/or "git commit -a"

luojiahu@ubuntu:~/learning/learngit$ git checkout -- ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ git status
On branch master
nothing to commit, working directory clean

删除文件

Git认为文件的删除也是一种修改操作,可以通过git rm命令实现文件的删除。如果发生误删,可以通过git reset HEAD filename + git checkout – filename 恢复文件。

luojiahu@ubuntu:~/learning/learngit$ git rm ReadMe.txt

rm 'ReadMe.txt'

luojiahu@ubuntu:~/learning/learngit$ git status

On branch master

Changes to be committed:
   (use "git reset HEAD <file>..." to unstage)

deleted:    ReadMe.txt

luojiahu@ubuntu:~/learning/learngit$ git checkout -- ReadMe.txt

error: pathspec 'ReadMe.txt' did not match any file(s) known to git.

luojiahu@ubuntu:~/learning/learngit$ git status

On branch master

Changes to be committed:
   (use "git reset HEAD <file>..." to unstage)

deleted:    ReadMe.txt

luojiahu@ubuntu:~/learning/learngit$ git reset HEAD ReadMe.txt

Unstaged changes after reset:

D    ReadMe.txt

luojiahu@ubuntu:~/learning/learngit$ git status

On branch master

Changes not staged for commit:
   (use "git add/rm <file>..." to update what will be committed)
   (use "git checkout -- <file>..." to discard changes in working directory)

deleted:    ReadMe.txt

no changes added to commit (use "git add" and/or "git commit -a")

luojiahu@ubuntu:~/learning/learngit$ git checkout -- ReadMe.txt

luojiahu@ubuntu:~/learning/learngit$ ll

total 16

drwxrwxr-x 3 luojiahu luojiahu 4096 Sep  1 18:58 ./

drwxrwxr-x 3 luojiahu luojiahu 4096 Aug 28 07:42 ../

drwxrwxr-x 8 luojiahu luojiahu 4096 Sep  1 18:58 .git/

-rw-rw-r-- 1 luojiahu luojiahu   28 Sep  1 18:58 ReadMe.txt

Git 学习笔记–基本操作的更多相关文章

  1. Git学习笔记---协作的一般流程

    一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...

  2. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  3. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  4. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  5. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

  6. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

  7. [转]Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  8. GIT学习笔记(1):创建版本库

    GIT学习笔记(1):创建版本库 创建版本库 1.创建合适目录并初始化为仓库 版本库即需要交由Git进行版本控制的目录,其下所有文件的修改.删除,Git都能跟踪还原. 说明:初始化后,当前目录下会多出 ...

  9. GIT学习笔记(5):变基

    GIT学习笔记(5):变基rebase 变基 引入变基 在Git中整合来自不同分支的修改主要有两种方法:merge以及rebase. 整合分支最容易的方法是merge,他会把两个分支的最新快照以及两者 ...

随机推荐

  1. PHP discuz模板语法

    Discuz! X 模板的解析主要是 ./source/class/class_template.php 文件解析处理的,如果需要深入了解请可以看看这个文件! 模板嵌套语法 将被嵌套模板内容解析为 P ...

  2. shell链接

    5个实用的shell脚本面试题和答案: http://www.cnblogs.com/xinjie10001/p/6395945.html linux shell 逻辑运算符.逻辑表达式详细介绍: h ...

  3. css3 box-shadow属性 鼠标移动添加阴影效果

    text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果. 基本语法:{box-shadow:[inset] x-offset  y-offset  blur-rad ...

  4. 大数据平台搭建:Hadoop

    To construct big data distributed platform based on Hadoop is a common method. Hadoop comes fron Goo ...

  5. AWK入门指南

    一. AWK入门指南 Awk是一种便于使用且表达能力强的程序设计语言,可应用于各种计算和数据处理任务.本章是个入门指南,让你能够尽快地开始编写你自己的程序.第二章将描述整个语言,而剩下的章节将向你展示 ...

  6. geos学习笔记:安装和使用

    1.首先在https://trac.osgeo.org/geos下载geos-3.6.2.tar.bz2 解压后 cd geos- ./configue //或选择安装的目录./configure - ...

  7. PHP使用in_array函数检查数组中是否存在某个值

    PHP使用 in_array() 函数检查数组中是否存在某个值,如果存在则返回 TRUE ,否则返回 FALSE. bool in_array( mixed needle, array array [ ...

  8. 13、SpringBoot-CRUD员工修改操作/删除

      对于修改连接的uri 在list.html中 <a class="btn btn-sm btn-primary" th:href="@{/update/} + ...

  9. 有gridview汇出word和excel

    private void Export(GridView _gv, string filetype, string FileName)    {        if (filetype == &quo ...

  10. tomcat部署web项目方法

    一.tomcat部署web项目之静态配置: 方法一:直接将为web项目放到webapps下: 如图所示:在webapps文件下,存放了一个html文件,启动tomcat,访问http://localh ...