版本管理_git
git
世界上最好的版本管理工具,分布式版本控制系统。
林纳斯-托瓦斯,自由主义教皇(git、linux)
git 不管理空文件夹
对比于 SVN

mkdir XX 创建一个空目录 XX 指目录名
pwd 显示当前目录的路径
cat xx 查看 xx 文件内容git rm xx 删除 xx 文件 之后要 commit
git init 把当前的目录变成可以管理的 git 仓库,生成隐藏的 .git 文件夹
git add xx 把 xx 文件添加到暂存区
git commit -m "xx" 提交文件 -m 后面的是注释
git status 查看仓库状态
git log 查看历史记录
git reset --hard HEAD^ 往上回退一个版本
git reflog 查看历史记录的版本号 id
git checkout -- xx 把 xx 文件在工作区的修改全部撤销
git remote add origin https://github.com/xxxxx/a.git 关联一个远程库
git push -u origin master 把(第一次要用 -u,以后不用)当前 master 分支推送到远程库
git clone https://github.com/xxxxx 从远程库中克隆
git checkout -b dev 创建 dev 分支 并切换到 dev 分支上
git branch 查看当前所有的分支
git checkout master 切换回 master 分支
git merge dev 在当前分支合并 dev 分支
git branch -d dev 删除 dev 分支
git branch xxx 创建分支 xxx
git remote 查看远程库信息
git remote -v 查看远程库的详细信息
git pull origin master 将远程库的更新拉取到本地来
git push origin master git 会把 master 分支推送到远程库对应的分支上
- 安装:

- 配置环境变量
- Git 环境的默认路径是通过 HOME 环境变量还指定的
- Git 的全局配置文件默认在系统用户 home 目录下(如:C:\Users\Administrator,此处Administrator为当前登录用户名)
- 分别打开 Git 安装目录下的 cmd 目录下的 gitk.cmd 文件和 etc 目录下的 profile 文件

- HOME ---- %HOMEDRIVE%%HOMEPATH%
- HOMEDRIVE ---- C:\
- HOMEPATH ---- \Users\Administrator
- SystemRoot ---- C:\WINDOWS
- windir ---- C:\WINDOWS
- USERPROFILE ---- C:\User\Administrator
- bash 配置:
git config --global user.name 'RyenToretto'
git config --global user.email '18273727925@qq.com'
git config user.name
git config user.email
- 基本操作


git status 查看当前项目状态
- 分支链接
git remote 不带参数,列出已经存在的远程分支

git remote -v 等同于上图命令
git remote add kjf git://github.com/paulboone/ticgit.git 创建一个别名 kjf 代替 长串的地址
git fetch kjf 抓取所有 kjf 有的,但本地仓库没有的信息,字串 kjf 指代对应的仓库地址
- 内容差异对比
git diff 工作区 与 暂存区 的文件之间的差异对比

git diff --cached 版本区 和 暂存区 文件之间的差异对比
git diff master 工作区 和 版本区 文件之间的差异对比
- 日志 和 版本
git log 日志 和 版本号,HEAD 表示当前正在使用的分支,还有每次提交的哈希值
git reflog 精简版的 日志 和 版本
- 版本回退
git checkout -- index.html 用暂存区指定文件替换工作区的指定文件 (危险)
git checkout HEAD index.html 用版本库中的指定文件替换 暂存区和工作区 的文件 (更危险)
git rm --cached index.html 删除暂存区的指定文件
git reset --hard HEAD 把暂存区清空,然后把版本库中的内容 copy 到 暂存区
git reset --hard HEAD^ 回退到最近一次的版本
git reset --hard 70d1707 回退到指定的 70d1707 版本

