码迷,mamicode.com
首页 > 其他好文 > 详细

git

时间:2019-11-04 09:41:19      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:rem   控制   file   ast   修改   信息   分支管理   git merge   git log   

版本库创建

什么是版本库呢,版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以"还原"。创建一个版本库非常简单,首先选择一个合适的地方,创建一个空目录:

mkdir git _trainning
cd git _trainning
git init

瞬间Git就把仓库建好了,而且告诉你是一个空(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要动手修改这个目录里面的文件,不然乱改了,就把Git仓库给破坏了。如果你没有看到.git目录,那时因为这个目录默认是隐藏的,用ls -ah 命令就可以看见。

把一个文件放到Git仓库只需要两步.第一步,用命令git add 告诉Git,把文件添加到仓库:

git add first_git_file.txt

git add . #是把当前路径下的文件都添加到仓库

第二步,用命令git commit 告诉Git,把文件提交到仓库:

git commit -m "commit my first file"

代码回滚

代码修改并提交

 git status #查看修改

虽然Git告诉我们first_git_file.txt被修改了,但如果能看看具体修改了什么内容,需要用git diff这个命令看看:

git diff first_git_file.txt

代码回滚

在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都被修改了什么内容,不然要版本控制系统干什么,版本控制系统肯定有某个命令可以告诉我们历史纪录,在Git中,我们用git log命令查看:

git log

git log 命令显示最近到最远的提交日志,我们可以看到4次提交,最近的一次add new content,上一次是update again,最早一次的是commit myfirst git file,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

git log --pretty=online

回滚回滚

现在,我们要把当前版本"add new content" 回退到上一个版本"update again",就可以使用git reset

git reset --hard HEAD^

最新的那个版本add new content已经看不到了,好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办呢,办法还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个add new content的commit id,于是就可以指定回到未来的某个版本:

git reset --hard 4459657

撤销修改

你可以发现,Git会告诉你,git checkout --file可以丢弃工作区的修改

git checkout --readme.md

more readme.md

命令git checkout -- readme.md意思就是,把readme.md文件在工作区的修改全部撤销,这里有两种情况: 一种是readme.md自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态; 一种是readme.md已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。总之就是让这个文件回到最近一次git commit或git add时的状态。git checkout -- file命令中的--很重要,没有--,就变成了"切换到另一个分支"的命令,我们在后面的分支管理会再次遇到git checkout命令.

Git同样告诉我们,用命令gir reset HEAD file可以把暂存区的修改撤销(unstage),重新放回工作区:

git reset HEAD readme.md

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,当我们用HEAD时,表示最新的版本。

删除操作

一般情况下,通常直接在文件管理器中把没用的文件删了,或者用rm命令删了

rm test.txt

这个是时候,Git知道你删除了文件,因此工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:现在是有两选择,一是确实要从版本库中删除该文件,那就用命令git rm 删除,并且git commit:

git rm test.txt

git commit -m "remove test"

现在,文件就从版本库中被删除了,另一种情况是删错了因为版本库里还有呢,所以可以很轻松地把误删的文件到最新版本:git checkout其实是用版本库里版本替换工作区的版本,无论工作区是修改还是删除,都可以"一键还原".

git checkout -- test.txt

分支管理

首先,我们创建dev分支,然后切换到dev分支,git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

git checkout -b dev

用git branch命令查看当前分支:

git branch

现在我们把dev分支的工作成果合并到master分支上:git merge命令用于合并指定分支到当前分支,合并后在查看内容就可以看到和dev分支的最新提交是完全一样的,如果有Fast-forward信息,Git告诉我们,这次合并是"快进模式",也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并

git merge dev

合并完成后,就可以放心的删除dev分支:

git branch -d dev

https://www.cnblogs.com/alex3714/articles/5930846.html

git

标签:rem   控制   file   ast   修改   信息   分支管理   git merge   git log   

原文地址:https://www.cnblogs.com/venvive/p/11790102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!