git --- 简单使用

首先放个图,这就是大名鼎鼎的git:

git是现在世界上最先进的分布式版本控制系统......吹捧它的话咱就不说了。

目录

安装Git

在Linux上安装Git

在Mac OS X上安装Git

在Windows上安装Git

创建版本库

初始化git版本库

git add 和 git commit

git status

git log

git reset --hard

git reflog

git checkout --

git rm


git主要就是用来版本控制,也使项目的分工合作更简单。

安装Git

在Linux上安装Git

打开terminal,输入git,看看系统有没有安装Git:

$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git

看得懂上面英语的话,就会知道你的系统没有安装git,看不懂就百度一下哈。

如果你用Debian或Ubuntu,使用 sudo apt-get install git 就可以直接完成Git的安装。

还可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./configmakesudo make install这几个命令安装就好了。

在Mac OS X上安装Git

Mac有两种安装Git的方法:

一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/

第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

Xcode是Apple官方IDE,功能非常强大,是开发Mac和iOS App的必选装备,而且是免费的!

在Windows上安装Git

在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。

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

也可以随便进入一个文件夹,鼠标右击,在出现的菜单中,如果有类似Git Bash的命令,也说明安装成功!

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

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

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

创建版本库

       版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

初始化git版本库

1)创建一个空目录  mkdir learngit

2)进入新创建的目录  cd learngit/

3)初始化一个Git版本库  git init   会告诉你初始化成功一个空的repository

4)在目录learngit可以看到.git文件,没事就不要动这个文件,不然会破坏版本库。

     如果没有.git文件,那它就是隐藏了,使用  ls -ah 命令查看

wfcdeiMac:PycharmProjects wfc$ mkdir learngit

wfcdeiMac:PycharmProjects wfc$ cd learngit/

wfcdeiMac:learngit wfc$ pwd

/Users/wfc/PycharmProjects/learngit

wfcdeiMac:learngit wfc$ git init

Initialized empty Git repository in /Users/wfc/PycharmProjects/learngit/.git/

wfcdeiMac:learngit wfc$ ls -ah

. .. .DS_Store .git

这个时候就可以在 learngit 目录下添加编辑你的文件了。

一定要放到learngit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。

git add 和 git commit

例如新建一个 file1.txt 的文件,在文件中添加 This is the first git test.

然后在命令窗口输入 git add file1.txt   然后你就会发现没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功

再输入 git commit -m 'This is the first git test'  然后就会看到输出一大堆,读一下就会发现莫名的成功... 

[master (root-commit) 65573d6]  This is the first git test

....

 1 file changed, 1 insertion(+)

 create mode 100644 file1.txt

解释一下上面的两句代码:

git add <file> 把文件添加到仓库,可以一次添加一个文件(可以反复添加),也可以一次添加多个 git add file1,file2,...

还可以一次性添加所有文件 git add .  注意最后的 .

git commit -m <message>  把文件提交到仓库,-m 后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

添加文件到仓库只需要上面两步。

git status

接着我们修改file1.txt,添加 we modified this file. ,记得保存

然后再命令窗口输入 git status,会看到输出一大堆...

wfcdeiMac:learngit wfc$ 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:   file1.txt

...

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

git status 命令可以让我们掌握仓库当前的状态,上面的输出告诉我们,file1.txt被修改过了,但还没有准备提交的修改。

从输出我们只看到有文件被修改了,但是修改的内容并不能看出来,试一下使用 git diff  file1.txt

wfcdeiMac:learngit wfc$ git diff  file1.txt

diff --git a/file1.txt b/file1.txt

index 76b9c5b..eff73e2 100644

--- a/file1.txt

+++ b/file1.txt

@@ -1 +1,2 @@

 This is the first git test.

+we modified this file.

可以看到文件修改的内容也可以看到了。

使用git add 和 git commit提交文件。再使用 git status 查看一下状态

wfcdeiMac:learngit wfc$ git status

On branch master

...

nothing added to commit but untracked files present (use "git add" to track)

可以看到 nothing added to commit 表示没有要提交的文件了。

git log

       在实际工作中,我们不可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。在Git中,git log命令可以告诉我们历史记录,显示从最近到最远的提交日志:

wfcdeiMac:learngit wfc$ git log

commit c1ffafbf3ccff6d15d7ee0258b9fbe1c71129759

Author: wfc <wfc@wfcdeiMac.local>

Date:   Tue Jul 17 20:29:04 2018 +0800

    Modified file

commit 65573d6ef3e3e76f5608ce5abb9e90afd4cf0ea3

Author: wfc <wfc@wfcdeiMac.local>

Date:   Tue Jul 17 20:01:27 2018 +0800

     This is the first git test

