【git】git知识梳理(一):基本操作&远程控制&分支管理
(一)基本操作:
git中所有文件一共有三个状态:已提交,已暂存,已修改。
三个工作区域:
git目录:.git文件夹,每次拷贝其实只拷贝git目录
工作目录:文件和目录都是从git目录中压缩对象数据库中提取出来的。
暂存区:是一个简单的文件,在git目录中,有时叫做索引文件。
工作流程:
1、在工作目录中修改文件
2、对修改后文件进行快照,存入暂存区
3、提交更新,将保存在暂存区的文件快照永久转存到git目录中。
获取帮助的方法:git help <verb> / git <verb> --help / man git-<verb>
工作目录中文件一共有四个状态:未追踪,未修改,已修改,已暂存。
git diff: 看已修改的和暂存的差异(也就是修改的地方)、如果看暂存的和提交的差异,要用diff --cached(--staged)
git commit -a 不经过暂存直接提交。
git rm是从暂存区移除,同时删除文件。如果只想解除追踪,不想删除文件,那么使用git rm --cached aaa.py
git reset是取消对文件的暂存,不修改工作区的内容,只是不暂存了。git reset HEAD file,其原理是回退版本。
git checkout -- file是取消对文件的修改,修改的是工作区的内容!修改成为之前一次add或者commit的状态。非常危险!非常危险!非常危险!git中,只要提交了,就总能回到这个版本!
git tag:标签,比较麻烦。
(二)远程控制:
git remote -v是查看远程库,git remote add 添加
git fetch pb, 远程库的master分支可以在本地访问了,对应的名字是pb/master,会把没有的数据拉下来,但fetch操作不涉及分支合并。
git pull origin master 如果我的分支跟踪了某个远程仓库的分支,先fetch抓取数据,然后将远端分支自动合并到当前分支。在git clone时默认本地的master分支跟踪远程仓库的master分支。
git push 如果我在推送数据之前已经有其他人推送过数据了,这时就先要fetch下来,然后合并,然后再提交。
git remote show origin 看origin仓库的详细信息。
(三)git分支:
git鼓励多次使用分支和合并,哪怕一天内分支合并多次
提交时保存一个提交对象,包含一个指向暂存快照的指针,包含作者等附属信息,包含0或多个祖先,每一次commit实际上都继承了上一个parent,
git checkout实际上是更换分支的操作,将head指针指向另一个分支,
分支实际上就是一个指针,总共只有41个字节,40个校验和,1个换行符。
切换分支的时候要注意保持工作区的清洁,也就是先提交!!!
git branch -d asd 删除分支
合并分支方法:
1、切回到master分支:git checkout master
2、与之后的分支合并: git merge hotfix
(如果是直接后代的话,那么是fast-forward,只改变指针的位置)
如果出现冲突:git status可以看到冲突的文件,直接去文件中,可以看到冲突的地方,直接修改之后再add commit就可以了。同时可以通过git mergetool调用可视化工具
可以用git branch --merged查看哪些分支在当前分支的直接上游。
远程分支:一般是 库/名字的状态 origin/master,只可读,不可写。可以推送 比如 git push origin master:master,如果要删除 可以git push origin 【空格】:master
推送操作为 git push (远程仓库名) (本地分支名):(远程分支名)
本地创建新指针 git checkout -b local1 remote1/branch1,这样也就默认跟踪了。
如果不能直接pull的话,一般要fetch下来,然后再merge,解决冲突之后再提交。
分支的衍合(rebase):
1、切换到test分支,要衍合到master上
2、git rebase master
从分支上衍合master,然后提交上去,相当于把冲突合并的事情提前做了,主人想修改,只需要直接向后快进合并就可以了。
比较复杂的情况:git rebase --onto master server client 取出 client 分支,找出 client 分支和 server 分支的共同祖先之后的变化,然后把它们在 master 上重演一遍。
衍合不应该衍合已经提交到公共仓库的对象!
【git】git知识梳理(一):基本操作&远程控制&分支管理的更多相关文章
- GIT学习笔记(3):分支管理
GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...
- git基本操作:分支管理
一.创建测试项目 1.新建GitHub仓库 在GitHub上面新创建一个仓库,用来演示分支管理,如下图所示: 点击“Create repository”按钮创建新仓库. 2.将本地仓库项目上传到Git ...
- git多人协作式开发时分支管理策略
什么是 git-flow? Git Flow是一套使用Git进行源代码管理时的一套行为规范 主分支Master 首先,代码库应该有一个.且仅有一个主分支.所有提供给用户使用的正式版本,都在这个主分支上 ...
- $ git学习总结系列(3)——分支管理
本文主要介绍git分支的概念及常用分支操作. 分支的概念 所谓分支,可以理解成一个个相互独立的工作空间,在每一个分支上的改动不会影响到其他分支的代码.git默认的分支是master分支. 试想一下这样 ...
- GIT学习之路第五天 分支管理
本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客 5.1创建与合并分支 首先创建dev分支,然后切换dev分支 $git checkout -b dev(包含创建并切换) 等价于<-&g ...
- Git使用总结(二):分支管理
1.创建分支 a.直接创建 git branch dev(分支名) b.基于某个历史版本创建分支 git branch dev HEAD 2.查看分支 git branch -av 3.删除分支 gi ...
- Git速成学习第五课:分支管理策略
Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng.com/ 通常合并分支时,如果可能用Fast forward模式,但是在这种模式下,删除分支后,会丢掉分支 ...
- 学习廖雪峰的Git教程3--从远程库克隆以及分支管理
一.远程库克隆 这个就比较简单了, git clone git@github.com:****/Cyber-security.git 远程库的地址可以在仓库里一个clone or download的绿 ...
- Git&Github基本操作与分支管理
Git的原理涉及快照流.链表.指针等,这里不作过多叙述. 1.基本操作 git init 创建一个 Git 仓库 git clone [url] 拷贝一个 Git 仓库到本地 git add [fil ...
随机推荐
- Windows Server 2012 云硬盘如何挂载
那么首先科普一下,云服务器的数据盘(也就是我们买的云硬盘)默认是脱机状态,不自动挂载的.下面来教大家win2012环境如何挂载硬盘,其实和03.08的大同小异就是入口不同了. 点击“工具”中的“计 ...
- 关于\r和\n的区别
回车和换行来源 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两 ...
- curl: (60) SSL certificate problem: unable to get local issuer certificate
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- beego——XSRF过滤
跨站请求伪造,简称XSRF,是Web应用中常见的一个安全问题. 当前防范 XSRF 的一种通用的方法,是对每一个用户都记录一个无法预知的token数据, 然后要求所有提交的请求(POST/PUT/DE ...
- Delphi 正则表达式语法(4): 常用转义字符与 .
Delphi 正则表达式语法(4): 常用转义字符与 . // \d 匹配所有数字, 相当于 [0-9] var reg: TPerlRegEx; begin reg := TPerlRegE ...
- Codeforces Round #468(div2)
A Friends Meeting 题意:有两个人在数轴上的不同位置,现在他们需要到一个位置碰面.每次每人只能向左或向右走1个单位,轮流进行.每个人第一次走时疲劳度+1,第二次走时疲劳度+2,以此类推 ...
- 杭电1023Train Problem II
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1023 题目: Train Problem II Time Limit: 2000/1000 MS (Jav ...
- C++类中成员变量的初始化总结
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- jQuery图片垂直滚动焦点图
在线演示 本地下载
- 行列转换文本处理--awk xargs 回顾
awk 数组回顾: 9.1 数组 举例:统计当前主机上每一个TCP连接状态以及每种连接状态的数目[非常实用] # netstat -tan | awk '/^tcp/{STATE[$NF]++}END ...