Git版本控制管理@[TOC]
git
Git is a distributed version control system.
知识点
版本回退
1.工作区和暂存区
工作区: 电脑里的目录
版本库: .git
版本库中含有暂存区(stage)
git add 将文件添加到暂存区
git commit 将文件提交到本地分支
划重点
git checkout – (注意 这里有一个空格) 用于丢弃工作区的修改
情况1. readme.md 还没有被放到暂存区,撤销修改后和版本库一模一样
情况2. readme.md 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态
git reset HEAD 将暂存区的修改撤销,放回工作区
具体而言: git reset调整HEAD引用指向给定的提交,默认情况下还会更新索引以匹配该提交
如果我们希望工作区 暂存区都没有进行修改
先进行 git reset 再进行 git checkout
2.删除文件 git rm
在文件管理器中删除没用的文件 rm test.txt
此时工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:
$ 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: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
git rm
: 将在版本库和工作目录中同时删除文件
注意: git rm 是一条对索引进行操作的命令
git rm --cached
可以将误添加的文件恢复为未添加状态
删除索引中的文件并把它保留在工作目录中,git rm则会将文件从索引目录和工作目录中都删除
$ git status
On branch master
You are currently rebasing branch 'dev' on 'b79e97b'.
(all conflicts fixed: run "git rebase --continue")
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: readme.md
Untracked files:
(use "git add <file>..." to include in what will be committed)
opps.md
3. 移动文件 git mv
如果你需要移动或者重命名文件,可以执行
$ mv stuff newstuff
$ git rm stuff
$ git add newstuff
天呐,移动一个文件居然三部才能完成????
使用git mv
命令 ,将文件stuff 重新命名为 newstuff
git mv stuff newstuff
4.查看提交的历史记录 git log
git log newstuff
如果你刚好重新命名了一个文件,你会发现除了命名之后的记录之外之前文件的记录都丢了
Git其实是记的全部的历史记录的,但是显示要限制于在命令中指定的文件名; --follow选项会让git在日志中回溯并找到内容相关联的整个历史记录;
$ git log --follow newstuff
git log 提交范围
git log ^ XY
等同于 git log X...Y
可以认为是集合减法
用Y之前的所有提交减去X之前的所有提交且包括X
范围: (X,Y]
topic…master 表示排除从topic分支可达的提交记录