Git 版本控制 在 WIN 下的一些使用方法
这里记录一些 Git 在 Windows 操作系统下使用方法:
安装完毕后,先让Git 记录自己的名字:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
一、 创建版本库
在要创建版本库的文件夹空白处 右键打开菜单 选择 "Git Bash Here" 选项来打开 类似 "命令行"的窗口
确定好目录后 就可以利用 git init 把目录变成仓库
$ git init
Initialized empty Git repository in xxxxxxxxx
二、添加文件到仓库
命令 $git add <file> 添加到仓库, 然后 $git commit 提交到仓库
$git add index.php
$git commit -m "添加修改注释" //注释部分很重要 必须
三、查看状态
$git status //查看结果
$git diff //查看修改部分
四、版本回退
$git log //查看历史记录
$git reset --hard HEAD~1 //会退到历史上上1个版本
$git reset --hard xxxxxxid //会退到ID为 xxxx 的版本
$git reflog //获取 Git 上操作记录
五、撤销修改
$git checkout -- file //撤销修改 -- 前后都有空格 误删文件也可以回复
$git rm index.php //删除文件的话 得运行一遍
以上为本地部分的操作
网络部分
六、远程仓库
$git remote add origin git@github.com:xiaoyueguang/JavaScript-Libraries.git //将目前本地仓库 连接到 远程仓库上
$git push -u origin master //推送 master 分支上所有的内容到远程仓库(第一次关联的时候使用)
$git push origin master //推送 master 分支上最新的修改到远程仓库(本地修改提交后使用)
$git clone git@github.com:xiaoyueguang/JavaScript-Libraries.git //将远程仓库 创建以该仓库名的文件夹,复制内容到本地上。
$git pull origin master //拉取远程仓库上 master 分支的所有内容到本地仓库里
七、分支管理
分支是GIT非常重要的概念。每个人都会有不同的分支。
一般我都使用以下分支
master 为 主分支,是最稳定的.只有当 dev 开发分支上功能稳定的时候,合并到 master 分支上,并发布一个新版本。需要时刻同步。
dev 为 开发的分支,平时开发完成后将开发分支合并到该分支上。需要时刻同步。
issue 为 BUG 分支。修复 BUG 时创建该分支,修复完成后合并到 出 BUG 的分支上,并删除该分支。不需要时刻同步。
feature 为 开发新功能分支。完成后合并到 dev 分支上并删除。视情况而定(多人协作则时刻同步,另建分支合并上去。单人开发则无需时刻同步,直接合并到DEV分支上。)
gh-pages 为 github 主页的分支(存放主页内容)。
除此之外,每次开发新功能的时候应当创建一个新分支,完成后合并到 dev 分支上。
$git checkout -b dev //创建并切换到 dev 分支进行开发(切换分支后,本地仓库内容都会有所变化),所以要 即时保存当前工作内容 或者 提交修改
$git branch //查看所有分支,当前分支前会有 * 号
$git branch dev //创建分支
$git merge dev //合并 dev 分支到当前分支
$git branch -d dev //删除分支
$git log --graph //查看分支合并图
冲突:
有时候你开发的周期比较长,在你开发期间,团队里有人提交了 commit ,会导致远程仓库的内容和你当前本地内容不一致,这时候合并会出现冲突!
当冲突出现的时候, GIT 会把内容放到一起, 在文件里 用 <<<<<<, >>>>>>, ====== 表示出不同分支的内容。
等我们手动解决后,再利用 git add、 git commit 来完成提交。
BUG:
当出现一个急需处理的BUG后,我们应当这么做
$git stash //保存当前的工作区(可保存多次)
$git status //查看工作区
$git checkout master //跳转到出 BUG 的分支
$git checkout -b issue-101 //创建 BUG 分支
//做完相应的修改后,提交
$git checkout master //跳转到出 BUG 的分支
$git merge -m "合并分支" issue-101 //合并分支
$git branch -d issue-101 //删除 BUG 分支
$git stash list //查看工作区
$git stash apply //恢复工作区, stash内容还在
$git stash pop //恢复工作区,stash内容清空(建议采用此方法)
八、标签管理
给当前状态打个标签,以后可以方便的查看该标签的状态。
$git tag V1.0 //在当前的 commit 上 新建一个标签
$git tag -a V1.0 -m "标签状态" //指定标签信息
$git tag -s V1.0 -m "PGP签名"
$git tag //查看所有标签
$git push origin V1.0 //推送本地标签到远程仓库
$git push origin --tags //推送全部未推送过的标签
$git tag -d V1.0 //删除标签
$git push origin :refs/tags/V1.0 //删除远程标签
九、自定义 GIT
为了让 GIT 更容易使用,我们可以自定义 GIT。
$git config --global alias.co checkout // co = checkout
$git config --global alias.br branch // br = branch
$git config --global alias.ci commit // ci = commit
Git 版本控制 在 WIN 下的一些使用方法的更多相关文章
- Git版本控制与工作流
基本概念 Git是什么? Git是分布式版本控制系统,与SVN类似的集中化版本控制系统相比,集中化版本控制系统虽然能够令多个团队成员一起协作开发,但有时如果中央服务器宕机的话,谁也无法在宕机期间提交更 ...
- Git版本控制与工作流详解
这篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: 专为设计师而写的GitHub快速入门教程 git – 简明指 ...
- win下 git gui 使用教程
现在很多都有git来托管项目或者来查找资料,但是看起来操作不是很方便,现在由于win下可以直接使用git gui,让使用git变得方便,当然这只是针对日常简单的使用,如果想详细的使用,可以去参考廖学峰 ...
- 版本控制工具——Git常用操作(下)
本文由云+社区发表 作者:工程师小熊 摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码.使用分支.出现代码冲突的解决办法.紧急保存现场和恢复现场的操作.学会以后已经 ...
- WIN下Git GUI 教程
现在很多都有git来托管项目或者来查找资料,但是看起来操作不是很方便,现在由于win下可以直接使用git gui,让使用git变得方便,当然这只是针对日常简单的使用,如果想详细的使用,可以去参考廖学峰 ...
- 【GitHub Desktop】MacOS和Win下配置及简单的使用
一. GitHub介绍 1.GitHub 是为开发者提供 Git 仓库的托管服务.这是一个让开发者与朋友.同事.同学及陌生人共享代码的完美场所. 总结一下,GitHub 最大的特征是"面向人 ...
- Git版本控制使用介绍
Git是什么? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git与SVN的最主要的区别? Git是分布式的,SVN不是 Git没有一个全局的版本号,而SVN有 ...
- Qt Creator 搭配Git 版本控制
再次介绍一下Git的使用,这次是在Coding.net上部署项目的.这个是写给大作业合作的小伙伴们(我和我的A奶朋友们和某A的男朋友)看的. 安装Git 首先安装Git(msysGit) 下载地址 h ...
- Win下必备利器之Cmder
诚言,对于开发码字者,Mac和Linux果断要比Windows更贴心;但只要折腾下,Windows下也是有不少利器的.之前就有在Windows下效率必备软件一文中对此做了下记载:其虽没oh-my-zs ...
随机推荐
- wndows程序设计之书籍知识与代码摘录-封装一个类似printf的messagebox
//----------------------------------------- //本程序展示了如何实现MessageBoxPrintf函数 //本函数能像printf那样格式化输出 //摘录 ...
- HDU 1829 分组并查集
题意:有两种性别,每组数据表示是男女朋友,判断输入的几组数据是否有同性恋 思路:http://blog.csdn.net/iaccepted/article/details/24304087 分组并查 ...
- Uri.AbsoluteUri 与 Uri.ToString() 的区别
UriBuilder builder = new UriBuilder("http://somehost/somepath"); builder.Query = "som ...
- HTTP协议(缓存机制Cache)
HTTP的缓存 至于响应消息的实体,与请求消息的实体内容相似,这里只借绍下User-Agent头 User-Agent头域的内容包含发出请求的用户信息. Cache-Control头域(请求和应答通用 ...
- sscanf,sscanf_s及其相关用法
#include<stdio.h> 定义函数 int sscanf (const char *str,const char * format,........); 函数说明 sscanf ...
- python-内置函数、装饰器
本节内容:一之前课程回顾: 在书写代码的时候,先写简单的逻辑在写复杂的逻辑.概念梳理:1.函数在传递实参的时候是传递的是引用而不是从内存中重新赋相同值给形参.比如: def test(x): x.ap ...
- day15_集合第一天
1.集合体系 红色为今天所学 Collection (接口)|--List (接口) 元素有序,可以重复 ...
- bs结构socket(udp)通信
以前我所做的基于socket通信都是采用cs结构,现公司有一个项目需要在bs中反控设备,于是研究了一番,现将成果公布,方便以后查阅. 服务端: #region udp int recv; byte[] ...
- c#检测端口是否被占用
当我们要创建一个Tcp/Ip Server connection ,我们需要一个范围在1000到65535之间的端口 . 但是本机一个端口只能一个程序监听,所以我们进行本地监听的时候需要检测端口是否被 ...
- 9、java中的final关键字
/* final : 最终.作为一个修饰符, 1,可以修饰类,函数,变量. 2,被final修饰的类不可以被继承.为了避免被继承,被子类复写功能. 3,被final修饰的方法不可以被复写. 4,被fi ...

