git简单使用(一)

细节详见网址:https://www.liaoxuefeng.com/wiki/896043488029600/896067074338496css

一、在Linux上安装Git python

尝试有没有git $git git

安装 ./configmakesudo make install 依次几个命令sql

建立版本库

版本库又名仓库,英文名repository ruby

建立一个空目录:app

$ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit
第二步,经过git init命令把这个目录变成Git能够管理的仓库:
git init
若是你没有看到目录,那是由于这个目录默认是隐藏的,用命令就能够看见

第一步,用命令告诉Git,把文件添加到仓库:$ git init Initialized empty Git repository in /Users/michael/learngit/.git/
.gitls -ahgit add
$ git add readme.txt
第二步,用命令git commit告诉Git,把文件提交到仓库:
git commit


简单解释一下命令,后面输入的是本次提交的说明,能够输入任意内容,固然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
命令可让咱们时刻掌握仓库当前的状态,上面的命令输出告诉咱们,被修改过了,但尚未准备提交的修改。$ git commit -m "wrote a readme file" [master (root-commit) eaadf4e] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txtgit commit-mgit statusreadme.txt
$ git status

虽然Git告诉咱们被修改了,但若是能看看具体修改了什么内容,天然是很好的。好比你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的,因此,须要用这个命令看看:readme.txtreadme.txtgit diff
$ git diff readme.txt 

版本控制系统确定有某个命令能够告诉咱们历史记录,在Git中,咱们用git log命令查看:git log

命令显示从最近到最远的提交日志
若是嫌输出信息太多,看得眼花缭乱的,能够试试加上参数:$ git loggit log--pretty=oneline


版本回退:
首先,Git必须知道当前版本是哪一个版本,在Git中,用表示当前版本,也就是最新的提交(注意个人提交ID和你的确定不同),上一个版本就是,上上一个版本就是,
固然往上100个版本写100个比较容易数不过来,因此写成。
如今,咱们要把当前版本回退到上一个版本,就可使用命令:$ git log --pretty=onelineHEAD1094adb...HEAD^HEAD^^^HEAD~100append GPLadd distributedgit reset

查看是否是回到那个版本:$ git reset --hard HEAD^
$ cat readme.txt
还能够继续回退到上一个版本wrote a readme file,不过且慢,然咱们用git log再看看如今版本库的状态wrote a readme filegit log
$ git log
最新的那个版本已经看不到了!比如你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?
办法其实仍是有的,只要上面的命令行窗口尚未被关掉,你就能够顺着往上找啊找啊,找到那个的是,因而就能够指定回到将来的某个版本:append GPLappend GPLcommit id1094adb...
$ git reset --hard 1094a
当你用回退到版本时,再想恢复到,就必须找到的commit id。Git提供了一个命令用来记录你的每一次命令:$ git reset --hard HEAD^add distributedappend GPLappend GPLgit reflog
$ git reflog

工做区(Working Directory)

版本库(Repository)

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

前面讲了咱们把文件往Git版本库里添加的时候,是分两步执行的:命令行

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;版本控制

第二步是用git commit提交更改,实际上就是把暂存区的全部内容提交到当前分支。指针

由于咱们建立Git版本库时,Git自动为咱们建立了惟一一个master分支,因此,如今,git commit就是往master分支上提交更改。

撤销修改

Git会告诉你,git checkout -- file能够丢弃工做区的修改

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

一种是readme.txt自修改后尚未被放到暂存区,如今,撤销修改就回到和版本库如出一辙的状态;

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

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

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另外一个分支”的命令,咱们在后面的分支管理中会再次遇到git checkout命令。

如今假定是凌晨3点,你不但写了一些胡话,还git add到暂存区了:

$ git add readme.txt

庆幸的是,在commit以前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,尚未提交:


Git一样告诉咱们,用命令能够把暂存区的修改撤销掉(unstage),从新放回工做区:$ git statusgit reset HEAD <file>

命令既能够回退版本,也能够把暂存区的修改回退到工做区。当咱们用时,表示最新的版本。

还记得如何丢弃工做区的修改吗?$ git reset HEAD readme.txtgit resetHEAD
$ git checkout -- readme.txt 看看状态 $ git status
如今,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?能够回退到上一个版本。不过,这是有条件的,就是你尚未把本身的本地版本库推送到远程。

删除文件

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

$ rm test.txt

这个时候,Git知道你删除了文件,所以,工做区和版本库就不一致了,git status命令会马上告诉你哪些文件被删除了:


如今你有两个选择,一是确实要从版本库中删除该文件,那就用命令删掉,而且:$ git statusgit rmgit commit
$ git rm test.txt


$ git commit -m "remove test.txt"

另外一种状况是删错了,由于版本库里还有呢,因此能够很轻松地把误删的文件恢复到最新版本:

$ git checkout -- test.txt 

git checkout实际上是用版本库里的版本替换工做区的版本,不管工做区是修改仍是删除,均可以“一键还原”。

相关文章
相关标签/搜索