文档章节

Learning Git~

Chanimalx
 Chanimalx
发布于 2015/02/27 15:02
字数 1936
阅读 94
收藏 2
点赞 0
评论 0
git

Step 1:自报家门

git config --global user.name “wjh”

git config --global user.email “email@example.com

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

Step 2:创建版本库

mkdir learngit 在当前目录下 创建learngit文件夹

pwd 显示当前目录

git init 将当前目录变成git可以管理的仓库

1.git add readme.txt 将readme.txt添加到(暂存区)

2.git commit  -m “wrote a readme file” –m 后面表示对这次修改的解释   将暂存区的所有内容提交到当前分支

git status 观察仓库当前状态

git diff readme.txt 可以查看修改内容,若是commit之后,便看不到信息了。

Step 3:版本回退

git log 可以看到改动的日志

git log –pretty=oneline 日志简约版

注意此处看到的commit ID 将作为回退的更具

git reset –hard HEAD^回退到上一个版本 以此类推 HEAD^^回退到上上个版本 更甚至 HEAD~100前100个版本

git reset –hard 331231  回滚到指定ID版本

git-headgit-head-move这些操作的本身 实质上改的是head指针的位置

git reflog 查看每一次的操作日志 也可便于查看commit id

Step 4:工作区和暂存区

git-repo

默认建库创建的是master分支以及指向master的指针HEAD

需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

add操作是提交到暂存区  commit 是把暂存区内容提交到当前分支下。

3个工作区是GIT中非常重要的概念,需铭记之。

当你做如下操作: 修改文件(工作区中),然后add(到暂存区),然后再修改文件(工作区),然后commit(到分支)。 最后的结果 只是提交了第一次修改的内容,原因是我们需要add到暂存区的修改才能被提交到分支

Tips:  linux 命令 cat readme.txt 可查看文件内容

Step 5:撤销修改

git checkout --readme.txt 这个操作就是让这个文件回到最近一次git commitgit add时的状态。

比如你改了一个文件,没add,那么撤销会撤销到上一次add时或者commit时的状态。

Step 6:删除文件

git rm xxx文件  将文件移除,但还未提交  git commit –m “xxx” 提交此次操作,这些操作都可以回退

Step 7:从远程库克隆&创建合并分支

git clone 地址 然后就copy一份到当前命令行所在目录 会自动建立一个文件夹

git-br-initial

git-br-create

git-br-dev-fd

git-br-ff-merge

git-br-rm

创建分支:git branch dev 创建一个分支dev

切换到指定分支:git checkout dev

高端合并版本命令: git checkout –b dev 创建并切换到指定分支

当在dev分支下开发完成后,我们可以合并到Master:

首先git checkout master 然后git merge dev 当完全合并后,  就可以删除该分支了:git branch –d dev

git branch 查看分支

Step 8:解决冲突

git-br-feature1

当你在feature1和master2个分支下对同一个内容进行修改的时候,就会发生冲突。

git merge feature1就会提示你冲突,git status可以查看下状态,然后你可以直接看文件的内容 查看冲突细节,当确认 并修改后之后,

add 掉 并且commit即可。

git-br-conflict-merged

解决完之后 就可以 git branch –d feature1删除分支

Step 9:分支管理策略

git merge --no-ff -m "merge with no-ff" dev
--no-ff参数,表示禁用Fast forward
本次合并要创建一个新的commit

 

git log --graph --pretty=oneline --abbrev-commit

Step 10:Bug分支

当前工作区内容已被修改,但是并未完成。这时Boss来了,说前面的分支上面有一个Bug,需要立即修复。可是我又不想提交目前的修改,因为修改没有完成。但是,不提交的话,又没有办法checkout到前面的分支。此时用Git Stash就相当于备份工作区了。然后在Checkout过去修改,就能够达到保存当前工作区,并及时恢复的作用。

git stash 会有一个栈的管理,管理你的工作状态,你可以多次使用git stash

当你要恢复工作现场,git stash apply,但是该操作不会删除stash内容,你需要用git stash drop来删除

另外一种方式,使用git stash pop (有恢复和删除功效)

git stash list 可以查看栈中的情况

Step 11:Feature分支

经常开发新增一个新的功能,常需要增加一个分支来开发,完成后合并,并删除分支。

你接到任务开发新功能,当你建了分支开发完后,切回去准备合并时,老板说这个功能又不要了,这个时候,你可能需要删除分支:

git branch –d xxxx 这个方式 不行,会提示你还未合并 就想删?

你需要更暴力的:git branch –D xxxx

Step 12:多人协作

当你clone一个远程库的时候,git自动把本地的master与远程的库关联起来,并且远程仓库的默认名字是origin

