Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。
作为一个开发者,git这样的技能基本上是必备技能了。以前的时候接触了git,但没有系统的学习,只是简单的了解几个基本命令。最近几天系统的学习了这样技能。由于git教程网上很多,我就不重复造轮子了,有的轮子要造,但有的轮子造起来没有多大意义,所以只是总结一下学习的心得和git常用的命令。
git是什么?
- Git是目前世界上最先进的分布式版本控制系统,是由Linux 发明者 Linus 开发的一款新时代的版本控制系统。
- 那什么是版本控制系统呢?
- 网络定义:版本控制(Revision control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。此外,版本控制也是一种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同一代码文件案都得到同步。是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
- 简单来讲,版本控制系统就是在开发过程中对我们的代码进行管理的系统。比如:为了防止代码的丢失,我们会把本地和服务器都放置一份或者多份,这时候版本控制系统就可以使本地和远程同步; 在多人协作完成一个项目时,我们需要对一份代码进行更改和管理,这时候不影响别人工作就可以同步别人的代码;代码出现bug,对代码进行紧急的管理或者还原等等。
git的安装
git是一个版本控制系统,所以我们必须下载安装才能使用。mac系统是自带Git的,为了照顾特殊情况,这里也介绍一下。
-
Linux
首先,你可以输入git,查看一下系统有没有安装Git:
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
很多Linux会友好地告诉你Git没有安装,并且会告诉你如何安装Git。
通过一条sudo apt-get install git
就可以直接完成Git的安装,非常简单。
$ sudo apt-get install git
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra package will
be installed:
git-man liberror-perl
Suggested package:
...
...
Setting up liberror-perl (0.17-1) ...
Setting up git-man (1:1.7.9.5-1) ...
Setting up git (1:1.7.9.5-1) ...
看到类似上面的命令则说明安装成功。
通过命令git --version
查看版本:
$ git --version
git version 2.8.1.windows.1
-
Mac OS X
两种安装方式。 - 安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/
- 从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。
-
Windows
Windows系统是默认没有安装git,也没有内置git安装包的。需要手动下载安装。访问下载git安装包:https://git-for-windows.github.io/。下载完成后默认安装即可(可以修改一下安装路径)。
安装完成,在开始菜单里找到“Git”->“Git Bash”打开,出现一个类似命令行窗口的软件,就说明Git安装成功。
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
Git命令总结
- 常用操作
git init:初始化一个仓库。
git add <file>:把文件添加到仓库。(注意:是添加到仓库,需要执行提交操作才能把文件放到仓库。本操作实际上就是把文件修改添加到暂存区)
git commit : 把文件提交到仓库。
git status:查看工作区的状态。
git diff:查看修改的内容
git log:查看日志
git log --pretty=oneline:查看排版的日志
git reset --hard commit_id:回退到以前的版本。Git中用HEAD表示当前版本,上一版本为HEAD^,上上版本为HEAD^^,假如为往上100版本,则可表示为:HEAD~100。
git reflog:查看命令历史。可用来确定要回到未来的哪个版本。
git reset HAED file:把暂存区的修改撤销掉,重新放回工作区。
git checkout -- file:丢弃工作区的修改。git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
git rm file:删除一个文件。
- 远程操作
git remote add origin git@github.com:GitHubName/repo-name.git:关联一个GitHub远程库。通用结构:git remote add origin git@server-name:path/repo-name.git。
git push -u origin master:第一次向远程库推送master分支的所有内容。
git push origin master:向远程库推送最新修改。
git pull:抓取远程的新提交,保持本地和远程同步。
git pull origin master:把master分支的最新状态抓取到本地。
git remote -v:查看远程库信息。
git clone git@github.com:GitHubName/repo-name.git:将github项目clone到本地,被clone的项目将作为远程库。
git checkout -b branch-name origin/branch-name:在本地创建和远程分支对应的分支,名称最好一致。
git branch --set-upstream branch-name origin/branch-name:建立本地分支和远程分支的关联。
git push origin <tagname>:推送某个标签到远程。
git push origin --tags:一次性推送全部尚未推送到远程的本地标签。
git push origin:refs/tags/<tagname>:删除远程标签。(先删除本地的标签)
- 分支操作
git branch:查看所有分支
git branch <name>:创建分支
git checkout <neme>:切换分支
git checkout -b <name>:创建+切换分支
git merge <name>:合并某个分支都当前分支
git branch -d <name>:删除分支
git merge --no-ff -m "描述" <name>:记录分支情况的合并分支方法。
- stash操作
git stash:储藏当前工作状态
git stash list:查看储藏的工作列表。
git stash apply:恢复工作状态,但恢复后stash的内容并不删除。
git stash drop:删除最近一次stash的内容
git stash clear:清空所有的stash内容。
git stash pop:恢复工作状态并删除相关stash内容。
- 标签操作
git tag <name>:新建一个标签。
git tag -a <tagname> -m "描述":新建标签并指定标签信息。
git tag -s <tagname> -m "描述":PGP签名标签。4
git tag:查看所有标签。
git tag -d <tagname>:删除一个本地标签。
git push origin <tagname>:推送某个标签到远程。
git push origin --tags:一次性推送全部尚未推送到远程的本地标签。
git push origin :refs/tags/<tagname>:删除远程标签。(先删除本地的标签)
这只是Git常用的命令。Git极其强大,命令繁多,我只是总结了一些较为常用的命令。
GitHub
我们学习了 Git 之后,怎么才能充分使用这项技能呢?
答案是 GitHub。GitHub 是世界上最大的开源社区。我相信程序员没有不知道 GitHub 的了。学习 GitHub 同样是程序员的必备技能。当然,Git 并不只是在 GitHub 上使用。我们在工作以后团队之间的合作、代码的管理基本上都是使用 Git。那么,Git 与 GitHub 之间有什么联系呢?
Git 是一款免费、开源的分布式版本控制系统。不管是学习 GitHub,还是以后想从事编程行业,Git都可以算是必备技能了。
GitHub 主要提供基于Git的版本托管服务。也就是说现在 GitHub 上托管的所有项目代码都是基于 Git 来进行版本控制的,所以 Git 只是 GitHub 上用来管理项目的一个工具而已,GitHub 的功能远不止于此。所以建议去学习一下 GitHub。
总结
经过两天的系统学习,对Git有了初步的了解。Git的功能非常强大,在本文中只是罗列出了一些常用命令。Git绝不是两天就可以掌握的,但是可以学会Git的基本使用。常用的Git命令本文基本涵盖,并且工作中常用的命令就那么十几条,掌握好这十几条命令,就基本可以得心应手的使用Git。
Git学习资料
廖雪峰的Git教程:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
本人就是通过廖雪峰前辈的教程学习的Git。ProGit中文版:
https://git-scm.com/book/zh/v2Git简易指南:
http://rogerdudler.github.io/git-guide/index.zh.htmlGitHub学习资料
这里只附上 stormzhang 张哥的教程。别的GitHub教程我还真没有学习过,但是网上很多,查一下就ok。
GitHub系列教程:
从0开始学习 GitHub 系列之「初识 GitHub」
从0开始学习 GitHub 系列之「加入 GitHub」
从0开始学习 GitHub 系列之「Git速成」
从0开始学习 GitHub 系列之「向GitHub 提交代码」
从0开始学习 GitHub 系列之「Git 进阶」
从0开始学习 GitHub 系列之「团队合作利器 Branch」
从0开始学习 GitHub 系列之「如何发现优秀的开源项目」
从0开始学习 GitHub 系列之「GitHub 常见的几种操作」
ikook
2016.10.15