Git本地仓库管理
Posted africancu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git本地仓库管理相关的知识,希望对你有一定的参考价值。
Git is a distributed version control system Git is free software
现在运行 git status
命令查看状态:
[[email protected] 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")
git status
命令可以让我们时刻掌握仓库当前状态,上面的输出告诉我们如下信息:
-
当前处于master分支
-
修改还没有提交到暂存区
-
readme.txt文件被修改了
-
Git
虽然告诉我们readme.txt
文件被修改了,但是如果能告诉我们具体修改了什么,那是最好不过了。
使用git diff
命令就可以查看到底什么被修改了。
git diff readme.txt ? diff --git a/readme.txt b/readme.txt index f7249b8..2fdf0c4 100644 --- a/readme.txt //表示源文件 +++ b/readme.txt //目标文件 @@ -1,2 +1,2 @@ //差异定位 -Git is a version control system //只出现在源文件中 +Git is a distributed version control system //只出现在目标文件中 Git is free software //既出现在源文件又出现在目标文件中
---
代表源文件,比如 a/readme.txt
是源文件
+++
代表目标文件,比如 b/readme.txt
是目标文件
@@ -1,2 +1,2 @@
表示差异小结的定位
-
开头的,只出现在源文件中
+
开头的,只出现在目标文件中
空格开头的,即出现源文件又出现在目标文件中。
看完差异之后,我们再次将修改提交到版本库中
git add . git commit -m "add distributed"
一、版本回退
为了更好的显示版本控制,我们对 readme.txt
再进行一次修改,并提交到版本库
Git is a distributed version control system Git is free software distributed under the GPL ? git add . git commit -m "append GPL"
我们可以使用 git log
命令显示从最近到最远的提交日志
[[email protected] learngit]# git log commit 79aa29e0b2cfa9023c5814108948ae969516979b Author: zhoumingjun <[email protected]126.com> Date: Mon Aug 27 17:25:45 2018 -0400 ? append GPL ? commit 79a2516b55dabea00086ab0d53c9481ea5da539d Author: zhoumingjun <[email protected]126.com> Date: Mon Aug 27 17:20:30 2018 -0400 ? add distributed ? commit 63c6fc5426a4b8962522e183a45b609708448f53 Author: zhoumingjun <[email protected]126.com> Date: Mon Aug 27 16:43:05 2018 -0400 ? wrote a readme file
可以看到有三次提交信息,使用 git log --pretty=oneline
可以输出精简版
[[email protected] learngit]# git log --pretty=oneline 79aa29e0b2cfa9023c5814108948ae969516979b append GPL 79a2516b55dabea00086ab0d53c9481ea5da539d add distributed 63c6fc5426a4b8962522e183a45b609708448f53 wrote a readme file
这个长度为40的字符串就是每次提交的版本号。我们想回退的话,必须要告诉Git
我们要回退到那个版本。
在Git
中,HEAD
表示当前版本,HEAD^
表示上一个版本,HEAD^^
表示上上个版本,依次类推,如果回退100个版本,那就是简写成HEAD~100
。
比如我们现在要向前回退一个版本,就可以执行 git reset
命令
git reset --hard HEAD^ ? HEAD is now at 79a2516 add distributed //当前版本在79a2516
如果又要回到最新的那个版本
git reset --hard 79aa29e
现在总结一下:
-
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。 -
穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。 -
要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
二、工作区和暂存区
-
工作区(Working Direcotory)
就是电脑里面能看到的目录,比如我的
learngit
文件夹就是一个工作区 -
版本库(Repository)
工作区有一个隐藏目录
.git
,这个不算工作区,而是Git
的版本库。Git
的版本库中存了很多东西,其中最重要的就是暂存区(stage / index),还有Git
为我们创建的第一个分支master
,以及指向master
的一个指针HEAD
。前面我们将文件提交到版本库是分两步进行的:
-
使用
git add
将文件从工作区添加到暂存区(暂存区是版本库的一部分)。 -
使用
git commit
将暂存区的内容提交到当前分支。
我们创建
Git
版本库时,Git
自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改。可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
-
-
以上是关于Git本地仓库管理的主要内容,如果未能解决你的问题,请参考以下文章