- 删除被 git 管理的文件
git rm -rf a.txt
git rm -rf test
- 分支(常见面试题)
git branch -d tags 删除指定分支
git checkout -b tags 新建分支(拷贝自主分支),并切换到分支
git checkout master 切换到 主分支 master (由 .git 切换项目文件)
git checkout tags 切换到 tags 分支 (由 .git 切换项目文件)
git branch 显示 所有分支 和 区别出 当前分支
git diff tags master 显示 tags 分支 和 主分支 master 的有差异文件的 文件内容差异
git diff master tags 显示两个分支之间,有内容差异的文件列表
git diff master tags a.txt 显示 tags 分支 和 主分支 master 指定文件的 文件内容差异
git merge tags (在目标分支执行) 将 tags 分支合并到 目标分支____可能引发冲突(同一文件同一位置内容冲突)
如果产生冲突,会显示 (master | MERGing)
冲突文件如下显示

处理完成以后,正常操作提交,会发现 (master | MERGing) ----> (master)
- 局域网服务器,项目版本控制
git init 初始化一个仓库(最好在一个空文件夹下面执行初始化仓库)____线下仓库
编码并提交,然后在 GitHub 新建一个仓库,复制新仓库的地址
git remote remove origin 删除地址别名 origin
git remote add origin https://github.com/RyenToretto/taobao.copy.git 创建一个别名 origin 代替 长串的地址
git push -u origin master 托管上线到 GitHub
git pull origin master 拉取 GitHub 上的代码到本地
ssh-keygen -t rsa -C '18273727925@qq.com' 生成密钥

GitHub
git 项目托管网站

