git学习(一)

git是什么

git是一种版本控制工具,它的诞生是因为linux日益增长,代码合并依靠手工已经非常吃力。
一开始linux也是用的其他的版本控制工具,但是后来提供版本控制的公司不再向linux社区
提供支持,原因是因为这些大神太有创造性了,要修改他们的代码…balabala。最后linux
的核心人物linus带领自己的小伙伴自己编写了一个版本控制工具:git.大神是怎么炼成的,
心中充满了羡慕。

git能做什么

之前也没用到版本控制工具,只是在上一个项目中接触一点。但是也没系统的学习,刚好又
要用到版本控制工具,就详细的学习一下。这么牛的东西不学习一下,怎么装x呢。
其实以前自己一个人做项目没有什么感受,但是几个人共同完成一个项目,问题就会层出
不穷。比如jar包版本不同啊,这个可以通过项目管理工具maven来解决,什么是maven,
有时间另写一遍来介绍它。还有一个比较大的问题,就是几个人的文件如何保持一致,一开
始大家都是同一个文件没什么问题。但是任务一开始就是完全不同的场景了,A开始写他的
功能,B开始写他的测试,C开始写他的页面。最后如何让大家的文件汇总起来呢,总不能一
直复制粘帖吧,这样的效率是惨不忍睹的。git或者其他的版本控制工具可以帮助我们解决
这个问题,具体怎么解决,一步一步学习吧。

git怎么用

git的安装

在ubuntu环境:

1
sudo apt-get install git

查看是否安装成功:

1
2
git --version
git version 2.7.4

git初次尝试

先创建一个文件夹作为git的工作目录,

1
mkdir demo

什么意思呢?其实这个工作目录在git中有个专门的名称,叫做仓库,英文repository.
它的意思这个目录下的所有文件都可以被git管理,每个的创建,修改,删除,git都能知道。
git记录这些事情的发生,所以它也可以追踪到在整个文件的历史,并且它可以使某个文件回
到某个历史节点。

刚刚只是创建了一个目录,还没有和git取得关联,这时候git并不能管理整个文件夹。
使用以下命令:

1
2
cd demo
git init

初始化空的 Git 仓库于 /home/xxx/workplace/demo/.git/

这时候demo目录就变成了git可以管理的仓库了。
现在仓库下创建一个文件
touch readme.txt
在该文件里写入以下内容:

1
2
3
4
Git is a version control tool.
Git is so nice.
使用:
git add readme.txt

可以将修改后的文件提交到暂存区内。

1
2
3
4
5
位于分支 master
初始提交
要提交的变更:
(使用 "git rm --cached <文件>..." 以取消暂存)
新文件: readme.txt

使用:

1
git commit  -m "readme.txt"

可以将暂存区的内容都提交到本地仓库中。

(根提交) 435eb64] readme.txt
1
2
 1 file changed, 2 insertions(+)
create mode 100644 readme.txt

git的魔法–穿越时空

在表演git的魔法之前,我们先为文件做一个时间线,这样对一个文件才能完成穿越时空
的操作。
1.在readme.txt中写入

1
this is first add someting to readme.txt

然后输入命令

1
2
git add readme.txt
git commit -m 'first add'

2.在readme.txt中写入

1
this is second add someting to readme.txt

然后输入命令

1
2
git add readme.txt
git commit -m 'second add'

使用git log 来查看历史线。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  commit fac4c988c2e9dc06074355cd137b51319ed65a7f
Author: learner66 <2952184251@qq.com>
Date: Tue May 22 19:01:07 2018 +0800

second add

commit b1c5887736de9909de4643ddd06a84b70ab50394
Author: learner66 <2952184251@qq.com>
Date: Tue May 22 19:00:17 2018 +0800

first add

commit 435eb64ac7e2b5f0d2f8153d940fc1d2ff92b89b
Author: learner66 <2952184251@qq.com>
Date: Tue May 22 18:50:46 2018 +0800

readme.txt

readme.txt

1
2
3
4
Git is a version control tool.
Git is so nice.
this is first add something to readme.
this is second add something to readme.

穿越到过去

已经知道了这条历史线,git可以任意的穿越到过去的某个时间点。
回到过去有两种方法

  1. git reset –hard HEAD^
    HEAD代表当前时间,HEAD^代表上一个时间点,HEAD~100代表是现在到过去的第一
    百个时间点。
  2. git reset –hard blc588
    blc588代表commit id。

    使用第二条命令的效果:

    1
    2
    3
    4
    5
    6
    xxx:~/workplace/demo$ sudo git reset --hard b1c588
    HEAD 现在位于 b1c5887 first add
    xxx:~/workplace/demo$ cat readme.txt
    Git is a version control tool.
    Git is so nice.
    this is first add something to readme.

回到未来

这个只能使用commit id来进行操作,如果不知道commit id,可以试用git reflog
来查看。

1
2
3
4
5
6
7
8
9
10
11
12
xxx:~/workplace/demo$ git reflog
b1c5887 HEAD@{0}: reset: moving to b1c588
fac4c98 HEAD@{1}: commit: second add
b1c5887 HEAD@{2}: commit: first add
435eb64 HEAD@{3}: commit (initial): readme.txt
xxx:~/workplace/demo$ sudo git reset --hard fac4c98
HEAD 现在位于 fac4c98 second add
xxx:~/workplace/demo$ cat readme.txt
Git is a version control tool.
Git is so nice.
this is first add something to readme.
this is second add something to readme.

本文标题:git学习(一)

文章作者:learner66

发布时间:2018年05月22日 - 16:48:18

最后更新:2018年06月01日 - 15:40:47

原始链接:https://learner66.github.io/2018/05/22/git-learning-1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ 本文结束,感谢您的阅读------