git工作方式简介
强烈推荐廖雪峰老师的git教程。
- What is git
- How it works
- Sth. intresting
一 What is git
git是一个分布式版本管理工具。
版本管理
- 记忆每次提交的修改。
- 在不同的修改之间自由切换。
- 解决协作冲突。
为了方便描述,本文把每次提交的修改称为一个commit版本。
分布式
git有本地代码仓库,因此可以本地记录代码修改情况,不至于因远程仓库有问题而无法管理代码的修改情况。
github 想必大家是先了解到有个github,才想去了解的git。github可以设置为git的远程仓库,这样你就可以把自己的修改放到远程仓库,供大家访问。同时,你也可以访问别人对代码的修改。当然你也可以配置自己的远程仓库。
二 How it works
从做中学。
首先下载一个git并安装。
2.1 注册用户
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
当然只需要注册一次。git当然也不能随便让人提交代码到你的仓库,那多危险。
2.2 git init 初始化本地仓库
$ mkdir gitIntro
$ cd gitIntro
$ git init
此时在gitIntro目录下有一个.git文件,说明该目录是gitIntro项目的本地代码仓库。.git目录中的东西是本地仓库的管理文件,请勿擅自修改,否则会导致版本无法正常使用。
2.3 有了本地仓库,那么我们在仓库当中放入一个readme文件
$ vi readme
写入git introduce,简介一下我们这个项目的作用。
2.4 git add [file] 添加文件到临时存储区
虽然我们在上一步编辑了readme并放到了gitIntro目录。但是由git status可以看出,git发现readme是untracked files,即不受版本管理的文件。因为此时.git中还没有记录这个文件。就像你把一个东西放到了仓库,而仓库没有记录,那你再去找的时候,仓库管理员会不知道一样。那么我们就需要用到git add和git commit。
$ git add readme
此时可以看到Changes to be committd,括号当中还让用git rm –cached去清空缓存。由此可以知道git add操作是把readme加入到了缓存当中,并没有这正提交到仓库。类似于现在有很东西要放入仓库,你应该会拿个小本本去快速的记录这些内容,随后一起放入仓库。
如果你真的不想readme提交本地仓库管理,那么可以执行git rm –cached readme清空缓存,如果想把当前目录下所有git add的内容都清空,则采用git rm –cached -r .。
2.5 git commit提交
$ git commit -m "提交readme"
提交到仓库之后,git status可以看到working directory clean,即工作空间已经完全在git的掌控之下了。
小结一下:至此我们可以发现,把内容放入仓库分三步走:第一步,把内容放入仓库目录下面;第二步,git add file把文件放入临时存储区,当然你可以连续执行add,添加不同的文件;第三步,git commit -m’message’,将内容修改提交到仓库。
2.6 git reset 回退
$ cat readme
> git introduce
$ echo "abcd" >> readme
$ cat readme
> git introduce
> abcd
$ git add readme
$ git commit -m"第二次提交readme"
$ git log
> commit b62d013eb596f87a1494c4bbd8e330462f69ffe0
>
> 第二次提交readme
>
> commit 73338e1d4e5dbe35f2969e27fd1d7d37054f48ba
>
> 提交readme
>
$ git reset --hard 73338eld4
$ cat readme
> git introduce
git log显示出我们提交了两次,并且每一次都有版本号。我们找到提交readme的版本号,采用git reset –hard [版本号]即可完成回退。
回退了又后悔了呢?请用的时候自行百度,也是一条命令搞定哦。
三 Sth. intrestring
此时大家可能也发现了,这只是我自己开发能用,跟别人协作怎么办?通常情况下我们会配置一个公共主机当做公共代码仓库,这样来共享和同步大家对代码的修改。本地代码修改完之后,先提交到本地仓库,再提交到远程仓库。github就具有公共代码仓库的能力。关于github如何配置以及如何和git配合进行pull和push等内容,小伙伴们可以自己踩踩坑。