Git入门及常用命令

Git分布式版本控制工具

1. Git概述

1.1 Git历史

Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。

他们对新的系统制订了若干目标:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
    image
1.2 Git与SVN对比

image

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。

集中式版本控制工具缺点:

  • 服务器单点故障
  • 容错性差

image

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS) ,分为两种类型的仓库:
  • 本地仓库
  • 远程仓库

本地仓库:是在开发人员自己电脑上的Git仓库
远程仓库:是在远程服务器上的Git仓库
Clone:克隆,就是将远程仓库复制到本地
Push:推送,就是将本地仓库代码上传到远程仓库
Pull:拉取,就是将远程仓库代码下载到本地仓库

image

1.3 Git工作流程
GIT 中的一些概念
  • 工作区(Workspace):是电脑中实际的目录。
  • 暂存区(staging): 类似于缓存区域,临时保存你的改动。
  • 仓库(Repository): 本地仓库(Local Repository): 在当前计算机上存储项目文件信息.
  • 远程仓库(Remote Repository): 在远程服务器上存储项目文件信息.
工作流程如下:
  • 1.从远程仓库中克隆代码到本地仓库
  • 2.从本地仓库中checkout代码然后进行代码修改
  • 3.在提交前先将代码提交到暂存区
  • 4.提交到本地仓库。本地仓库中保存修改的各个历史版本
  • 5.修改完成后,需要和团队成员共享代码时,将代码push到远程仓库

image

1.4 Git下载与安装

下载地址: https://git-scm.com/download
image

下载完成后可以得到如下安装文件:
image

双击执行
image

安装成功后,在任何目录下,右键有以下菜单说明安装成功:
image

2. Git代码托管服务

2.1 常用的Git代码托管服务

前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。

