git教程

简介

Git是一个分布式版本控制系统(distributed revision control system)。

  • 分布式:每个电脑上都有一个完整版,每个电脑都可以改;
  • 版本控制系统:一个项目每天开发一点都会生成一个新的版本,版本控制系统可以在每天生成新版本的同时,还可以回退到历史版本.

安装git

在Windows下,直接下载exe文件安装即可;在Linux下,通过命令sudo apt-get install git即可安装。

创建git仓库

1. 通过初始化创建

git仓库有两种,一种是裸仓库,其中没有包含任何文件,仅仅只实现一个版本控制,文件都在本地,裸仓库仅仅只是提供一种代码的分享;另一种是非裸仓库,可以看到文件的。

# 裸仓库创建
git init --bare  xxx.git  # 创建一个xxx.git文件夹

# 创建非裸仓库
git init [directory]  # 在指定目录或者当前目录下创建一个.git目录

服务器上的git仓库只是为了分享,所以一般都是设置裸仓库,但是只有非裸仓库才可以看到提交的文件,所以本博客还是青睐非裸仓库。

2. 通过克隆已有仓库创建

除了自己创建空的git仓库外,还可以直接clone已有的仓库,细心观察发现GitHub上的克隆其实也是在克隆git目录文件

在这里插入图片描述
下面是示例:

# 克隆裸仓库
git clone user@ip_address:/home/nlp/repo_name.git
# 克隆非裸仓库
git clone user@ip_address:/home/nlp/repo_name

以上两个示例会自动在当前目录下创建仓库目录

user代表远程git服务器上的用户名,ip_address表示git服务器的ip地址(不包含端口),repo_name表示仓库的名字

配置git仓库

git的配置自上而下有三层:

  • /etc/gitconfig:系统中对所有用户都适用,使用命令为git config --system
  • ~/.gitconfig:用户目录下的配置文件只适用于当前用户,使用命令为git config --global
  • 当前项目的Git目录的配置文件在.git/config文件中
# 查看所有配置信息
git config --list
git config user.name
# 配置
git config --global user.name "xxx"
git config --global user.email "yyyy"

配置远程仓库

第一个是要配置originorigin只是一个默认的叫法,也可以自己重命名或者添加多个,他们的作用是连接远程仓库。这样在pullpush代码的时候只需要使用origin来表示远程仓库,这个在后面会有示例,这里介绍如何设置origin

# 查看origin
git remote origin -v
# 删除origin
git remote remove origin
# 配置origin
git remote add origin user@ip_address:/home/nlp/repo_name

这里和上面的克隆仓库有点类似,都是用户名加上@然后加上ip地址,冒号后面跟服务器上的仓库目录

除此之外还要配置密钥,具体步骤是通过git给每个电脑生成密钥,然后将此密钥添加到git服务器上的密钥文件中,这样才会实现基于ssh的推送和接受。

给本机生成密钥的方法是:

ssh-keygen

密钥默认会在当前用户目录下的隐藏目录.ssh中,找到id_rsa.pub,打开后(windows下可用git bash)将里面ssh-rsa后面的所有内容复制出来,拷贝到服务器上的/home/git/.ssh/authorized_keys文件里,一行一个

推送和接受代码

先接受代码,更新到最新版

# 拉
git pull origin master
# 推
git push origin master

版本控制操作

关于本地对项目的版本操作有如下六种:

1. add

添加目录或者文件,添加的位置是索引,这只是一个临时区域,永久将index中的内容存储到仓库需要通过commit提交。

# 将当前目录下所有内容生成一个快照(就是添加的意思)
git add .
# 添加一个文件
git add file1
# 添加多个文件
git add file1 file2 file3
2. status

查看本地状态,得知哪些被改变的文件可以在下个阶段提交(commit)。

3. diff

展示两次提交之间的差异,或提交与工作树之间的差异

# 查看已经添加但是没有提交的内容和仓库已有内容之间的差异
git diff --cached
4. commit

提交,并将变动记录到项目中去,需提供-m或–message参数来表示当前提交的描述

# 提交,并对当前提交提供描述信息
git commit -m "added file1"
# 快速提交(不需要add直接将修改的部分提交,不包含新建文件)
git commit -a
5. reset

将当前HEAD重置到指定的状态,从而实现版本的回退和前进。

通过git log查看历史版本后,可以发现每个版本都有一个commit ID,还有一个版本的描述文本。

实现版本的回退是根据commit id前几位来的

# 回退两个版本
git reset --hard HEAD~2
# 前进或后退到某个版本
git reset --hard 988587c  # 这里的988587c是commit ID的前几位,git会自动搜索,实现回退后再重新撤销到某个版本

所有回退和前进的历史记录,都可以通过git reflog来查看

6. rm

移除操作,从工作树和索引中移除文件

7. mv

移动或者重命名一个文件、目录或符号链接

注意服务器上如果是非裸仓库,需要执行git reset --hard才能看到提交的文件

分支和合并

1. branch
# 查看所有分支
git branch
# 创建分支experimental
git branch experimental
# 删除分支(合并过后再删除)
git branch -d experimental
# 删除分支的所有
git branch -D experimental
2. switch
# 切换分支
git switch experimental
3. merge

两个分支都对项目做了修改,最后合并的时候如果没有冲突,可以使用如下命令进行合并:

# 合并分支
git merge experimental

如果二者有冲突,Git会在冲突的地方留下标记,此时需要自行修改,然后提交。

最后输入以下命令来提交合并的结果:

gitk
4. log

查看历史版本,这个非常重要

git log
# 每个版本信息都采用单行显示
git log --pretty=oneline
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值