本文从以下九个方面,介绍Git命令的基本操作:

一. Git安装

二. Git基本配置

三. 创建Git仓库

四. 获得Git仓库

五. 提交更新

六. 提交历史查看

七. 远程仓库

八. 打Tags

九. Git分支

一. Git安装

网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseGit,linux建议使用Git GUI或者GITK。

二. Git基本配置

git config可以配置git的参数,可以使用git config --list查看已经配置的git参数。其中有三个级别的保存位置,--system--global--local,分别表示所有用户(本系统)、当前用户(全局)、本地配置(当前目录),默认使用--local

配置用户名及邮箱

在使用Git提交前,必须配置用户名和邮箱,这些信息会永久保存到历史记录中。

git config --global user.name "Tocy"
git config --global user.email zyvj@qq.com

其他配置

如果在windows下建议还是配置下默认文本编辑器core.editor和差异分析工具merge.tool

三. 创建Git仓库

可以直接调用git init初始化当前目录,即创建Git仓库。

四. 获得Git仓库

如果需要克隆远程仓库,可以使用git clone,比如:

git clone https://git.oschina.net/Tocy/SampleCode.git

五. 提交更新

在windows下的Git GUI中,提交很简单,右键-TortoiseGit-Commit。那么命令行下需要怎么处理?
Git中每个文件都有三种状态:committed、staged、modified。它们之间关系如下:

commit <-- stage <-- modify
commit --> --- --modify

我们获取的Git仓库中的所有文件都是committed状态,如果你在本地修改了文件a,a的状态就变成modified的;如果使用git add a,a的状态变成staged;如果使用git commit,a的状态就变成commited。这种状态变化也说明复制代码是很方便的,但是提交更新请慎重。
当然还有一种文件状态,未跟踪状态(unversioned/untracked),通过使用git add可以把未跟踪状态变更为staged;通过git rm可以将staged或者committed状态变为未跟踪状态。

git status

通常提交前先检查下修改了什么内容,当前Git目录下各文件的状态。

$ git status
On branch master Initial commit Untracked files:
(use "git add <file>..." to include in what will be committed) Readme.md nothing added to commit but untracked files present (use "git add" to track)

git add

git add可以添加文件或者目录,也可以使用通配符。比如:

git add Readme.md    # add file only
git add *.cpp # add all cpp files
git add /home/code/ # add all files in /home/code

git diff

git diff可以查看当前目录的所有修改。
提交之前,还是单独确认下处于staged状态的文件有哪些,并保证修改正确。在实际应用中,可能还需要使用git diff导出PATCH做代码走读。
可以使用git diff --stagedgit diff --cached查看staged与上次提交快照之间的区别。

git commit

提交前需慎重。直接调用git commit会弹出编辑器,输入提交日志(如果是多行日志,建议使用)。
针对单行日志提交的情况,可以使用如下命令:git commit -m "add readme"
还有一种快捷的提交方式,直接跳过stage缓存区,直接提交当前目录下的所有修改git commit -a(使用这个命令前建议确认下当前目录的修改是否正确、必须)。

git rm

git rm会把文件从当前目录删除(不会保存删除的文件)。如果需要从Git仓库中删除,但保留在当前工作目录中,亦即从跟踪清单中删除,可以使用git rm --cached readme.md

六. 提交历史查看

可以使用git log查看当前工程的所有提交的日志。

git log --stat      # 仅显示摘要选项
git log --pretty=oneline # 定制记录格式
git log --graph # 图像化分支和版本更新

七. 远程仓库

可以使用git remote查看当前的远程库。
git remote -v可以显示对应的克隆地址。(对于多个远程仓库很有用)

添加远程仓库

git remote add [short_name] [url]可以添加新的远程仓库。

从远程仓库抓取数据

git fetch [remote-name]可以从远程仓库抓取数据到本地。
也可以使用git pull

推送数据到远程仓库

git push [remote_name] [branch_name]
默认使用origin和master。

查看远程仓库信息

git remote show origin

远程仓库的删除和重命名

git remote rename [old_name] [new_name]
git remote rm [remote_name]

八. 打Tags

可使用git tag显示当前库中的标签。

添加标签(含附注)

git tag -a v0.1 -m "my version 0.1"
使用如下命令查看Tag日志信息(指定对应标签的名字)
git show v0.1
也可使用SHA-1的提交表示创建tag:
git tag -a v0.2 [SHA-1] -m "my version 0.2"

分享标签

默认的,git push不会推送标签信息到远程仓库,需要通过命令显式推送。
git push origin v0.1
如果需要推送所有标签,使用
git push origin --tags

九. Git分支

git分支是轻量级的,速度很快,仅记录索引信息。

显示所有分支

使用git branch可显示当前所有分支。
可以使用--merged和--no-merged查看已经合并、未合并的分支。

创建及切换分支

可以使用下面命令直接切换并创建分支
git checkout -b testing
等价于

$ git branch testing    # 创建testing 分支
$ git checkout testing # 切换到testing分支

注意切换分支时请保持工作目录没有未提交的修改。Git鼓励使用分支,处理完问题之后合并分支即可。

分支合并

将hotfix分支合并到master(主分支)上,需要通过下面命令:

$ git checkout master
$ git merge hotfix

合并之后可以使用git branch -d hotfix删除分支。
如果合并时存在冲突,需要手工修改。

参考文章:

https://www.liaoxuefeng.com/

https://www.cnblogs.com/tocy/p/git-command-line-manual.html

最新文章

  1. 快速开发框架CRL3.0发布,附带最新的项目示例CRLShoppingDemo
  2. 优化MySchool数据库总结
  3. 响应式布局设置--@media only screen and
  4. docker 中运行 sshd 服务
  5. GoldenGate配置(一)之单向复制配置
  6. JAVA并发实现五(生产者和消费者模式Condition方式实现)
  7. GridFS
  8. java 抽象类与接口的区别 整理
  9. JAVA 保留两位小数的四种方法
  10. 页面加速Chromium 预压 Prerendering
  11. vim的vimrc设置
  12. 前端面试题(4)iframe有哪些优点?iframe缺点是什么?
  13. bzoj3675[Apio2014]序列分割 斜率优化dp
  14. 983. Minimum Cost For Tickets
  15. IPFS扫盲
  16. 剑指offer(8)跳台阶
  17. Java基础之基础语法
  18. 【转】Maya Mel – Search String in String
  19. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T1(找规律)
  20. 利用backtrace和ucontex定位segment错误【转】

热门文章

  1. 献给初学者:小白该如何学习Linux操作系统
  2. Hive(9)-自定义函数
  3. Python学习:4.运算符以及数据类型解析
  4. 企业网站被黑 dedecms漏洞修复办法
  5. vim 版本更新
  6. MongoDB入门---文档查询之$type操作符&amp;limit方法&amp;skip方法&amp;简单排序(sort)操作
  7. 成都Uber优步司机奖励政策(2月27日)
  8. java.lang.RuntimeException: HRegionServer Aborted
  9. Spring Boot中使用缓存
  10. Drupal 判断匿名用户必须先登录的解决方法