重要概念
master head
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。在Git里,有个分支叫主分支,即分支。严格来说不是指向提交,而是指向,才是指向提交的,所以,HEAD指向的就是当前分支。
一开始的时候,分支是一条线,Git用指向最新的提交,再用HEAD指向,就能确定当前分支,以及当前分支的提交点:
1.png
每次提交,分支都会向前移动一步,这样,随着你不断提交,分支的线也越来越长:
当我们创建新的分支,例如时,Git新建了一个指针叫,指向相同的提交,再把指向,就表示当前分支在上:
2.png
从现在开始,对工作区的修改和提交就是针对分支了,比如新提交一次后,指针往前移动一步,而指针不变:
3.png
假如我们在上的工作完成了,就可以把合并到上。Git怎么合并呢?最简单的方法,就是直接把指向的当前提交,就完成了合并:
4.png
合并完分支后,甚至可以删除分支。删除分支就是把指针给删掉,删掉后,我们就剩下了一条分支:
5.png
工作区,暂存区
工作区Workspace:就是你在电脑里能看到的目录,即你代码放的那个文件夹。即时性强,对文件的所有更改都会立刻提现在这里。
版本库:工作区有一个隐藏目录,这个不算工作区,而是Git的版本库。
暂存区 Index / Stage:以后,当前对文件的更改会保存到这个区
本地仓库Repository:以后,当前暂存区里对文件的更改会提交到本地仓库
远程仓库Remote:远程仓库名一般叫。以后,本地仓库里优先于远程仓库的会被到远程仓库
7.png
8.png
下载安装
git官网下载
初始化
初始化参数
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
注意命令的参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
初始化本地仓库
SSH key生成
clone代码
.gitignore生效办法
查看各种状态
分支
更新和提交代码
一个新的文件,或改动.刚开始只存在你的工作区。当你使用的时候,Git就会缓存这个改动并且跟踪。当你使用的时候就会把你的改动提交到仓库里。
撤销
git review
代码评审使用gerrit系统,git中使用(默认是) 命令执行操作。
规则
提交reivew之前pull远程代码,保证提交以前是最新代码,有冲突需要本地合并处理。
一个单一的功能的变更放入一个commit中,提交一次reivew。
特殊情况
review没有通过怎么办?
先回到要修改的那个commit
继续修改你要改的文件。修改后缓存文件,并执行
将刚生产的变更归并到上一次变更里,继续执行
已经做了多个提交commits怎么办?
如果多个提交是相关联的,请合并这个提交为一个提交
如果review中提交了多个commits,其中一个commit没review过怎么办(包括以前某个commit中没有生成change id)?一次commit对应生成一个review, 前一个review没通过的话,后面的review 通过了也提交不了。 必须把前面一个review 弄通过,后面的review才能提交。
特别提示
如果后提示缺失commit_id,可能是前面rebase操作造成的。
Git常用命令
一般配置
登录git
创建一个文件夹
初始化git仓库
创建忽略文件
查看目录
创建文件并写入内容
如果文件不存在则会创建文件
单个>箭头表示写入, >>表示追加
查看文件内容
增加到暂存区中
增加到版本库中
查看版本
比较差异
比较的是暂存区和工作区的差异
比较的是暂存区和历史区的差异
比较的是历史区和工作区的差异(修改)
撤回内容
(如果修改了工作区的文件后发现改错了,可以用暂存区或者版本库里的文件替换掉工作区的文件)
用暂存区中的内容或者版本库中的内容覆盖掉工作区
取消增加到暂存区的内容(添加时)
//显示目录的状体 有没有添加或者修改文件
删除本地文件
删除暂存区
保证当前工作区中没有index.html
使用--cached 表示只删除缓存区中的内容
回滚版本
回滚最近的一个版本 git log
回滚到未来
分支管理
创建分支
切换分支
创建分支并切换分支
删除分支
在分支上提交新的版本
合并分支
分支的合并后显示log
在分支开发的过程中遇到其他问题需要切换其他分支
保留写好的内容在切换到主干
保留内容
在次切换分之后需要应用一下保留的内容
丢掉保存的内容
使用并丢掉
最佳分支
-有的时候开发需要合并指定的内容,而不是合并所有的提交,所以我们需要挑选最好的,自己生产版本
合并分支把树杈掰到主干上
添加远程的仓库
push -u
-u参数 upstream
连接远程仓库
查看远程仓库
删除远程仓库
安装及配置:
Ubuntu下安装:
配置用户名:
配置e-mail:
与添加有关的:
将当前目录变为仓库:
将文件添加到暂存区:
将暂存区提交到仓库:
与查询有关的:
查询仓库状态:
比较文件差异(请在git add之前使用):
查看仓库历史记录(详细):
查看仓库历史记录(单行): 或
查看所有版本的commit ID:
与撤销有关的:
撤销工作区的修改:
撤销暂存区的修改:
回退到历史版本:
回退到上个版本:
上上版本是,也可用表示,以此类推
与标签有关的:
为当前版本打标签:
为历史版本打标签:
指定标签说明:
查看所有标签:
查看某一标签:
删除某一标签:
与GitHub有关的:
先有本地库,后有远程库,将本地库push到远程库
关联本地仓库和GitHub库:
第一次将本地仓库推送到GitHub上:
先有远程库,后有本地库,从远程库clone到本地库
从远程库克隆到本地:
网站地址可以选择HTTPS协议()、SSH协议()。
如果选择SSH协议,必须将Ubuntu的公钥添加到GitHub上。见下一步
SSH Key
生成SSH Key:
生成Key时弹出选项,回车选择默认即可。
Key保存位置:
登陆GitHub,创建new SSH key,其内容为中文本
已经有了本地库和远程库,二者实现同步
本地库的改动提交到远程库:
更新本地库至远程库的最新改动:
Git常用命令
一般配置
登录git
创建一个文件夹
初始化git仓库
创建忽略文件
查看目录
创建文件并写入内容
如果文件不存在则会创建文件
单个>箭头表示写入, >>表示追加
查看文件内容
增加到暂存区中
增加到版本库中
查看版本
比较差异
比较的是暂存区和工作区的差异
比较的是暂存区和历史区的差异
比较的是历史区和工作区的差异(修改)
撤回内容
(如果修改了工作区的文件后发现改错了,可以用暂存区或者版本库里的文件替换掉工作区的文件)
用暂存区中的内容或者版本库中的内容覆盖掉工作区
取消增加到暂存区的内容(添加时)
//显示目录的状体 有没有添加或者修改文件
删除本地文件
删除暂存区
保证当前工作区中没有index.html
使用--cached 表示只删除缓存区中的内容
回滚版本
回滚最近的一个版本 git log
回滚到未来
分支管理
创建分支
切换分支
创建分支并切换分支
删除分支
在分支上提交新的版本
合并分支
分支的合并后显示log
在分支开发的过程中遇到其他问题需要切换其他分支
保留写好的内容在切换到主干
保留内容
在次切换分之后需要应用一下保留的内容
丢掉保存的内容
使用并丢掉
最佳分支
-有的时候开发需要合并指定的内容,而不是合并所有的提交,所以我们需要挑选最好的,自己生产版本
合并分支把树杈掰到主干上
添加远程的仓库
push -u
-u参数 upstream
连接远程仓库
查看远程仓库
删除远程仓库
领取专属 10元无门槛券
私享最新 技术干货