Git的基本使用

本文详细介绍了Git的下载、配置SSH公钥、日常操作、分支管理、文件提交、版本回滚、合并分支及解决代码冲突的流程。通过实例展示了如何使用Git进行代码版本控制,包括创建新分支、切换分支、合并分支以及如何处理合并时的代码冲突。此外,还讲解了如何应对`git pull`和`git push`的错误情况。
摘要由CSDN通过智能技术生成

Git

Git是一个免费的开源分布式版本控制系统,它可以快速高效地处理从小型到大型的项目。简单点说就是:git分布式版本控制工具(管理代码版本)。我们常用的Git平台有:Gitee(码云)、GitLab、GitHub等。

1、下载Git

这里提供Git下载地址:https://git-scm.com/downloads

2、Gitee配置SSH公钥

  • 注册(用邮箱注册),并登录到Gitee后,鼠标移至右上角头像,下拉选项中选择 设置
  • 左侧菜单栏中选择SSH公钥,在右侧添加公钥
  • 怎么生成本机的公钥?请查看:https://gitee.com/help/articles/4181

3、Git日常操作

克隆代码 (把远程仓库拉取到本地):git clone 仓库地址

查看仓库状态: git status

提交工作区代码到暂存区: git add 文件路径或者**.(所有文件)**

**提交暂存区代码到历史记录区:**git commit -m ‘本次提交的信息提示’

**提交历史记录区的历史提交记录到远程仓库:**git push origin 分支名称

注意点

git提示的信息里面只要有fatal 或者error这两个词随便一个,都是执行git命令失败了

4、创建项目与分支

在gitee中创建项目(例如创建了 demo0630 这个项目),执行以下命令:

// 克隆仓库到本地
git clone git@gitee.com:codesohigh/demo0630.git

// 检查当前分支
git branch

一般此时是master分支,但我们开发阶段一般用dev等其他分支,所以我们:

git checkout -b dev

// git checkout 命令加上 -b 参数,表示创建并切换,以上操作相当于:
git branch dev
git checkout dev
  • 第一个注意的点:

在仓库没有初始化前,如果需要检查分支,一定要记住这句话:

未曾commit的仓库是无法检查分支的!

  • 第二个注意点:

实际上git checkout 不是切换分支的最佳选择,我们使用git switch 会更好:

git switch -c dev   // 创建并切换到新的dev分支

git switch dev		// 切换到已有的dev分支

5、文件提交

创建 index.js 文件,随便写点内容,提交:

git add .
git commit -m '修改了index.js'
git push origin dev

此时你会发现,git checkout master 切回master分支后,index.js这份文件会消失,因为当前分支不存在这个文件。

6、分支合并

假设当前项目已经完成,我们想要把dev分支合并到master,可以在master分支下使用:

git merge dev

此时,你会看到,项目中又有 index.js 了。

7、版本回滚

使用 git switch -c dev1 创建新的dev1分支,稍微修改dev1中的index.js,并且提交到远程仓库。

我们提交完成后,发现自己不想用当前代码,想回滚到上一次的代码,怎么办呢?

// 查看当前项目提交过的所有版本(含所有分支的操作)
git log

// git log会出现很详细的信息,如果我们只想简单看看版本号,可以使用
git log --pretty=oneline

我们会得到:

b2ff1beb92bd3ac425dac2fa519d4b8191438be9 (HEAD -> dev1) '123456'
c9efd011b471765fc9fdd6eefaadf75b3b36153b (origin/dev1) '12345'
80f6cb77a9b13cd471b725b5ef66901150bf57bb '提交'
47d676dbf6d0687d76f059ee9ed044c4c378ed30 (origin/master, origin/HEAD) 'dev1的首次提交'
d5c756afd04abfdbc9bb2299064eab34b30ede5f (origin/dev, dev) '修改了index.js'
65f4c72f6c8e2c272d4e284c103e249c65ebff32 Initial commit

如果我们只想回滚到指定版本,可以使用:

git reset --hard c9efd

这里只需要写id号的前几个字母与数字就行,没必要全写,git会自动去检索。

但此时,我们再一次查看所有版本,发现:

c9efd011b471765fc9fdd6eefaadf75b3b36153b (origin/dev1) '12345'
80f6cb77a9b13cd471b725b5ef66901150bf57bb '提交'
47d676dbf6d0687d76f059ee9ed044c4c378ed30 (origin/master, origin/HEAD) 'dev1的首次提交'
d5c756afd04abfdbc9bb2299064eab34b30ede5f (origin/dev, dev) '修改了index.js'
65f4c72f6c8e2c272d4e284c103e249c65ebff32 Initial commit

最新写的那个丢失了。但我此时又后悔了,怎么办?

// 重新reset即可找回
git reset --hard b2ff1

现在,就可以退回最新版本了。

但这个方法前提是你当前这个控制台不曾关掉,如果已经关掉了,你是没法知道版本号的,这时候要怎么办呢?

// Git提供了一个命令git reflog用来记录你的每一次命令
git reflog

8、代码冲突

修改master的代码,执行:

git add .
git commit -m '提交master'

然后执行:

git merge dev

我们会发现,vscode提示代码冲突:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MczNYEkh-1648104442606)(assets/03.png)]

此时,我们只需要点击我们想要的选项,即可解决代码冲突。

合并分支

初始化
git init

git add . //将文件提交到暂存区
 
git commit -m “first commit” //将文件从暂存区提交到本地仓库

git remote add origin your_first_git_address //链接到远程仓库
 
git push  origin master //提交到远程仓库

链接到另一个仓库
git remote add Mars your_second_git_address //将第二个git address命名为Mars
 
git push  Mars master //再次push到远程仓库

更新远程仓库分支信息
git fetch
git fetch origin

git checkout dev //新建并切换分支(如果有就直接进入)

git pull origin dev //拉取分支

git merge dev  //合并分支

如果合并失败,出现这个报错 fatal: refusing to merge unrelated histories
原因:两个分支没有取得关系

解决方法:在操作命令后面加--allow-unrelated-histories

例如:
git merge dev --allow-unrelated-histories

进入 (dev|MERGING)分支,对两个分支之间出现冲突的地方进行修改

git add .
git commit -m '合并分支'



pull和push报错:

如果你是`git pull`或者`git push`报`fatal: refusing to merge unrelated histories`
同理:
`git pull origin master --allow-unrelated-histories`

后面加上 --allow-unrelated-histories , 把两段不相干的分支进行强行合;这里可能会进入一个编辑页面,只需要先ESC,然后敲:q! 即可

命令

git remote -vv  //查看当前已经关联的所有仓库

git init : 本地初始化(初始化git环境), 这个会生成一个.git目录

git add : (把工作区的改变提交到暂存区)

git commit : (暂存区的内容提交本地仓库)

git push origin 分支: (把本地仓库提交远程仓库)

git clone 仓库地址(https或者ssh): 克隆仓库

配置ssh公钥:  ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  把生成好的公钥.pub结尾的文件内容复制到对应网站上

git fetch origin 分支: 同步远程仓库的分支信息

git pull origin  分支:更新本地仓库的某一个分支的代码 (相当于 pull = fetch + merge)

git switch 分支;  git checkout 分支; : 切换分支

git switch -c 分支;  git checkout -b 分支: 创建分支

git branch -a : 查看本地仓库的所有分支

git status: 查看仓库的状态

git log: 查看提交(commit)的信息

git commit --amend: 修改提交信息

git reset --hard commitid: 回退指定版本

git reset --hard HEAD   //用来撤销还没commit 的merge,其实原理就是放弃index和工作区的改动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值