冲突: 同一文件的同一位置,内容出现冲突
处理:(pull 会把远端内容拉取,可能进行自动合并的操作,产生冲突)
第一种方式:
git pull -u origin master 拉取 GitHub 的文件内容到本地,出现冲突
处理冲突文件
git add .
git commit -m '处理 xxx 的冲突'
git push -u origin master
第二种方式:
git fetch origin master:tmp 将 GitHub 的文件内容拉取到 tmp 分支上
git checkout tmp 切换到 tmp 分支
git diff tmp master 显示 tmp 分支 与 master 分支的 文件内容差异
- pull 和 fetch 的区别:
git pull origin master
将远程仓库的 master 分支上代码版本 复制/合并 到本地 master 分支上
git fetch origin master:dev
新建了一个 dev 分支,将远程仓库的 master 分支上代码版本复制到 dev 分支上
就一定不会产生冲突
git diff master dev 对比两分支内容,观察会不会产生冲突
如果会,先解决,在合并分支。如果不会,就直接合并分支
忽略文件(.gitignore 这个配置文件本身 是需要被提交 给 git 进行管理的)
直接在项目文件夹中创建 .gitignore 并设置忽略文件
.idea
node_modules
WebStorm 处理冲突
add
commit
pull ----> ok 等待交互后,发现冲突,点 merge
----> apply
push 最终推送成功
Fork & Pull Request & Create Pull Request ----> Merge Request
版本管理_git的更多相关文章
- linux系统下使用流行的版本管理工具 Git
前几天被版本管理困扰了好久,主要是因为 没法回到之前的版本,新版本又出了问题真的很尴尬. 终于决定使用目前网上很火的版本管理工具-------Git 历史啥的就不说了,说些有用的. 我用的是oschi ...
- 版本管理工具svn简介
svn简介 SVN是一种C/S架构的版本管理软件 , 能够帮助我们保存开发过程中各个文件的所有历史版本, 你因此可以方便的找回软件的任何一个历史状态., 日常开发中经常用到. 安装使用 1. 在 u ...
- Git 版本管理的简单理解
来源:百度知道 现在使用Git版本管理代码的项目非常多.但是Git本身是一条复杂的系统.我从几个简单的点来说明Git的基本功能.希望能帮助初学者快速入门. 工具/原料 Git code dot j ...
- GIT版本管理工具
原文:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介 ...
- MacOS下Python的多版本管理(pyenv)
与windows下设置绝对路径不同,pyenv使用了一种更优雅的方式来管理Python的版本.pyenv通过在$PATH的最前面插入一个垫片路径(shims),例如:~/.pyenv/shims:/u ...
- 版本管理-SVN本地版本管理
0. 引言 使用工具是人与动物的基本区别,善用工具可以极大的提高效率,降低错误率.在PC软件领域,有很多好用的工具,这些工具都是软件工程重要的基础设施.然而,嵌入式开发,在其代码数量上,很多时候由于没 ...
- [BI项目记]-配置Sharepoint2013支持文档版本管理笔记
做开发或者做方案,写文档是很重要的一个工作,我们经常需要知道文档被修改的次数,谁在什么时间修改的文档,以及在某一个版本中,都修改了哪些内容,以及不同版本的文档之间有什么差别. 如何对文档进行版本管理, ...
- [BI项目记]-文档版本管理笔记
代码的版本管理程序员们有专门的工具,那么作为项目管理人员如何进行文档版本的管理呢,此篇介绍如何通过SharePoint进行文档版本管理. 在没有SharePoint的时代我们如何管理版本呢?通常我们会 ...
- 目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?以及Github的注册过程
一.目前流行的源程序版本管理软件和项目管理软件有Microsoft TFS.GitHub.SVN.Coding等. 二.各有什么优缺点 三.在GitHub注册账户的过程 Microsoft TFS的优 ...
随机推荐
- [再寄小读者之数学篇](2014-06-22 发散级数 [中国科学技术大学2012年高等数学B考研试题])
设 $a_n>0$, $S_n=a_1+a_2+\cdots+a_n$, 级数 $\dps{\vsm{n}a_n}$ 发散, 证明: $\dps{\vsm{n}\cfrac{a_n}{S_n}} ...
- js实现可输入的下拉框
<HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=gb2312'> ...
- 玩转ubuntu之初体验
安装的是ubuntu16.04.1,分区和具体细节就不多说了,非常简单 安装完之后要做的几件事: 1.设置root密码 #设置root密码 sudo passwd root 2.检查并更新系统 #ub ...
- 《尚学堂_史上最易懂的设计模式视频》--章节3 Iterator迭代 模拟列表
广州尚学堂官网-|广州Java培训|Java培训机构|人工智能+Python培训|PHP培训|全栈工程师培训|UI设计培训|前端移动开发培训http://www.gzsxt.cn/ ==Iterato ...
- 第四节,目标检测---YOLO系列
1.R-CNN回顾 适应全卷积化CNN结构,提出全卷积化设计 共享ResNet的所有卷积层 引入变换敏感性(Translation variance) 位置敏感分值图(Position-sensiti ...
- 简单对比git pull和git pull --rebase的使用
使用下面的关系区别这两个操作:git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase 现在来看看git m ...
- PHP content-type为"application/json"的post过来的数据$_POST接受不到的问题
ajax默认是以application/x-www-form-urlencoded方式提交.也就是常见的表单提交方式.在PHP中使用$_POST方式可以轻松获取. 但如果将ajax的请求头强制指定为a ...
- 洛谷P3348 [ZJOI2016]大森林 [LCT]
传送门 刷了那么久水题之后终于有一题可以来写写博客了. 但是这题太神仙了我还没完全弄懂-- upd:写完博客之后似乎懂了. 思路 首先很容易想到\(O(n^2\log n)\)乘上\(O(\frac{ ...
- 调用脚本的方式自动的创建或者是更新oracle数据库自带的Seq序列号的值
执行脚本: CREATE OR REPLACE PACKAGE PKG_QUERY IS -- Author : ADMINISTRATOR -- Created : 2016/12/8 星期四 10 ...
- Python 八皇后问题
八皇后问题描述:在一个8✖️8的棋盘上,任意摆放8个棋子,要求任意两个棋子不能在同一行,同一列,同一斜线上,问有多少种解法. 规则分析: 任意两个棋子不能在同一行比较好办,设置一个队列,队列里的每个元 ...