gitHub( 地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub

码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快

GitLab (地址: https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务

2.2 在码云注册账号

要想使用码云的相关服务,需要注册账号(地址: https://gitee.com/signup

2.3 登录码云并创建Git远程仓库

注册完成后就可以使用刚刚注册的邮箱进行登录(地址: https://gitee.com/login

登录成功后就可以创建Git远程仓库
image

创建完成后可以查看仓库信息
image

每个Git远程仓库都会对应一个网络地址,可以点击克隆/下载按钮弹出窗口并点击复制按钮获得这个网络地址
image

我们当前创建的Git远程仓库对应的地址为:https://gitee.com/Ybbit/mall-project.git

2.4 邀请其他用户成为仓库成员

前面已经在码云上创建了自己的远程仓库,目前仓库成员只有自己一个人(身份为管理员)。在企业实际开发中,一个项目往往是由多个人共同开发完成的,为了使多个参与者都有权限操作远程仓库,就需要邀请其他项目参与者成为当前仓库的成员。

image

3. Git常用命令

3.1 环境配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息

设置用户信息

git config --global user.name "qbbit"

git config --global user.email "startqbb@163.com"

查看配置信息

git config --list

git config user.name

通过上面的命令设置的信息会保存在~/.gitconfig文件中

3.2 获取Git仓库

要使用Git对我们的代码进行版本控制,首先需要获得Git仓库

获取Git仓库通常有两种方式:

在本地初始化一个Git仓库

从远程仓库克隆

3.2.1在本地初始化一个Git仓库

执行步骤如下:

    1. 在电脑的任意位置创建一个空目录(例如repo1)作为我们的本地Git仓库
    1. 进入这个目录中,点击右键打开Git bash窗口
    1. 执行命令git init

如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
image

3.2.2从远程仓库克隆

可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地

命令形式为:git clone 远程Git仓库地址
image

3.3工作目录、暂存区以及版本库概念

为了更好的学习Git,我们需要了解Git相关的一些概念,这些概念在后面的学习中会经常提到

版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等

工作目录(工作区):包含.git文件夹的目录就是工作目录,主要用于存放开发的代码

暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方

3.4 Git工作目录下文件的两种状态

Git工作目录下的文件存在两种状态:

untracked 未跟踪(未被纳入版本控制)

tracked 已跟踪(被纳入版本控制)

    Unmodified 未修改状态

    Modified 已修改状态

    Staged 已暂存状态

这些文件的状态会随着我们执行Git的命令发生变化
image

image

image

image

image

环境配置
设置用户信息
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
查看配置信息
git config --list
git config user.name
验证邮箱
git config --global --list
获取Git仓库
当前目录新建一个Git代码库
git init
从远程克隆
git clone 远程Git仓库地址
git clone -b 分支名  远程Git仓库地址
显示所有远程仓库
git remote -v
添加远程仓库
git remote add 名称  url地址
git remote add origin git@github.com:XXX/XXX.git
移除远程仓库 - 只是在本地移除记录,并不会影响远程仓库
git remote rm  名称 (一般是origin)
从远程拉取代码
git pull 名称 (一般是origin) 分支名 (master分支)
git pull 名称 分支名 --allow-unrelated-histories
本地推送到远程仓库
git push 名称 (一般是origin) 分支名 (master分支)
# 第一次提交
git push -u origin 分支名
# 需要输入用户名和密码
 输入你的用户名和密码即可...
# 解决连接远程仓库出现ssl认证问题
$ git config --global http.sslVerify "false"
测试一下通不通
ssh -T git@github.com
增加/删除/提交文件
添加指定文件到暂存区,如果是多个文件,使用空格分隔
git add 文件 文件 ...
当前目录及其子目录的文件都加入到暂存区
git add .
将暂存区文件取消暂存
git reset 文件
回退到上个版本
git reset --hard HEAD^
回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard HEAD~3
退到/进到 指定commit的sha码,编码ID可在历史记录里查看
git reset --hard 编码ID
代码提交,提交暂存区到仓库区
git commit -m "【feat|fix|modify|pref|...】: 描述信息"
删除文件
git rm 文件
查看信息
查看文件状态
git status
查看文件修改哪些内容
git diff
查看日志记录
git log
查看当前分支的版本历史
git log
搜索提交历史,根据关键词
git log -S 关键词
显示指定文件是什么人在什么时间修改过
git blame 文件
显示今天你写了多少行代码
git diff --shortstat "@{0 day ago}"
显示当前分支的最近几次提交
git reflog
显示所有提交过的用户,按提交次数排序
git shortlog -sn
将文件添加至忽略列表

在工作目录下创建.gitignore的文件(名字是固定的)
列出要忽略的文件模式,下面的例子:

忽略.a结尾的文件

*.a

!是取反,不忽略lib.a文件,lib.a文件除外进行忽略。

!lib.a

忽略DI这个文件名文件

/DI

忽略build目录下的全部文件

build/

忽略doc目录下的以txt为后缀的文件

doc/*.txt

/**/ 代表是多层目录,忽略doc目录下全部的以txt为后缀的文件

doc/**/*.txt

Git分支
查看本地分支
git branch
查看远程分支
git branch -r
查看远程全部分支
git branch -a
创建分支
git branch 分支名
切换分支
git checkout 分支名

将本地分支推送到远程仓库

git push orighn 分支名
合并分支
git merge 分支名
# 例子:将b分支合并到a分支下
$ git checkout a
$ git push orighn b
删除分支
git branch -b 分支名
强制删除
git branch -D 分支名
删除远程仓库分支
git push orighn -b 分支名
代码冲突解决
打开冲突文件并修复冲突内容,最后执行git add命令

# 三板斧
git pull ->> git commit ->> git push
Git标签
创建标签
git tab 标签名
查看标签
git tab
查看信息
git show 标签名
将当前标签推送远程仓库
git push origin 标签名
检出标签 - 在新的基础上创建新的分支再进行开发
git checkout -b 新的分支名 标签名
删除本地标签
git tag -d 标签名
删除远程仓库标签
git push origin :refs/tags/远程仓库标签名
生成公钥

生成 sshkey

ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

生成的路径是:  C:\Users\xxx\.ssh

把 id_rsa.pub 文件里的内容保存到远程仓库中的SSH公钥中,

执行 git pull origin master 就可以拉取代码
posted @   我也有梦想呀  阅读(241)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示