git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看
1.进入项目文件夹
初始化一个Git仓库,使用git init
命令。
添加文件到Git仓库,分两步:
第一步,使用命令
git add <file>
,注意,可反复多次使用,添加多个文件;//第二步,使用命令
git commit
,完成。
2.修改文件
git status
命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。git diff
顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到提交修改,先使用git add, 在使用git commit
3.版本回滚
- 在Git中,我们用
git log
命令查看:版本控制系统肯定有某个命令可以告诉我们历史记录, - git log --reptty=oneline
- git reset --hard HEAD^ (HEAD^^:上上版本,HEAD~100:上100版本)回滚到某版本
- 当你回退了又想返回回退前的版本就要知道版本号
- 如果忘了版本号 git reflog : 查看这个库的修改日志
4.工作区与暂存区的概念
- http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000
- 工作区:我们看到的文件目录
- 暂存区:在.git文件夹中的修改日志之类的东西(每一个版本)
5.管理修改
- 修改文件后,先使用git add,把修改添加到暂存区
- 再使用commit,把暂存区的修改推送到分支上(commit只能推送已经add到暂存区的修改,没add过,是没有东西commit的)
6.撤销修改
git checkout -- readme.txt
可以丢弃工作区的修改git checkout -- file
命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout
命令git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回工作区
7.删除文件
git rm test.txt
是确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
git checkout -- test.txt
删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本
8.github仓库:
- 先连接自己的github账号,使用ssh连接:(教程)http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000
- 若要连接就要先从远程库(github官网)增加一个库,
- 再然后在本地库中执行连接: git remote add origin git@github.com:miaowwwww/learngit.git
- 推送本地到github: git push -u origin master (-u为首次使用必须,因为不但会推送本地文件,还会建立本地库,github库的连接永久的)
- 修改后使用(commit过后)$ git push origin master
9.克隆git
$ git clone git@github.com:michaelliao/gitskills.git
- $ git clone https://github.com/miaowwwww/learngit.git
10.分支管理
- 首先,我们创建
dev
分支,然后切换到dev
分支:$ git checkout -b dev
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:$ git branch dev
$ git checkout dev- 用
git branch
命令查看当前分支:$ git branch
- 合并分支:$git merge dev (切换回master分支,合并当前分支与dev分支)
- 合并完成后,就可以放心地删除
dev
分支了:$ git branch
11.解决冲突
- 当两个分支合并的时候可能会存在冲突,解决冲突后,重新commit
- 用
git log --graph
命令可以看到分支合并图。
12.分支管理策略
- 通常,合并分支时,如果可能,Git会用
Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。 - 如果要强制禁用
Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。 - 准备合并
dev
分支,请注意--no-ff
参数,表示禁用Fast forwar
: - $ git merge --no-ff -m "merge with no-ff" dev
- 需要把-m 添加上去,因为会创建一个新的分支,需要添加说明
13.bug分支:来自廖雪峰的官方网站
- 每个bug都应该使用一个分支来处理:例如:issue-101分支,处理后再删除分支
- 情况1:当手上dev分支上的工作不能commit上去,而又必须处理issue-101时,(不可直接创建issue-101,在返回dev,因为没有commit到暂存区,转回来的时候,dev未commit的部分不存在了)
- 使用 $git stash: 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
- 修复issue-101,后重新回到dev分支,并把储藏的代码拿出来
git stash list 命令查看储藏列表
- 一是用
git stash apply
恢复,但是恢复后,stash内容并不删除,你需要用git stash drop
来删除 - 另一种方式是用
git stash pop
,恢复的同时把stash内容也删了
14.Feature分支(新功能)
$ git checkout -b feature-vulcan
在commit之前又说要取消新功能,
git branch -D feature-vulcan (没commit,无法使用git branch -d feature-vulcan 删除,使用-D强制删除)
15.使用远程github多人协作:大家都会往master
和dev
分支上推送各自的修改。(廖雪峰的官方网站)
- 当你从远程仓库克隆时,实际上Git自动把本地的
master
分支和远程的master
分支对应起来了,并且,远程仓库的默认名称是origin
。 - git remote || git remote -v : 查看版本库的信息
- 推送分支:git push origin master<name>
- 捉取分支:
16.标签管理:给某一个commit的版本一个别名,不用通过长串的版本号
- 创建标签(当前版本进度):$ git tag v1.0
- 对历史里某次版本进行标签:$ git tag v0.9 6224937
可以用
git show <tagname>
查看标签信息:- 创建带有说明的标签,用
-a
指定标签名,-m
指定说明文字:$ git tag -a v0.1 -m "version 0.1 released" 3628164 - 删除标签:$ git tag -d v0.1
- 推送标签到远程:
git push origin <tagname> || $ git push origin --tags
>
可以删除一个远程标签:git push origin :refs/tags/<tagname>
17.忽略特殊文件.gitignore
git-简单流程(学习笔记)的更多相关文章
- Git版本控制管理学习笔记3-基本的Git概念
为了更近一步的学习和理解Git的理念,这一节介绍一下Git中的一些基本概念. 基本概念 对象库图示 Git在工作时的概念 一.基本概念: 1.版本库: Git的版本库就是一个简单的数据库,其中 ...
- Git版本控制管理学习笔记5-提交
这个标题其实有些让人费解,因为会想这个提交是动词还是名称? 提交动作是通过git commit命令来实现的,提交之后会在对象库中新增一个提交对象.提交过程中会发生哪些变化,在上一篇笔记 ...
- Git版本控制管理学习笔记4-文件管理和索引
可以认为使用Git时,我们会遇到3个空间:工作目录.索引.版本库.我们关心的,就是在新建.修改等操作时,这三者之间发生了怎样的变化. 笼统的讲,就是在工作目录下编辑,在索引中积累修改, ...
- Git版本控制管理学习笔记2--起步
首先确保系统中已经安装了git,这里使用的linux系统. 一.命令行初步使用: 1.git命令: 列出它的选项和最常用的子命令.标准命令格式中,COMMAND代表的就是下面列出的子命令. [root ...
- Git版本控制管理学习笔记1-介绍
几乎所有的版本控制工具都是出于同样的目的:开发以及维护开发出来的代码,方便读取代码的历史,记录所有的修改.这里,介绍的是当前在开源社区内非常流行的版本控制工具Git.它是由Linus Torvalds ...
- 【原】《Git教程》学习笔记
[TOC] 1 创建版本库 1.1 初始化 初始化一个Git仓库,使用 git init 命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file> ,注意,可反 ...
- VerilogHDL概述与数字IC设计流程学习笔记
一.HDL的概念和特征 HDL,Hard Discrimination Language的缩写,翻译过来就是硬件描述语言.那么什么是硬件描述语言呢?为什么不叫硬件设计语言呢?硬件描述语言,顾名思义就是 ...
- eclipse使用git及github学习笔记
项目托管 1.首先需要在github上建立一个远端仓库 点击Create repository后,会在github上建立相应的git仓库,并会出现如下界面: 复制https或者ssh的仓库地址,远端 ...
- Git与GitHub学习笔记(七)Windows 配置Github ssh key
前言 SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell.SSH登录是需要用户 ...
- Git与GitHub学习笔记(三).gitignore文件忽略和删除本地以及远程文件
一.Git提供了文件忽略功能.当对工作区某个目录或者某些文件设置了忽略后,git将不会对它们进行追踪 HELP:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 问题:最近 ...
随机推荐
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- [C#] 软硬结合第二篇——酷我音乐盒的逆天玩法
1.灵感来源: LZ是纯宅男,一天从早上8:00起一直要呆在电脑旁到晚上12:00左右吧~平时也没人来闲聊几句,刷空间暑假也没啥动态,听音乐吧...~有些确实不好听,于是就不得不打断手头的工作去点击下 ...
- 从Membership 到 .NET4.5 之 ASP.NET Identity
我们前面已经讨论过了如何在一个网站中集成最基本的Membership功能,然后深入学习了Membership的架构设计.正所谓从实践从来,到实践从去,在我们把Membership的结构吃透之后,我们要 ...
- HTML文档声明
前面的话 HTML文档通常以类型声明开始,该声明将帮助浏览器确定其尝试解析和显示的HTML文档类型.本文将详细介绍文档声明DOCTYPE 特点 文档声明必须是HTML文档的第一行.且顶格显示, ...
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...
- 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~
一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...
- JavaWeb——Listener
一.基本概念 JavaWeb里面的listener是通过观察者设计模式进行实现的.对于观察者模式,这里不做过多介绍,大概讲一下什么意思. 观察者模式又叫发布订阅模式或者监听器模式.在该模式中有两个角色 ...
- 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- 【WPF】日常笔记
本文专用于记录WPF开发中的小细节,作为备忘录使用. 1. 关于绑定: Text ="{Binding AnchorageValue,Mode=TwoWay,UpdateSourceTrig ...
- Autofac - 属性注入
属性注入不同于通过构造函数方式传入参数. 这里是通过注入的方式, 在类创建完毕之后, 资源释放之前, 给属性赋值. 这里, 我重新弄一些类来演示这一篇吧. public class ClassA { ...