git小指引
来源:互联网 发布:开淘宝网店的流程2016 编辑:程序博客网 时间:2024/06/05 09:50
git是一名开发工程师的必备技能之一。这可以说是入门或指引式的,后期会继续完善和补充。
git是一个分布式的版本控制系统,两个关键字,分布式和版本。首先说说什么是版本,打个简单点的例子。比如一个文件F,A作者开始写,变成了F’, 然后B又在文件F上修改,变成了F”。可以简单地理解F’和F”是两个版本。至于分布式?我的理解是,A作者修改文件F变成了F’ F” F”…. 而B作者修改文件F变成了F1 F2 F3… 两个作者的修改可以独立进行 互不影响。
A作者修改的文件的地方,称之为工作区。改完以后会把这个修改结果保存到一个地方叫暂存区,暂存区的东西感觉可以了,就把这个作为一个版本比如F’ 保存起来。
下面将以下工作流:
A作者想要把一个文件夹下面的东西通过版本管理工具管理起来:
git init
然后对文件F进行了修改,通过运行命令git add . 把修改结果保存到暂存区;通过git commit -m “ 保存修改F’ ”把修改结果提交为一个版本F’。
提交的时候想改以下作者的信息等信息,可以通过git config –global的命令进行配置这些信息。这些信息最终是保存到用户目录的一个.git之类的文件当中。
提交的时候想给这个版本加点说明是通过git commit -m ‘版本说明’的方式进行的。
提交完以后想要看一下提交的记录:git log…
发现提交的东西写错了,重新改一下:git reset –hard [某个版本]
有些东西不想用版本管理: 创建一个.gitignore文件 把不要管理的文件路径放进去
想查看上一次提交和这次提交的区别:git diff
这个时候A作者想着让B作者帮忙改这个文件F,但是A作者不想自己的东西被影响: git checkout [branchA] 创建一个分支B,让作者B的改动的版本都放在分支B里面。
分支是什么?你可以想象一棵树,树根都是文件A,但是可以生成多个树枝,每个树枝都可以长的不一样。每个树枝都有一个叶子,作者A可以继续在这个叶子后面的树枝上长不同的叶子。。
ok…
已经比喻不下去了…
git理解起来说复杂,其实也简单。本质上,每一次提交都会生成一个文件,这个文件包含的你的修改内容的信息和提交的作者的信息。比如是作者A在某年某月修改了第20行和第30行的第几个字等等。然后每次改一次都生成一个提交记录文件。在计算机内存中,是始终有一个所谓的HEAD指针指向这个提交记录的。
版本管理必然是要操作各个版本的,比如恢复某个版本等等,就是将HEAD指针指向那个要恢复的版本,具体底层是怎么实现的呢?我们可以不关系。就是HEAD指针移到那个那位置(git reset –hard [提交版本号]),然后本地的(工作区)文件就变成了那个版本的状态了。
还有什么git rebase。。什么命令什么的?这个命令相当于是说要把作者B改的东西(提交版本)应用在作者A的文件上。
两人修改文件必然会产生冲突,冲突的解决,git无法自动完成,因为它不知道你具体要改成的结果是什么。这个只要你自己把需要的留下把不要的删除就是了。
一般会有
》》》》》HEAD
作者A改的东西
作者B的东西
《《《《 版本2
改成比如:
作者B的东西
就行了。
至于其他命令:
git checkout -b feature/branchA 切换到feature/branchA分支
git reset –hard [123124] 回到123124版本
git checkout [相对于工作区的文件路径] 将暂存区的修改恢复
至于云端的版本。其实本质上和本地的作者A的分支和作者B的分支没啥区别。当你git push master origin/master的时候,其实是把你本地的master分支各个修改版本应用到远程origin/master分支上。
如果疏漏,欢迎指正。
- git小指引
- git 修改url 指引
- GIT使用指引
- Git 基础命令操作指引
- git入门及常用操作指引
- 小试git-svn
- 小团队git组建
- git 小技巧
- git小技巧
- git 使用小技巧
- git小抄[ZZ]
- Git小技巧
- git小技巧
- 小姿势--Git
- git 小tips
- git小常识
- git 基本小用
- 小团队Git实践
- Java基础(一)基本数据类型
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
- 华为机试-取近似值
- mariadb卸载带来的mysql安装问题&yum指令学习
- 搭建热情samba文件服务器
- git小指引
- Function类型——ECMAScript
- 鸟哥的私房菜Linux 学习笔记之 Bash语法
- leetcode 119. Pascal's Triangle II
- quick 添加 GAF
- python设计模式之装饰器模式
- IO流 整理
- java 五子棋
- JUnit单元测试