首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Git基本及常用命令

重要概念

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

连接远程仓库

查看远程仓库

删除远程仓库

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180312G0ORAR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券