<Git>git学习
1.安装
分布式版本控制:工作电脑保存完整的代码,中央服务器挂了也可以使用
集中式版本控制:中央服务器挂了就凉凉
sudo apt-get install git
git安装
检测安装成功
git
2.创建版本库
新键一个目录git_test
mkdir git_test
初始化git init
git init
3.版本的创建和使用
在git_test目录下创建一个文件code.txt
touch code.txt
创建一个版本
设置邮箱
git config --global user.email '你的邮箱'
设置用户名(作者)
git config --global user.name '小黑'
增加版本文件(可以添加多个文件,一起commit)
git add code.txt
提交版本文件,后面是版本说明
git commit -m '版本1.0'
查看版本情况
git log
可以看到commit后面的版本序列号
commit 02fc1b4e2bba0d2d44485f1b0f60c425154b364e
更改code.txt后创建新版本,只是记录你相当于前一个版本的情况
git add code.txt git commit -m '版本1.1'
可以看到新的版本信息
git log
版本的回退
HEAD^:HEAD代表当前版本,一个^代表回退一个版本
HEAD~回退版本数:~1代表回退一个版本,~100回退100个版本
回退一个版本
git reset --hard HEAD^
利用版本编号commit后面的数,重新回到当前版本1.1
git reset --hard 9acd9d0fa55adb14bb0e352bb99761a4144932b1
当然用前几个编号就行,回到版本1.0
git reset --hard 02fc1b4e
4. 工作区和暂存区
电脑中的目录就是工作区,这里我们的git_test就是工作区
工作区的隐藏目录.git,而是git版本库,版本库中有个暂存区(git add--工作区进暂存区)(git commit----暂存区到版本情况)
查看修改情况
git status
只会管理暂存区的修改,没有提交的暂存区的修改不管理 (简单讲,严格按照步骤来,就没啥事情)
丢弃工作区的修改
git checkout -- code.txt
如果已经提交到暂存区了需要2步(已经ADD)
1.撤销暂存区
git reset HEAD code.txt
2.撤销工作区
git checkout -- code.txt
对比文件的不同(-代表HEAD版本,+代表工作区的文件)
git diff HEAD -- code.txt
对比2个版本的不同
git diff HEAD HEAD^
删除文件
rm code2.txt
同样可以用撤销工作区的修改,恢复文件,同样的也可以以把删除作为版本的一种
git checkout -- code2.txt

5.分支管理

主分支:master分支
创建分支:就是创建新的指针,改变HEAD的指向
查看有几个分支
git branch
创建并切换分支(原本的都存在)
git checkout -b dev

后面的操作都是在dev分支的操作(只是指针)
切换分支
git checkout master
合并分支(就是把master指针,放到这个分支这里)
git merge dev
删除分支(去掉指针)
git branch -d dev
冲突的解决(2个分支都修改了同一个文件),无法快速合并,可以手动修改在提交一个新的
查看冲突的修改情况
git log --graph --pretty=oneline

删除dev分支
git branch -d dev

2个分支不编辑同一个文件,可以进行合并,不会冲突,但是不会快速提交,会帮你合并后进行新的提交,会需要你合并的说明信息
不使用快速合并,让他进行新的提交(BUG临时分支,就不会进行快速合并,会使用这个)
git merge --no--ff -m '禁用fast-forward' dev

保存工作现场(去修复bug)
git stash
不使用快速合并修复bug,并删除BUG分支,恢复工作现场(切换回工作区)
保存工作现场列表
git stash list
恢复现场
git stash pop
6.github网站
创建仓库、

settings中绑定SSH
生成SSH
在主目录下编辑隐藏文件
vim .gitconfig
生成ssh
ssh-keygen -t rsa -C '邮箱'
查看
cd .ssh
cat id_rsa.pub
将得到的公钥放在github上

克隆项目

在Ubuntu上使用指令克隆项目
git clone git@github.com:HEKAI3-2/xiaohei.git
开发上传