要查看远程库的信息,用git remote,更详细的信息可以:git remote –v

origin  git@github.com:michaelliao/learngit.git (fetch)
origin  git@github.com:michaelliao/learngit.git (push)

若没有推送权限,会隐藏第2条信息

Step 13:推送分支

推送指定分支到远程,也就是提交:

git push origin master

抓取分支

默认clone下来只能看到master分支

若你想远程origin的dev分支到本地,你可以 git checkout –b dev origin/dev

然后开发完了可以 git push origin dev

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

Step 14:标签

首先切换到需要打标签的分支上

然后git tag v1.0

git tag查看所有标签信息

默认标签最近一次commit。如果标签指定的

git tag v0.9 6224937
git tag -a v0.1 -m "version 0.1 released" 3628164 标签带说明
git show <tagname>可以看到说明文字
操作标签
git tag -d v0.1删除标签
标签推送到远程git push origin <tagname>
一次性全推送所有标签:
git push origin –tags
若标签已在远程,想删除标签:
git tag -d v0.9 先删本地
git push origin :refs/tags/v0.9 再删远程
忽略特殊文件

忽略文件的原则是:

  1. 忽略操作系统自动生成的文件,比如缩略图等;

  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;

  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

  • 忽略某些文件时,需要编写.gitignore

  • .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

Windows创建文件命令:echo.>.gitignore

© 著作权归作者所有

共有 人打赏支持
Chanimalx
粉丝 55
博文 30
码字总数 36934
作品 0
杭州
Android工程师
如何向Github提交代码

Step1: 含义:初始化在这个文件夹中建立一个空库 felix@felix-computer:~$ cd workspace/felix@felix-computer:~/workspace$ cd desginpartternlearning/felix@felix-computer:~/workspace/......

felixlv ⋅ 2014/02/20 ⋅ 0

GIT科普系列3:底层存储机制Internal Objects

题记: 近期连续写了几篇关于git的博文,大多从日常使用过程中遇到的难点入手(例如冲突、回滚、放弃本地修改),目的是希望能够让大家从博文中找到可以直接用于实战的经验,因此并没有像其他...

zssureqh ⋅ 2016/08/06 ⋅ 0

SpringCloud调研系列2.1:服务发现-Ribbon

上节,我们成功的进行了服务注册,下面开始进行服务发现 参考文档: http://blog.didispace.com/springcloud2/ --- 文章 http://git.oschina.net/didispace/SpringBoot-Learning 作者写的代码...

强子哥哥 ⋅ 2016/12/01 ⋅ 0

关于D3

主要分享一下关于学习D3的知识库和学习资料 1、入门简单学习,适合国内的新手看的,简单易懂,上手轻松,深度学习需要另外考虑 主页:http://www.ourd3js.com/ 这是CSDN:http://edu.csdn.n...

洋碱 ⋅ 2017/09/07 ⋅ 0

java&javaweb学习笔记(汇总)

我的java&javaweb学习笔记(汇总) 笔记分为两大部分:javase和javaweb javase javaweb 笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解java基础语法,想进一步深入学习的人 gi...

brianway ⋅ 2016/02/09 ⋅ 2

Spring 4.x MVC and RESTful service Demo

This project will demo the techniques that would be used in our project. This version 1 will be just a general-purpose website (I call it bare version), it has a front-end and a......

cyper ⋅ 2015/02/10 ⋅ 1

聊天机器人资料汇总

整理者:我爱机器学习 本文将持续更新,烦请留言告知遗漏的高质量资源 Awesome Chatbot 链接:https://github.com/shaohua/awesome-chatbot DEEP LEARNING FOR CHATBOTS 链接:DEEP LEARNING...

我爱机器学习 ⋅ 2016/11/01 ⋅ 0

Learn Ruby programming in the new year – 58th batc

Learn Ruby programming in the new year – 58th batc RubyLearning Blog2014-12-1476 阅读 Registrations are now open for RubyLearning’s long-awaited and popular Ruby programming c......

RubyLearning Blog ⋅ 2014/12/14 ⋅ 0

Spring mvc整合swagger2。

看到http://git.oschina.net/didispace/SpringBoot-Learning 的时候突然发现一个好玩的东西swagger2,是spring boot整合的。那么不用spring boot有没有办法呢,突然一下来感觉了就试试了。肯定...

z201 ⋅ 2016/08/04 ⋅ 0

springmvc+mybatis学习笔记(汇总)

springmvc+mybatis学习笔记(汇总) 标签 : springmvc mybaits [TOC] 笔记分为两大部分:mybatis和springmvc mybatis springmvc 笔记内容主要是mybatis和springmvc的一些基本概念和使用方法,...

brianway ⋅ 2016/03/30 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部