学习 Git

Git 简介
Git是目前比较流行的分布式版本控制系统之一,能够记录文件的每次修改,还实现了多人并行开发;
Git 组成
- 工作区(写东西之地)
- 暂存区
- 本地仓库(.git)
- 远程仓库(.repro)
Git 安装
Linux系统
- git官网 Linux下载
Mac OS系统
- git官网 Mac下载
在 App Store下载 Xcode
- brew install git 指令 (前提:电脑得安装 Homebrew)
Windows系统
- git官网 Windows下载
创建本地库
创建项目文件夹
$ mkdir my-project
进入项目文件夹
$ cd my-project
初始化 .git
$ git init
查看 .git 文件
$ ls -la
提交本地库
文件 —> 工作区
当项目目录下的文件被修改,修改内容被自动添加到工作区
工作区 —> 暂存区
git add <file | .>:将修改内容从工作区添加到暂存区
暂存区 —> 本地仓库
git commit -m :将暂存区内容添加到本地仓库,并描述提交的目的
git status:查看文件状态 (红色:文件在工作区;绿色:文件在暂存区;显示nothing no commit, working tree clean说明文件已添加到本地仓库)
版本回退
- git log <-n>:查看n条 git 日志
- git reflog <-n>:查看n条历史操作记录
- git reset --hard HEAD~n:返回第n个版本 (HEAD 代表当前版本)
差异比较
- git diff:比较工作区与暂存区的内容
文件撤销
- git checkout --file:撤销工作区修改内容
删除文件
- git rm --file:删除本地仓库修改内容
本地库与远程库创立链接
一. 创建私钥
二. 添加SSH到GitHub
三. 创建远程仓库并与本地仓库相关联
- git remote add origin :让本地仓库员与远程仓库建立联系
- git push <-u> origin master:将本地仓库内容推送到远程仓库master分支上
克隆远程仓库
- git clone :克隆指定仓库
分支管理
- 一. 创建分支
- git branch :创建分支
- git checkout :切换分支
- 二. 合并分支
- git merge :合并分支
- 三. 删除分支
- git branch -d :删除本地分支
- git branch -D :强制删除本地分支
- git push -d origin :删除远程分支
四. 分支冻结
使用场景:需要去其他分支处理BUG,但当前分支还存在未提交的代码时使用
- git stash:将当前的分支的修改冻结,使当前分支工作区,暂存区没有内容
- git stash list:查看冻结列表
- git stash pop:解冻修改
- git cherry-pick commit ID:将某个分支的commit合并
五. 多人协作
- git fetch origin :获取远程指定分支修改
- git pull origin : git fetch + git merge
标签管理
- 一. 创建Tag
- git tag :创建tag
- 二. 删除Tag
- git tag -d :删除本地tag
- git tag push origin :refs/tags/:删除远程tag
- git push origin tag :推送本地tag到远程仓库
- git push origin --tags:推送所有未推送的本地tag到远程仓库
其他指令
- 来源:小和尚学习
- 参考 :Pro Git中文版
- 国内下载:git
学习 Git的更多相关文章
- 学习 git基础命令
缘起 年后到了新公司,由于个人意愿到了一个海外的项目组,除了自己从Java技术栈转了C#技术栈外,很多技术都是第一次使用,学习压力不小啊. 自己也就先从常用的技术开始学起,比如C#,AngularJS ...
- 学习Git的总结与体会
学习Git的总结 blog 第一次学习Git是完全按照廖雪峰老师的教程学习的,学的过程中基本上没有遇到什么问题,但是自己实际操作就问题不断了. 首先,还是按照惯例,来膜拜一下廖雪峰老师精简的教程知识吧 ...
- 深入理解学习Git工作流
http://blog.csdn.net/hongchangfirst/article/list/3 //可以看看 http://blog.csdn.net/hongchangfirst/articl ...
- [转]深入理解学习GIT工作流
深入理解学习Git工作流 字数13437 阅读2761 评论3 喜欢70 个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心 ...
- 记录我开始学习 Git的路程
工作半年多了,总觉得没学到什么东西,于是乎找了个Git学习一下,感觉还蛮厉害的样子.为此记录下我的路程 2015,11,26 更新 前面的路都挺艰难的,在官网下载msysgit网速几乎为0(心情千万只 ...
- 推荐一个可视化的学习Git的好网站:LearnGitBranching
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:推荐一个可视化的学习Git的好网站:LearnGitBranching.
- 发现一个不错的学习git的地方
Git入门:http://rogerdudler.github.io/git-guide/index.zh.html 简洁.实用.高效的学习git基本操作的方式
- 深入理解学习Git工作流(转)
个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解,于是我将这部分资料进行整理放到了github上,欢迎st ...
- [少数派]如何学习Git
用玩游戏的方式学习 Git 目录 为什么要学习 Git 怎么学习 Git Learn Git Branching 其他学习资源 用游戏的方式来学习,是一种有趣而高效的方式. 从刚接触电脑时的打字练习软 ...
- 深入理解学习Git工作流(git-workflow-tutorial)
转载:https://segmentfault.com/a/1190000002918123#articleHeader11 人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协 ...
随机推荐
- MongoDB 走马观花(全面解读篇)
目录 一.简介 二.基本模型 BSON 数据类型 分布式ID 三.操作语法 四.索引 索引特性 索引分类 索引评估.调优 五.集群 分片机制 副本集 六.事务与一致性 一致性 小结 一.简介 Mong ...
- 初探内核之《Linux内核设计与实现》笔记上
内核简介 本篇简单介绍内核相关的基本概念. 主要内容: 单内核和微内核 内核版本号 1. 单内核和微内核 原理 优势 劣势 单内核 整个内核都在一个大内核地址空间上运行. 1. 简单.2. 高效 ...
- Coins POJ - 1742
给出硬币面额及每种硬币的个数,求从1到m能凑出面额的个数. Input 多组数据,每组数据前两个数字为n,m.n表示硬币种类数,m为最大面额,之后前n个数为每种硬币的面额,后n个数为相应每种硬币的个数 ...
- SQL SERVER数据库多having 用法
举实例:查询大于500的数据,并按时间进行汇总排序 select CONVERT(VARCHAR(10),DGH,23),COUNT(*) from yxhis2017..VTBMZGHMX201 ...
- PhpSpreadsheet 导出特定格式 — 广告请款单
需求说明 最近需要实现一个导出这种格式的Excel表单,之前都有用过导出Excel的功能,但大都是表头+数据的形式,只用于获取数据,没有太多样式要求,不用合并单元格.合并居中等,也不用对每一行数据特异 ...
- 小白学 Python(3):基础数据类型(下)
人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 前面我们介绍过了数字,本篇我们接着聊另一个常用的基础数据类型:字符串. ...
- Ubuntu 重装vmtool
1. 虚拟机菜单 -> 更新虚拟机 : 2. 弹出的窗口中: 3. 拷贝红色的文件到可读写的目录: 4. 解压,运行解压出来的绿色脚本文件,一路回车:
- Api版本管理
关于SpringMVC中如何添加,这一篇说的很详细了. http://www.cnblogs.com/jcli/p/springmvc_restful_version.html 版本管理可以通过路径进 ...
- HDU 1532 Drainage Ditches(最大流 EK算法)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1532 思路: 网络流最大流的入门题,直接套模板即可~ 注意坑点是:有重边!!读数据的时候要用“+=”替 ...
- Kubernetes WebSSH终端窗口自适应Resize
追求完美不服输的我,一直在与各种问题斗争的路上痛并快乐着 上一篇文章Django实现WebSSH操作Kubernetes Pod最后留了个问题没有解决,那就是terminal内容窗口的大小没有办法调整 ...