Git命令行基本操作

  1. 安装Git

    网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseGit,linux建议使用Git GUI或者GITK。
  2. 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。

  1. 创建Git仓库

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

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

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

  1. 提交更新

    在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 ..." 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 --staged或git 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。

  1. 提交历史查看

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

git log --stat # 仅显示摘要选项

git log --pretty=oneline # 定制记录格式

git log --graph # 图像化分支和版本更新

  1. 撤销更新
  2. 远程仓库

    可以使用git remote查看当前的远程库。

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

添加远程仓库

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

从远程仓库抓取数据

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

也可以使用git pull

推送数据到远程仓库

git push remote_name

默认使用origin和master。

查看远程仓库信息

git remote show origin

远程仓库的删除和重命名

git remote rename old_name

git remote rm [remote_name]

  1. 打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

  1. 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删除分支。

如果合并时存在冲突,需要手工修改。

git学习 c的某位老哥的,(侵删)的更多相关文章

  1. CPU:网卡老哥,你到底怎么工作的?

    阿Q造访 我是一个网卡,居住在一个机箱内的主板上,负责整台计算机的网络通信,要是没有我,这里就成了一个信息孤岛了,那也太无聊了- 上个周末,服务器断电维护了,这是我难得的休息时间,我准备打个盹儿眯一会 ...

  2. 【学习总结】Git学习-参考廖雪峰老师教程-总

    公元2018-10-21 实验室台式机 win7 64位 参考教程: 廖雪峰Git教程 其他资料:Git-book 北大一只总结的笔记,最终整理的时候可以参考:Git笔记 评论区看到的另一个人,总结在 ...

  3. 【学习总结】Git学习-参考廖雪峰老师教程四-时光机穿梭

    学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...

  4. Git学习系列之Windows上安装Git详细步骤(图文详解)

    前言 最初,Git是用于Linux下的内核代码管理.因为其非常好用,目前,已经被成功移植到Mac和Windows操作系统下. 鉴于大部分使用者使用的是Windows操作系统,故,这里详细讲解Windo ...

  5. Git学习笔记---协作的一般流程

    一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...

  6. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

  7. Git 学习(四)操作修改和版本穿梭

    Git 学习(四)操作修改和版本穿梭 之前的章节,已介绍了本地Git库创建.暂存区增.删.改,以及提交版本库:可回顾下命令操作: git add 和 git commit. 光有之前章节的操作,Git ...

  8. git学习------> Gitlab如何进行备份恢复与迁移?

    前段时间,在某台CenterOS服务器上搭建了Gitlab环境,并且大家陆陆续续的都把代码从svn迁移到了gitlab,但是之前的CenterOS服务器并不是搭建在公司的机房环境,而是搭建在办公室的某 ...

  9. 关于Git学习推荐

    Git学习除了推荐官方网站:https://git-scm.com/之外, 我个人比较推荐初学者或者被动使用者可以学习参考廖雪峰的这个教程:https://www.liaoxuefeng.com/wi ...

随机推荐

  1. c# 叫号小程序

    写个叫号的小demo 长相如下 代码如下 using System; using System.Collections.Generic; using System.ComponentModel; us ...

  2. ring3层一种占用文件的方法(DuplicateHandle以后,把占用文件的句柄丢给系统进程,导致被占用)

    前段时间,一个测试工程师问我关于怎样长时间的占用一个文件,而使别的程序无法再访问这个文件,想起以前很多病毒木马经常劫持hosts文件不放,除非你找到占用文件的程序,并强行结束掉,否则怎么也访问不了ho ...

  3. iOS密码框实现(二)取消确定按钮

    由于将确定按钮去掉了,所以需要重新修改下代码,当输入第四个数字时,自动进入房间.   iOS 密码框效果图:     实现方式:   首先声明一个block初始化方法,因为这只是个框框,并不需要处理网 ...

  4. C++标准库(体系结构与内核分析)(侯捷第二讲)

    一.OOP和GP的区别(video7) OOP:面向对象编程(Object-Oriented programming) GP:泛化编程(Generic programming) 对于OOP来说,我们要 ...

  5. Azkaban学习之路(三)—— Azkaban Flow 1.0 的使用

    一.简介 Azkaban主要通过界面上传配置文件来进行任务的调度.它有两个重要的概念: Job: 你需要执行的调度任务: Flow:一个获取多个Job及它们之间的依赖关系所组成的图表叫做Flow. 目 ...

  6. 【MYSQL】mysql大数据量分页性能优化

    转载地址: http://www.cnblogs.com/lpfuture/p/5772055.html https://www.cnblogs.com/shiwenhu/p/5757250.html ...

  7. 4.shell编程-文本处理三剑客之sed

    4.1.sed的选项 sed,流编辑器.对标准输出或文件进行逐行处理. 语法格式 第一种:stdout | sed [option] "pattern command" 第二种:s ...

  8. white box白盒测试

    逻辑覆盖法:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,组合覆盖,路径覆盖 基本路径测试法:Control Flow Graphs, CFG.带箭头的边 条件覆盖:使每个判定中每个条件的可能值至少满 ...

  9. Codeforces Gym101518E:The Pharaoh's Curse(BFS + 离散化)

    题目链接 题意 给出一个n*m的地图,人的当前位置是'S',还有不超过两个的箱子'X',任意多个按钮'B',不超过100个可以走的点'.',还有一个在边界的出口'E',当且仅当所有的按钮都被箱子盖住的 ...

  10. HDU 6181:Two Paths(A* + SPFA)

    题目链接 题意 给出n个点m条边的无向图,求次短路. 思路 和 POJ 2449 类似,只不过大小要开成long long. #include <bits/stdc++.h> using ...