版本控制[0] -> git -> 使用 git 进行版本控制
版本控制 / Version Control
目录
- git-版本控制 / git-Version Control
- git-常用命令 / git-Freq Command
- git-文件忽略 / git-.gitignore
- git-自动补全 / git-Auto Completion
- git-衍合原则 / git-Rebase Principle
- git-回滚仓库 / git-Reset Repository
- git-重命名分支 / git-Rename Branch
1 git-版本控制 / git-Version Control
关于 Git 教程及理念可参考 Git 的手册 Pro Git,关于git分支的理解可参考第三章,其本质为指针对象。
2 git-常用命令 / git-Freq Command
基本配置
git config --global user.name "KE LI" 设置全局用户名
git config --global user.email "keli@example.com" 设置全局邮箱
git config --list 查看配置信息
基本操作
git help <verb> 查看<verb>使用方法
git init 初始化新的git仓库
git add . 添加所有文件
git add <filename> 添加指定文件
git commit -m"<description>" 提交修改操作
git commit -a 跳过git add提交,可连用-m
git commit --amend 修改上次提交(补充漏加文件等)
git clone <url> [<dirname>] 从远程仓库进行克隆
git status 查看当前目录状态
git diff[ cached/staged] 查看[暂存]更改差异
git rm --cached <filename> 移除缓存区文件,保留源文件
git mv <file_from> <file_to> 改名操作
git log[ -p -2] 查看提交历史,-p展开,-2查看两条
git log --graph 查看提交分支图
git reset HEAD <filename> 取消暂存的文件(git add之后)
git checkout -- <filename> 撤销对指定文件的修改
远程仓库
git remote[ -v] 查看远程仓库[-v为地址]
git remote add [shortname] [url] 添加一个远程仓库,并命名
git remote show [remote-name] 查看某个远程仓库的信息
git remote rename <from_name> <to_name> 远程仓库改名
git remote rm <remote-name> 移除远程仓库
git fetch [remote-name] 从远程仓库抓取数据
git push [remote-name] [branch-name] 推送数据到远程仓库
git push [remote-name] <from_branch>:<to_branch> 上传分支并命名为<to_branch>
git push [remote-name] :<to_branch> 删除远程分支
标签
git tag 显示所有标签
git tag -l "v1.4.2.*" 显示v1.4.2系列标签
git tag -a <tag-name>[ -m "Comments"] 创建标签
git tag -d <tag-name> 删除标签
分支
git branch 查看分支清单
git branch <branch-name> 创建分支
git branch -d <branch-name> 删除分支
git branch --merged/no-merged 查看已经/尚未与当前分支合并分支
git checkout <branch-name> 切换分支
git checkout -b <branch-name> 新建并切换分支
git merge <branch-name> 合并分支(分支单线可到达时为FW)
git cherry-pick <commit-id> 获取某次提交的特性合并至当前
分支衍合
git rebase <branch-name> 衍合分支,如在branch,rebase master
git rebase [onto_b] <from_b> 衍合分支,from_b到onto_b
git rebase --onto <onto_b> <skip_b> <from_b> 将from_b跳过skip_b衍合到onto_b
版本回退
git reset --hard/soft head^ 回退到前一个版本(^),head指当前
git reset --hard/soft head~x 回退到前x个版本
git reset --hard id 回退到id版本,git reflog查看
git reset --hard <filename> 撤回文件添加add(暂存区—>工作区)
3 git-文件忽略 / git-.gitignore
.gitignore文件的创建
使用git bash,在命令行输入touch .gitignore生成一个.gitignore文件
.gitignore文件的格式规范
1. 所有空行或者以注释符号 # 开头的行都会被 Git 忽略;
2. 可以使用标准的 glob 模式匹配;
3. 匹配模式最后跟反斜杠(/)说明要忽略的是目录;
4. 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反;
Note: 所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。
星号(*)匹配零个或多个任意字符;
[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个a,要么匹配一个b,要么匹配一个c);
问号(?)只匹配一个任意字符;
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
4 git-自动补全 / git-Auto Completion
如果在 Windows 上安装了 msysGit,默认使用的 Git Bash 就已经配好了这个自动补全脚本,可以直接使用。
在输入 Git 命令的时候可以敲两次跳格键(Tab),就会看到列出所有匹配的可用命令建议:
$ git co<tab><tab>
commit config
此例中,键入 git co 然后连按两次 Tab 键,会看到两个相关的建议(命令) commit 和 config。继而输入 m<tab> 会自动完成 git commit 命令的输入。
命令的选项也可以用这种方式自动完成,其实这种情况更实用些。比如运行 git log 的时候忘了相关选项的名字,可以输入开头的几个字母,然后敲 Tab 键看看有哪些匹配的:
$ git log --s<tab>
--shortstat --since= --src-prefix= --stat --summary
5 git-衍合原则 / git-Rebase Principle
在git的衍合中,需遵循以下原则,详细细节参考Pro Git 3.6节:
一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。
6 git-回滚仓库 / git-Reset Repository
Note: 回滚仓库将会对整个项目造成很大的影响,在回滚之前请做好确认工作。
回滚远程仓库主要有以下几种情况,可参见链接,
此处介绍删除最后一次/多次提交,这种情况只需要两步,
git revert HEAD^
git push origin master
此外,若使用reset回滚,则push时需加上-f参数,进行强制提交,因为此时本地仓库落后于远程仓库。
git reset HEAD^
git push origin master -f
Note: revert和reset的区别,在于revert会放弃指定提交的修改,但是会生成一个新的提交,以前的历史记录也都存在,而reset则将HEAD指针直接指向某次提交,历史记录中不会出现放弃提交的记录。
也可使用不同的参数,进行多次回滚或回滚至特定的提交处。
7 git-重命名分支 / git-Rename Branch
在git中若需要对分支进行重命名可以通过一些步骤实现,
- push当前分支到新的远程分支;
- checkout到新的分支;
- 删除旧的远程分支;
- 删除旧的本地分支。
git push origin <old branch>:<new branch>
git checkout <new branch>
git push :<old branch>
git branch -d <old branch>
参考链接
http://git.oschina.net/progit/
https://zhidao.baidu.com/question/2053485325521871027.html
版本控制[0] -> git -> 使用 git 进行版本控制的更多相关文章
- 在Xcode中使用Git进行源码版本控制
http://www.cocoachina.com/ios/20140524/8536.html 资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册 iOS开发 Swift Ap ...
- Git打标签与版本控制规范
前言 本文适用于使用Git做VCS(版本控制系统)的场景. 用过Git的程序猿,都喜欢其分布式架构带来的commit快感.不用像使用SVN这种集中式版本管理系统,每一次提交代码,都要为代码冲突捏一把冷 ...
- 规范-Git打标签与版本控制
Git打标签与版本控制规范 前言 本文适用于使用Git做VCS(版本控制系统)的场景. 用过Git的程序猿,都喜欢其分布式架构带来的commit快感.不用像使用SVN这种集中式版本管理系统,每一次提交 ...
- 团队项目开发中,常见的版本控制有svn,git
团队项目开发中,常见的版本控制有svn,git
- git 入门教程之版本控制
版本控制 我们知道 git 是分布式版本控制系统,所以称被控制对象是版本本身没错,但是从git 命令中发现,并没有版本这个名词,有的只是commit,所以前几节我一直称其为提交. 为了避免后续教程引发 ...
- 版本控制(svn、Git)环境创建
1.SVN 2.Git last 版本控制工具应该具备的功能: 协同修改: 数据备份: 版本管理: 权限控制: 历史记录:查看修改人.修改时间.修改内容…… 分支管理:开发团队在工作过程中多条产品线同 ...
- 代码版本控制[version control]之Git
如何多人协同开发同一个项目? 使用代码版本控制[version control]软件, 目前市面上比较流行的代码版本控制器有: git,svn,csv 1. 使用git管理代码版本 本项目使用git管 ...
- Git版本控制之ubuntu搭建Git服务器
Git是一个开源的分布式版本控制系统,可以有效.高效的处理从很小到非常大的项目版本管理.使得开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,也可以将代码提交到Git服务 ...
- 版本控制比较cvs,svn,git
版本控制比较cvs,svn,git 几个重要概念: 版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和分布式两种模式.在客户端/服务器模式下,每一用户 ...
随机推荐
- Lazarus教程 中文版后续给出
市面上有介绍Delphi的书籍(近来Delphi的书也是越来越少了),但没有一本系统的介绍Lazarus的书,这本书是网上的仅有的一本Lazarus教程,目前全部是英文,不过我已经着手开始翻译,争取尽 ...
- FTP被动模式服务器端开有限的端口
很多服务器上都搭建的有FTP服务,FTP服务有两种连接模式:主动模式和被动模式.关于这两种模式的介绍,请参考这篇文章:重温FTP的主动模式和被动模式 关于这两种模式的比较,原文有这样的描述: 主动模式 ...
- Spring+SpringMVC+MyBatis+Redis框架学习笔记
在Java互联网中,以Spring+Spring MVC+MyBatis (SSM) 作为主流框架. SSM+Redis的结构图 在这种框架系统中: Spring IoC 承担了一个资源管理.整合.即 ...
- 【转载】Unity3D研究院之IOS自定义游戏摇杆与飞机平滑的移动
移动开发游戏中使用到的触摸游戏摇杆在iPhone上是非常普遍的,毕竟是全触摸屏手机,今天MOMO 通过一个小例子和大家讨论Unity3D 中如何自定义一个漂亮的全触摸游戏摇杆. 值得高兴 ...
- Entity Framework(四)--EF原理和状态管理
一.原理: 如何查看真正执行的SQL是怎样的? DbContext有一个Database属性,Database属性有一个Log属性,是Action委托类型其中的参数就是sql语句,每次EF执行sql语 ...
- C++ 虚函数的内存分配
1.无继承的普通类: 在有虚函数的情况下类会为其增加一个隐藏的成员,虚函数表指针,指向一个虚函数表,虚函数表里面就是类的各个虚函数的地址了.那么,虚函数表指针是以什么模型加入到类里面的,虚函数表里 ...
- 【转】Unity3D研究院之设置自动旋转屏幕默认旋转方向
http://www.xuanyusong.com/archives/2871 如下图所示,在处理屏幕默认旋转方向的时候可以在这里进行选择,上下左右一共是4个方向. 策划的需求是游戏采用横屏,但是要求 ...
- WebRTC 视频对话
今天聊一下WebRTC.很多开发者,可能会觉得有些陌生,或者直接感觉繁杂.因为WebRTC在iOS上的应用,只是编译都让人很是头痛.这些话,到此为止,以防让了解者失去信心.我们只传播正能量,再多的困难 ...
- P2659 美丽的序列 (单调栈)
题目链接 Solution 直接考虑单调栈处理出每一个点作为最小值的区间长度. 然后 \(O(n)\) 找一遍最大值即可. 记得开 long long,以及要注意 \(0\) 的问题. Code #i ...
- Educational Codeforces Round 42 (Rated for Div. 2) A
A. Equator time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...