可以看到上面输出了很多信息...

如果嫌信息太长,就在命令后面添加 --pretty=oneline,会输出简要的信息

wfcdeiMac:learngit wfc$ git log --pretty=oneline

c1ffafbf3ccff6d15d7ee0258b9fbe1c71129759 Modified file

65573d6ef3e3e76f5608ce5abb9e90afd4cf0ea3  This is the first git test

从输出信息中我们会看到一个长串的东东 c1ffafbf3ccff6d15d7ee0258b9fbe1c71129759 这是 commit id(版本号),这个是唯一的。

这个长串有什么用呢?

可以用于版本回退。

git reset --hard

例如我们不想修改文件了,要回退到第一次提交的版本,使用 git reset --hard HEAD^

wfcdeiMac:learngit wfc$ git reset --hard HEAD^

HEAD is now at 65573d6  This is the first git test

git log 看一下:

wfcdeiMac:learngit wfc$ git log

commit 65573d6ef3e3e76f5608ce5abb9e90afd4cf0ea3

Author: wfc <wfc@wfcdeiMac.local>

Date:   Tue Jul 17 20:01:27 2018 +0800

     This is the first git test

修改后的那个版本没啦...

git reset --hard HEAD^ 是回退到上一个版本,回退到上上一个版本就用 git reset --hard HEAD^^, ....  

要回退到前100个版本那还不得累死啊,git当然不会这么智障。这时我们可以找到要回退到的commit id,

然后输入 git reset --hard <commit id> 就可以了。

回退之后,后悔了怎么办,那就再回退回去。。。前提是你能找到版本号。

wfcdeiMac:learngit wfc$ git reset --hard c1ffaf    版本号不必输入完整

HEAD is now at c1ffafb Modified file

git log 一下,会发现我胡汉三又回来了。。。

如果忘记版本号怎么办???那就试试 git reflog

git reflog

git reflog用来记录你的每一次命令

wfcdeiMac:learngit wfc$ git reflog

c1ffafb HEAD@{0}: reset: moving to c1ffaf

65573d6 HEAD@{1}: reset: moving to HEAD^

c1ffafb HEAD@{2}: commit: Modified file

65573d6 HEAD@{3}: commit (initial):  This is the first git test

git checkout -- <file>

场景一:

当你在修改 file1.txt 之后,还并未使用 git add 添加到暂存区之前,发现修改错了,想要撤销,

就可以使用 git checkout -- <file>命令,该命令意思就是把 file1.txt 文件在工作区的修改全部撤销

例如下面的例子,你在文件中添加了SB,保存之后,后悔了,想不留痕迹的撤销掉,就使用 这个命令吧...

wfcdeiMac:learngit wfc$ cat file1.txt 

This is the first git test.

we modified this file.

Modified...

SB

使用 git status 看一下文件状态,已经修改,还没有添加到暂存区 https://blog.csdn.net/qq_42413820/article/details/81088834

wfcdeiMac:learngit wfc$ 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:   file1.txt

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

使用 git checkout -- file1.txt  撤销修改

wfcdeiMac:learngit wfc$ git checkout -- file1.txt 

看一下执行命令后的文件,发现已经撤销了...

wfcdeiMac:learngit wfc$ git status

On branch master

nothing to commit, working tree clean

wfcdeiMac:learngit wfc$ cat file1.txt 

This is the first git test.

we modified this file.

Modified...

上面的命令不要忘记了 -- 这两个横线,不然会变成切换分支的命令 https://blog.csdn.net/qq_42413820/article/details/81094127

场景二:

如果你是 git add 之后, git commit 之前发现这个问题没想要撤销怎么办呢???办法总会有的...

1) 首先使用 git reset HEAD <file> 命令把暂存区的修改撤销掉(unstage),重新放回工作区

wfcdeiMac:learngit wfc$ git reset HEAD file1.txt 

Unstaged changes after reset:

M file1.txt

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

2)使用 git status 发现暂存区是干净的,只有工作区还有未添加的 file1.txt 文件

wfcdeiMac:learngit wfc$ 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:   file1.txt

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

现在知道该怎么办了吧...

使用 git checkout -- <file> 撤销工作区的修改.... ok

场景三:

修改之后,还是用 git commit 命令提交到了版本库,就使用上面提到的版本回退吧...

git rm

       当你把工作区的某个文件删除之后(假设已经提交到版本库),这个时候工作区是没有了该文件,但是版本库中还存在其最近提交的版本,如果又想把文件从版本库中删除,就使用 git rm <file> 然后再 git commit 一次,就从版本库中删除该文件了。

      另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本: git checkout -- <file>

   git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值