如果用过mercury(HG),那么理解Git的运作方式就轻松多了。两者是相同的分布式版本管理工具,只是某些功能有着细微的差别 - Git的管理粒度更加细腻,因此操作上也比HG复杂一点。例如,修改文件并提交,hg会自动跟踪到,并不需要你去手动add,但是在git里,无论新增还是修改,都必须add相应的文件才可以commit.这样概念上可以保持一致性(计算机的美学)。

安装和创建版本库:

sudo apt-get install git

创建全新仓库:

mkdir new_repo

cd new_repo

git init

此时即可创建一个全新的仓库。命令执行后,可以看到.git的隐藏文件夹,这是跟踪版本仓库的数据库。

远程克隆仓库:

git clone git@github.com:homer_simpson/repo_one.git

执行后会在本地创建同名文件夹repo_one

基本操作:

git reflog   // git历史操作

git add <filename>   // 新增filename 到版本库,或者修改了filename,提交到暂存区

git rm <filename>    // 从版本库移除filename

git commit -m "comment"  // 提交暂存区的内容到changeset,如果修改没有add/rm到暂存区,则提交不了修改

git log  // 查看历史提交,完整信息

git log --pretty=oneline  // 查看历史提交,单行显示

git log --graph   // 分支图形方式显示LOG

git log --abbrev-commit // 缩写方式显示LOG

git diff (<filename>)  // 查看未add/rm的修改内容

git diff HEAD -- readme.txt  // 查看已提交的修改内容

git status // 查看文件状态,新增/修改/删除,工作区/暂存区

git checkout -- <filename>  // 撤销修改 - 修改但未添加到暂存区

git reset HEAD <filename> // unstage,暂存区撤销回工作区

git reset --hard HEAD^|<commit id>  // 修改HEAD指针到新位置(等效于撤销已提交的修改,放弃commit id后的所有修改)

HEAD代表当前指针,HEAD^前一个版本,HEAD^^往前第二个版本,HEAD~50往前50个版本

分支操作:

GIT管理系统里,每个分支对应一个指针指向当前分支的头部节点,HEAD通过指向分支指针从而指向某一分支的头部节点。

master分支是始终存在的。

如无特殊说明,merge分支优先使用fast-forward模式,如果不能FF,则用普通的merge

merge冲突时,Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,此时直接编辑文件,add 文件并commit

git branch  // 查看分支

git branch <branch name>  //创建分支

git branch -d <branch_name >  // 删除分支

git branch -D <branch_name> // 强制删除分支(一般当这个分支没有merge到其他分支而被丢弃时)

git checkout <branch_name> // 切换分支

git checkout -b <branche_name> // 创建分支并切换过去

git merge <branch_name> // 将branch_name merge到当前分支,包括合并文件,add文件+commit

git merge -m "comment" <branch_name>  // 为merge的commit添加注释

git merge --no-ff -m "comment" <branch_name> // 禁用ff模式

工作区暂存:

git stash  // 当前分支的工作区内容暂存起来。此时git status是干净的

git stash list // 列出暂存区

git stash apply <stashname> // 恢复工作区

git stash drop <stashname> // 删除stash列表项

git stash pop  // 恢复stash顶端并删除

标签管理;

git tag // 查看标签

git tag <tag_name> // 在当前分支当前头打上标签

git tag <tag_name>  <commit id>  // 在某个commit上打上标签

git show <tag_name>  // 显示标签对应commit的内容

git tag -a <tag_name> -m "blablabla..."  //添加标签信息

git tag -d <tag_name>   // 删除本地标签

git push origin <tag_name>  // 推送本地标签

git push origin --tags  // 推送本地所有标签

git push origin :refs/tags/<tag_name>  //删除远程标签

远程协作:

有两个基本操作:建立远程和本地仓库的关联,建立远程仓库分支和本地仓库分支的关联

git remote add origin git@github.com:homer_simpson/repo_one.git   //  创建远程仓库名字,即表示创建本地仓库和远程仓库的连接。origin是约定俗成的远程仓库的名字

git remote // 查看远程仓库

git remote -v // 查看远程仓库的详细信息

在某一个分支下git push/git pull 默认操作对象是当前分支,如果当前分支没有和远程分支建立联系,则出错

