Git使用版本库创建及文件修改

Posted Blue-Code

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git使用版本库创建及文件修改相关的知识,希望对你有一定的参考价值。

一、创建版本库

1、安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

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

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
$ git config --global core.autocrlf false      //windows中的换行符为 CRLF, 而在Linux下的换行符为LF,可以使用此命令禁止自动转换

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

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

 

2、创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录(为了保证不出现问题,请保证目录名设置为英文):

$ cd d:
$ mkdir learngit $ cd learngit $ pwd /d/learngit

3、通过 git init 把这个目录变成Git可以管理的仓库:

$ git init
Initialized empty Git repository in D:/learngit/.git/

4.瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),并且当前目录下多了一个.git的目录

注意:千万不要使用Windows自带的记事本编辑任何文本文件。会导致UTF-8编码的文件,出现乱码的问题。

5、现在我们编写一个readme.txt文件,一定要放到learngit目录下(子目录也行),内容如下:

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

6、用命令 git add 告诉Git,把文件添加到仓库:

git add readme.txt

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

7、用命令 git commit 告诉Git,把文件提交到仓库:

$ git commit -m "wirte a readme file"
[master (root-commit) 2ec6b08] wirte a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

注:-m 后面输入的是本次提交的说明,方便找到历史中的记录。

总结:

git init           //初始化一个Git仓库

git add file.txt       //添加文件,可以一个

git add file1.txt file2.txt   //添加文件,可以多个

git commit -m "文字说明"  //完成并注明文字说明

 

二、版本比较

1、我们已经提交过readme.txt文件了,现在我们继续修改readme.txt文件,改成

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

2、运行 git status 查看结果

$ 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")

会告诉我们哪个文件被修改过了。

3、git diff 查看差异性

$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index d8036c1..24c6b62 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
 Git is a version control system.
-Git is free software.
\\ No newline at end of file
+Git is free software.
+Git is good!
\\ No newline at end of file

4、git add / git commit 确认哪些文件被修改过和文件内容的差异性之后,就可以放心的向仓库提交了。

$git add readme.txt    //git add . 指提交目录下的所有文件
$git commit -m "modified readme.txt"

5、git status 看看仓库的当前状态

$ git status
On branch master
nothing to commit, working tree clean  //说明工作目录是干净的

 

三、版本回退

1、git log 查看版本的历史记录,即可看到修改的过的历史记录,及历史说明。

$ git log
commit 167fb1efb4bf77266ec663eb6d2762118ea2071a (HEAD -> master)
Author: lion201314 <lion201314@vip.qq.com>
Date:   Thu Jul 13 22:18:23 2017 +0800

    readme.txt instruction

commit 8f40beccceacb2ad6b25a0df26cc52737ed09744
Author: lion201314 <lion201314@vip.qq.com>
Date:   Thu Jul 13 22:11:25 2017 +0800

    modified readme.txt

commit 2ec6b08c22375e9d3c651cd7b7eeaecb29b9f43d
Author: lion201314 <lion201314@vip.qq.com>
Date:   Thu Jul 13 21:46:29 2017 +0800

    wirte a readme file

注:参数:--pretty=oneline 可以将每条记录只显示一行

$ git log --pretty=oneline
167fb1efb4bf77266ec663eb6d2762118ea2071a (HEAD -> master) readme.txt instruction
8f40beccceacb2ad6b25a0df26cc52737ed09744 modified readme.txt
2ec6b08c22375e9d3c651cd7b7eeaecb29b9f43d wirte a readme file

2、使用 git reset 将版本回退到上一个版本“modified readme.txt

$ git reset --hard HEAD^            //回退到上一个版本
HEAD is now at 8f40bec modified readme.txt

当然git也可以自定义回到固定的版本,只要append GPLcommit id 就可以了。比如上面的案例的commit id 就是8f40bec

$ git reset --hard 8f40bec            //等同于上面的方法
HEAD is now at 8f40bec modified readme.txt

注:

HEAD指向那个版本号,当前定位就在哪里。

3、当然说明一下,你可以通过 git reflog 找到对应的commit id,终于可以不担心commit id找不到了。

 

四、现在来解析一下git的工作区和暂存区

learngit  为工作区

.git    为Git的版本库

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

 

 五、撤销修改和删除文件

1、撤销修改:git checkout -- readme.txt

$git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

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

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

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

 命令:git checkout -- file    //没有--就变成切换分支的命令。

小结:

 

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

 

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

 

 

 六、删除文件

1、添加,并提交两个文件 test1.txt test2.txt

$ git add test1.txt test2.txt
$ git commit -m "add test file"

2、现在用 rm test1.txt 删除文件

$ rm test1.txt

3、查看状态

$ 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:    test1.txt

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

4、

场景一:删除错误的情况,需要恢复数据 git checkout -- test1.txt

 

场景二:正常删除,需要删除版本库中信息 git rm test1.txt

  

 

以上是关于Git使用版本库创建及文件修改的主要内容,如果未能解决你的问题,请参考以下文章

GitGit 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )

Git创建本地版本库

Git基础使用教程(连接github)

MacOS下的Git安装及使用

git简介及上传代码到github

git撤销修改及版本回退