git了解-使用笔记
1.Git的由来与设计理念
Git是linux之父Linus Torvalds开发的,是一款最先进的项目版本控制系统。
Git的由来有一个小故事,传闻起初Linux社区工作者都是通过邮件的,发送给linus,由他来手工合并代码,之所以不用CVS,SVN,是因为linus对这些软件深恶痛绝,不仅仅慢,还必须联网,使用起来也很不方便。
后来,收费的版本控制提供商BitMover处于人道主义,免费提供自己的产品使用权与Linux社区,后来因为社区中有人试图破解软件已解锁更多功能,被BitMover发现后,果断收回的软件使用权。之后的事大家都了解,
linus花来两周的时间,使用C语言开发了Git,从2005年,发展都现在,成为当下最流行最先进的版本控制系统。重新定义牛的含义^_^。
Git与CVS,SVN最大的区别是设计思想的区别,这是我认为很了不起的设计,打破的传统的中央服务器的概念。传统的版本控制软件的工作原理,是由一台大家都可以连接到的中央服务器充当核心版本,每个人都
从这个版本下载最新code修改后,提交到中央服务器。这种设计思想最大的弊端,是所有人必须联网在能工作,并且如果中央服务器挂掉,所有人都没有办法工作了;Git是一种分布式的版本控制软件,每个人电脑上的
项目都是最终版本,就是每个人都是‘中央服务器’,如果A,B两个人的代码需要同步,那么两个人电脑连接起来同步就可以了。新员工入职,可以随便从一个老员工的机器上,down一份最新的工程。
2.Git安装
linux:sudo apt-get install git ; yum install git
windows: 现在软件包进行安装
3.Git使用
1.设置查看用户,邮箱
git config --global user.name ruiql
git config --global user.email ruiql@xxx.xxx
git config user.name
git config user.email
2.基本操作
git add xxx.xx 添加某个文件到待操作区
git commit -m ‘改动日志’ 提交到当前分支
git log 查看当前版本库提交日志
git status 查看当前版本库状态
git reset --hard HEAD^ 回退到上个版本
git reset --hard 8a3bac1d 恢复到某个版本
git rm 删除git上的文件
在介绍 checkout -- 命令前,需要先介绍一下git的stage,我们知道创建一个文件加入到版本库,首先需要执行git add 命令,然后执行git commit 命令,每次修改文件同样也需要add-commit,那么为什么要两步操作呢?有两个作用
1.add可以分多批次添加文件,然后一次commit全部提交到版本库中
2.git区别于svn,cvs,有一个stage,也就是暂存区东西存在,我们修改的文件在工作区,工作区的修改,通过git add 命令会提交到 stage也就是暂存区中,git commit 是将暂存区内的修改,提交到版本库上。
我们再继续介绍checkout命令,这个命令有两种使用情况,第一个情况,我们修改了工作区的文件,但是并没有通过add添加打暂存区,这个时候执行 git checkout -- xxx.xx 命令,会将版本库的版本覆盖工作区的版本,第二种情
况,如果将本地修改add到了暂存区后,又修改了工作区文件,那么执行 git checkout -- xxx.xx 命令,是将暂存区中的版本覆盖到工作区,也就是说,checkout -- 命令,会让你恢复文件内容到最近的一次add,或者commit版本。如果
文件add到了暂存区,但是没有提交,怎么撤回呢?可以通过git reset HEAD xxx.xx 命令来将暂存区内容恢复到当前版本库版本。
3.git远程库操作
1.拷贝远程库到本地:git clone git@xxx:xx/xxx.git 使用clone 命令进行copy,如果使用github,需要在github setting中ssh菜单中添加key,key所在位置:cd ~/.ssh ; more id_ras.pub
2.本地工程关联远程库: git remote add origin git@xxx:xx/xx.git 将当前分支关联到远程库
3.推送本地库到远程库中:git push origin master 推送分支到远程库
4.获取远程库版本: git pull origin master 获取远程库最新版本到本地库
5.本地分支与远程分支关联:git branch --set-upstream dev origin/dev 将本地dev分支与远程dev分支关联,之后就可以使用git push 直接推送到关联远程的分支上
6.将本地分支提交到远程分支上:git push origin dev:dev 将本地dev分支,提交到远程dev分支上,如果远程dev分支不存在,则创建一个,GitHub亲测
7.查看本地分支与远程分支的对应关系:git branch -vv 一个v表示本地关系,两个v表示远程关系
4.git 分支管理
1.创建分支:git checkout -b dev 创建dev分支,等同于两条命令:git branch dev (创建dev分支)git checkout dev(切换到dev分支),使用git branch 命令查看当前在那个分支(ps:当前分支有*)
2.合并分支:git checkout master 切换到master分支,git merge dev 将dev更新提交到master上
3.删除分支:git branch -d dev 删除dev分支
5.解决冲突
创建一个分支:git checkout -b dev,在dev分支修改一个文件提交,git add cba.txt , git commit -m 'modify cba.txt' , 切换分支到master ,git checkout master, 继续修改cba.txt 提交,然后合并分支,
git merge dev,这个时候不能进行快速合并,因为dev分支修改了cbc.txt , master分支也修改了cba.txt ,git不知道使用那个所为最终版本,会将两个版本的区别打印在cba.txt文件内,这个时候手动合并,提交
就可以了。经常使用的命令:
git status
git log --graph --pretty=oneline -- abbrev-commit
6.git 小技巧
很多情况,我们会发生开发新功能跟改bug同时进行,如果新功能在dev-1分支上,但是master上有个紧急bug需要修复,当前的办法可以将dev代码提交,然后合并到master上,在master建立bug分支,解决
bug,然后合并到master,删除bug分支,pull master 代码继续开发功能。大部分情况是,新功能开发了一半,提交到master,会有报错或者启动不了等问题,有没有办法可以不提交代码,先改bug,然后在继续
开发的办法呢?答案是stash, 使用git stash 可以将本地环境保存起来,等干完其他事情后,再把保存的代码找回来。
1.git checkout dev 切换到dev分支
2.开发新功能ing
3.git stash将新功能藏起来,产品说先改bug
4.git checkout master
5.git checkout -b bug-101 在master上创建改bug分支
6.改bug,然后提交
7.git checkout master
8.git merge bug-101 改完的bug合并master
9.git checkout dev 切换到dev,我们要继续功能开发了
10.git stash list 看看我们的开发代码藏在哪里了
11.git stash apply stash@{0} 应用藏起来的代码继续开发(不会删除藏匿点)
12.git stash push 恢复到开发代码,并删除藏匿点
13.git stash drop 删除藏匿点 - -
git了解-使用笔记的更多相关文章
- Git Pro读书笔记
本文为Git Pro读书笔记,所有内容均来自Git Pro 1 Git基础 1.1 记录每次更新到仓库 在Git里,文件有4种状态,modified, staged, commited, 还有一种状态 ...
- git的学习笔记(二):git远程操作
1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公 ...
- git tag 常用笔记
git tag 常用笔记 查看 tag 列出现有 tag git tag 列出 v1.4.2 相关的 tag git tag -l "v1.4.2" 查看指定 tag 的信息 gi ...
- git学习小结 (笔记)
Modesty helps one to go forward, whereas conceit makes one lag behind. "虚心使人进步,骄傲使人落后" 注:本 ...
- HIT2019春软件构造->Git&Github学习笔记
由于软件构造课程需要,学习使用git,以下作为学习笔记. 一.Git初始化及仓库创建和操作 1.基本信息设置(设置签名) 命令 项目级别/仓库级别:仅在当前本地库范围内有效 git ...
- git的学习笔记整理
Git学习较好的网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373 ...
- git常用操作笔记
这是我看了廖雪峰的git教程,写的笔记,仅作为一个学习的记录 一.大多数我们面临的是已经有一个进行中的项目了,我们只需克隆下来就可以了 1.安装git,安装完后,可输入git,回车,查看是否已安装 2 ...
- Git源代码管理笔记
很早之前也学过git但是没有详细的记录,这次是做个复习,巩固 若有不对的地方请您指出 目录 Git和SVN有什么区别? 什么是Git? github仓库 Star和Fork Pull request ...
- 版本控制工具Git的学习笔记
在网上看到一个很不错的Git教程,学习后果断要做一下总结. 教程地址:http://www.liaoxuefeng.com/ 总结要点: 安装Git因为我个人的开发主要是基于windows环境下,所以 ...
- 代码管理工具 --- git的学习笔记二《git的工作原理》
通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...
随机推荐
- centos7 安装部署jenkins
一.简介 jenkins是一个Java开发的开源持续集成工具,广泛用于项目开发,具有自动化构建.测试和部署等功能,它的运行需要Java环境. 二.搭建环境准备:# cat /etc/redhat-re ...
- crontab学习
概念 日志路径 /var/log/cron 配置路径 vi /etc/crontab 参考 https://www.cnblogs.com/kenshinobiy/p/7685229.html 问题 ...
- Windows服务模式下tomcat开启远程调试
测试环境:windows IDE:IDEA 2018 2.5 x64 按照图示,加以下参数加入配置中 -Xdebug -Xrunjdwp:transport=dt_socket,address=998 ...
- chrome小书签-实用的小功能-javascript代码段
1.打印页面的所有脚本引用文件及代码段: javascript:var scriptarray=document.getElementsByTagName("script");fo ...
- C#使用CefSharp开源库开发Chrome 浏览器
一.介绍 这个东西我以前没有接触过,但是公司项目里面有用到这个东西,所以就顺便研究一下.今天只是做了 WinForm 的测试,有时间了在试试 WPF 是如何实现的.刚开始一塌糊涂,有点麻 ...
- 软工作业1—java实现wc.exe
github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c //返回文件 file.c 的字符数 ...
- js实现一个简单的登录页面
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Python中logging日志模块的使用
参考https://www.cnblogs.com/CJOKER/p/8295272.html
- [C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应
随着数据库数据的不断增大,查询时间也随之增长.而客户端与数据库连接时间以及命令的执行时间都是有限的.默认为30s.所以在查询数据的时候,程序会出现 “超时时间已到.在操作完成之前超时时间已过或服务器未 ...
- pytest框架之fixture详细使用
本人之前写了一套基于unnitest框架的UI自动化框架,但是发现了pytest框架之后觉得unnitest太low,现在重头开始学pytest框架,一边学习一边记录,和大家分享,话不多说,那就先从p ...