本地分支跟踪远程分支
git branch --set-upstream-to=origin/dev dev
编辑新的文件,提交不推送

可以查看跟远程分支的比较情况,并推送

从远程分支上拉取代码
git pull origin dev
实际使用git

<Git>git学习的更多相关文章
- Git 学习看这篇就够了!
Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 可能新手会问"git和github有什么关系啊?" git是一个版本控制工具: githu ...
- Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- git学习之branch分支
作为新手,站在我的角度肤浅的来理解,分支就是相当于开辟了一个新的临时工作区,在这个工作区进行文件代码改动,然后在合并到master主工作区,这样能保证主工作区的安全性和稳定性,对于团队协作尤为重要. ...
- git学习手册
#git学习手册 git: Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.[2] Git 是 Linus Torvalds 为了帮助管理 Linux内核开发而 ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- Git学习笔记(四)
一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...
- git 学习笔记6--remote & log
git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...
- Git学习(4)基本操作
1.版本提交 首先,接着上个Git学习(3)继续 我们先修改test.txt文本内容,增加一些信息进去,然后保存: Add a new data 第一步:运行命令 git status 命令查看文件是 ...
- git学习(这个我没有整理,是我不断在学习的过程中,自己总结的,对象是我,不过有问题的,我们可以相互交流)
每次git提交,都会有一个parent指针,指向上一次的commit , 如果合并,master就和hotfix河道一起,就直接删除hotfix就OK 此时,虽然操作一样,大底层实现不一样 ...
- git学习笔记01-git最基本的工作原理分布式
git学习的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 --廖雪峰老师 ...
随机推荐
- 8.Jmeter 快速入门教程 -- 如何使测试脚本更强大
添加基本的elements例如Sampler 或者一些监听器,就可以完成基本的测试.但有时需要更复杂的测试场景,所以还有更多其他的元素.清看下表,了解各种单元组的用途. 可添加的单元组 用途 Sa ...
- Xshell与securecrt对比
一.功能对比1.Xshell功能- 支持布局切换- 可调整Script执行顺序- 提供多标签功能- 对linux支持度高- 支持IPv6- 全球用户的多语言支持- 支持用户定义的键映射- 灵活和强大的 ...
- datetime中strptime用法
import datetime day20 = datetime.datetime.strptime('2020-01-01 0:0:0', '%Y-%m-%d %H:%M:%S')nowdate = ...
- 出现异常: 非介入式客户端验证规则中的验证类型名称必须唯一。下列验证类型出现重复: required
在将web.config文件中的<add key="ClientValidationEnabled" value="false" /> 设为fals ...
- Input标签文件上传,使用详解
1.html添加标签按钮 <button ion-button (click)="selectVideo()">添加</button> <input ...
- ASE: CODEnn Reproduce
Background 第二次结对编程的任务是挑选一个用自然语言搜索相关代码片段的模型实现,并且可以提出自己的想法改进.这个任务很cool,前期做了不少调研.使用自然语言搜索相关代码片段现在是个很受关注 ...
- ChainMap & python args parse
python的内建模块ChainMap可以把一组dict串起来并组成一个逻辑上的dict.ChainMap本身也是一个dict,但是查找的时候,会按照顺序在内部的dict依次查找. 什么时候使用Cha ...
- 神奇的Android Studio Template(转)
转自:http://blog.csdn.net/lmj623565791/article/details/51592043 本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台 ...
- matlab 生成.exe文件 转
本文链接:https://blog.csdn.net/qq_20823641/article/details/51863737 如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程 ...
- Tomcat 配置访问限制:访问白名单和访问黑名单
最近公司的阿里云服务器上配置的 Tomcat 服务器运行 java的环境,但是通过观察 Tomcat 这几天的日志发现,有很多莫名其妙的 IP 访问主机下莫名其妙的地址,如:/80./testprox ...