git clone操作,会自动创建本地master分支,并且和远程的master分支建立联系

git remote方式关联后,须手动关联master分支,例如git push -u origin master是建立关联并push

git branch --set-upstream branch1 origin/branch1   //  建立本地分支和远程分支的联系

git checkout -b branch1 origin/branch1   // 本地创建和远程分支对应的分支,因为clone时不会创建除了master之外的其他分支

Git系统配置:

git config --global user.name "Your Name"  //设置名字

git config --global user.email "email@example.com"// 设置邮箱地址

git config --global color.ui true  // 显示不同的颜色

git config --global alias.st status  // 配置别名

可在根工作区创建.gitignore,配置GIT不跟踪的文件,但是可用命令git add -f <file_name>强行添加, git check-ignore -v <file_name>可以检查当前文件是否被过滤。

.git/config保存全局配置。

Git简易参考手册的更多相关文章

  1. Git命令参考手册(文本版)

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  2. Git命令参考手册(转)

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  3. git 命令参考手册 git中文命令参考手册大全

    git init # 初始化本地git仓库(创建新仓库)git config --global user.name "xxx" # 配置用户名git config --global ...

  4. Git命令参考手册

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  5. [转帖]git命令参考手册

                      git init                                                  # 初始化本地git仓库(创建新仓库) git ...

  6. git 命令参考手册

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

  7. git简易操作手册

    从远程仓库新建 $ git clone https://github.com/xxxr/Repository.git $ cd Repository/ $ git config --global us ...

  8. Git Hub 使用手册参考

    参考信息 1.http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b0002.http://ww ...

  9. Git 安装配置手册

    Git 安装配置手册 首先我们要了解 Git 是类似于 SVN 用来管理项目的 首先要先下载 Git ,这个东西相当于一个核,是该功能的核心 下载地址(<https://gitforwindow ...

随机推荐

  1. JAVA,JSP,Servlet获取当前工程路径-绝对路径

    在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getPro ...

  2. swift 获取文件的Md5值

    获取文件的Md5值的方法如下 func md5File(url: URL) -> String? { let bufferSize = 1024 * 1024 do { //打开文件 let f ...

  3. ETL作业调度工具TASKCTL的两个重大突破

    在传统设计理念下,流程图的可视化.作业流的定义设计功能,随着作业量增加,越来越难用,越来越不适用是一个难以避免的问题.就这两个问题,我给大家分享一下TASKCTL是如何转变思路.如何突破.如何带来一些 ...

  4. 利用Java随机,生成随机学生数据

    为模拟向数据库中大量插入学生数据(注:此处应该用PreparedStatement.batchUpdate等批处理提高效率)的情形,通过Java随机来生成学生数据. 一.要生成的学生数据 studen ...

  5. android学习笔记Fragment的使用

    Fragment的内容感觉好多啊,主要需要掌握Fragment静态加载,Fragment动态加载,Fragment的生命周期,Fragment与Activity的交互 1,Fragment的静态加载 ...

  6. python 实现三级菜单

    要求: 可选择进入各级子菜单 在各级菜单下可以选择退出 在子菜单下可以返回上一级菜单 Readme: 运行程序,输入菜单选项,进入对应的子菜单 # Joe Young data = { '山东':{ ...

  7. OC版贪吃蛇

    昨天写了一个js版贪吃蛇,今天突然想写一个OC版的,来对比一下两种语言的区别 oc版功能,适配所有尺寸iphone,可暂停,可设置地图和蛇的比例,可加速 对比一下会发现js版的相对OC版的会简单一些, ...

  8. Qt实现九宫图类控件

    <1>. 头文件(类声明) class CPreviewWidge : public QWidget { Q_OBJECT public: CPreviewWidge( ); ~CPrev ...

  9. 【Java学习笔记之二十二】解析接口在Java继承中的用法及实例分析

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  10. 腾讯织云:DevOps 流水线应用平台践行之路

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:梁定安,腾讯织云负责人,目前就职于腾讯社交网络运营部,任运维技术总监,开放运维联盟委员,腾讯云布道师,腾讯课堂运维讲师,EXIN D ...