Git简单应用Git使用

Git 的基本操作

2016-12-06  本文已影响160人  sunnyaxin

Git 是一个以命令行为主的免费开源的分布式版本控制系统,用于敏捷高效的处理任何或大或小的项目。是Linus Torvalds 为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。常见的CVS,SVN等都是集中式的版本控制系统。


git

版本控制系统:集中式vs分布式

集中式版本控制系统,版本库是集中存放在中央服务器的,修改项目时需要先从中央服务器取得最新版本,然后修改,再将修改后的版本提交到中央服务器上。


集中式版本控制系统

集中式版本控制系统有很多好处,比如管理员可以充分了解每个开发者的进度,但也有以下问题:第一,需要联网工作,在网速不好的环境下效率非常地下;第二,若中央服务器发生故障,整个项目有可能会丢失所有历史更新记录。

而分布式版本控制系统则不同,没有中央服务器,每个人都是一个完整的版本库,因此工作时不需要联网,只要在需要时将修改推送即可,因此安全系数也高很多,某一人的电脑发生故障并不会影响整个项目,其他人电脑中也有。


分布式版本控制系统

Linux上安装Git

  1. 在终端输入git,看系统是否安装Git
  2. 若终端显示为

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

则没有安装,通过指令sudo apt-get install git 完成Git的安装

常用Git操作

1、配置Git 基本信息

git config --global user.name "<username>"
git config --global user.email "<email>"

配置全局Git的用户名和邮箱设置,之后每一次Git的提交都会使用这些信息,也可通过以下命令查询当前Git的配置

git config --list
配置git基本信息

2、添加Git忽略文件

有些在Git工作目录中的文件比较重要或个人,不能提交他们,可以在Git工作区的根目录下创建一个特殊的.gitignore文件,然后将要忽略的文件名填进去,Git就会自动忽略这些文件。.gitignore 文件一般不存在,需要仓库根目录下手动创建,并且可以对 .gitignore 做版本管理。

忽略文件的原则:
(1)忽略操作系统自动生成的文件,比如缩略图等;
(2)忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
(3)忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

Git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。下面列举几个常用的配置语法。
(1)以斜杠“/”开头表示目录;
(2)以星号“*”通配多个字符;
(3)以问号“?”通配单个字符
(4)以方括号“[]”包含单个字符的匹配列表;
(5)以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

3、创建版本库/仓库

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

第一步,创建一个空目录

mkdir <repository_name>
cd <repository_name>

第二步,通过git init命令把这个目录变成Git可以管理的仓库

成功创建空仓库

此时,空仓库就创建好了,列表显示当前空文件夹下有一个隐藏目录 .git,这个目录是Git用来跟踪管理版本库的,非常重要。

4、查看仓库状态

git status

查询当前版本库的状态,若在本地仓库有有任何文件内容的改变,Git会检测到该文件,并显示

5、将文件添加到版本库

本地仓库由git维护的三棵“树“组成。第一个是工作目录(Working Dir),它持有实际文件;第二个是暂存区(Index),像个缓存区域,临时保存文件的改动;第三个是Head区,指向最后一次提交的结果。


Git工作流

前提:添加文件到版本库,一定要将文件放在版本库目录下(或子目录下)。

第一步:用命令git add添加到暂存区

git add <filename>

第二步:用命令git commit实际提交改动

git commit -m "<information>"

-m后面输入的是本次提交的说明文档,可以方便自己和别人阅读,也可以省略,但不建议。同时,可以多次add不同文件,commit可以一次提交多个文件,比如:

git add file1.txt
git add file2.txt   file3.txt
git commit -m "add 3 files"
Git添加文件到版本库

注:现在的改动已经提交到了HEAD,但还没有到远端仓库。

6、查看修改内容

git diff <file_name>

git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到文件的修改内容。

查看修改内容

7、版本回退

git reset --head <commit_id>

HEAD 指向的版本就是当前版本,Git允许我们在版本的历史之间回退;回退前,用git log可以查看提交历史,以便确定回退到哪个版本;要重返现在版本,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本

8、撤销修改

  1. 文件在工作区,丢弃修改
git checkout -- <file_name>
  1. 文件在暂存区,丢弃修改
git reset HEAD <file_name>
git checkout -- <file_name>

9、删除和重置文件

第一步:删除本地文件

rm <file_name>

第二步:分两种情况

  1. 确实删除,从版本库中也删除
git rm <file_name>
git commit -m "<remove_info>"
  1. 删错了,从版本库恢复到最新版本
git checkout -- <file_name>

10、分支的创建删除合并

分支是用来将特性开发绝原来来的,我们创建仓库时,master是默认分支,可以在创建其他分支,在该分支上进行开发,完成后将它们合并到主分支上,并根据需要选择是否删除该子分支。


Git分支

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git branch -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>

Git分支例子

11、Rebase

git checkout <name1>
git rebase <name2>

rebase 用于把一个分支的修改合并到当前分支

注:rebase和merge都是用于合并分支,具体区别见这里,同时要知道,使用git pull时默认是merge, 加 --rebase参数使其使用rebase方式。

12、标签

git tag <tag_id> <commit_id>

为软件发布创建标签,这个概念早已存在,在SVN中也有,可以通过git log命令获取提交ID,可以使用少一点的提交ID前几位,只要它的指向具有唯一性。

命令 意义
git tag 查看所有标签
git tag <name> 新建一个标签,默认为HEAD,也可以指定一个commit id
git push origin <tagname> 推送一个本地标签
git push origin --tags 推送全部未推送过的本地标签
git tag -d <tagname> 删除一个本地标签
git push origin :refs/tags/<tagname> 删除一个远程标签

Git中关于远程仓库,工作区和暂存区等内容,会在后续博客进行介绍。

参考资料

git入门文档
视频教程《版本控制入门 – 搬进 Github》
Git学习资源指南
Git简明指南
免费的git书箱 progit2
git常用命令手册
廖雪峰的git在线教程
在线尝试git ( 中文翻译在这里)
Git学习资源汇总
git merge和git rebase小结

上一篇下一篇

猜你喜欢

热点阅读