Git 常用指令(分支、克隆、远程仓库、冲突)

Git 常用指令

用树的形式对代码的历史版本进行维护,有利于多人协作与代码回滚。

1. 基本概念

  • 工作区:仓库的目录。工作区是独立于各个分支的。
  • 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。
  • 版本库:存放所有已经提交到本地仓库的代码版本
  • 版本结构:树结构,树中每个节点代表一个代码版本。

2. 基础操作指令

git add: 工作区 --> 暂存区

git commit: 暂存区 --> 本地仓库,每一次 commit 代码一次提交记录

git log: 查看提交日志

git log [option]

  • -all : 显示所有分支
  • --pretty=oneline : 提交信息显示为一行
  • --abbrev-commit :使输出的 commitid 更简短
  • --graph :以图的形式显示

git log --graph --oneline --abbrev-commit --all

git status: 查看提交状态

git reset --hard commitID : 回退到某个版本

git reset --hard HEAD^git reset --hard HEAD~ :将代码库回滚到上一个版本
git reset --hard HEAD^^:往上回滚两次,以此类推
git reset --hard HEAD~100:往上回滚100个版本
git reset --hard 版本号:回滚到某一特定版本

git reflog: 操作的日志 (查看已经删除的提交记录)

添加文件至忽略列表 : 填写 .gitignore

3. 分支

HEAD: 标记当前分支

  1. 查看本地分支
bash 复制代码
git branch
  1. 创建分支 dev1
bash 复制代码
git branch dev1

git checkout -b dev1 # 创建并切换
  1. 切换分支
bash 复制代码
git checkout dev1
  1. 合并分支
bash 复制代码
git checkout dev1  # 切换到名为dev1的分支
vim file2         # 使用vim编辑器打开file2文件进行编辑
git add .         # 添加当前目录下所有修改过的文件到暂存区
git commit -m 'add file2'  # 提交暂存区的更改,并添加提交信息'add file2'
git checkout master  # 切换到名为master的主分支
git merge dev1      # 将dev1分支的更改合并到当前所在的master分支
  1. 解决冲突

在 master 分支中修改 file1 内容:

txt 复制代码
this is file1

good luck

在 dev1 分支中修改 file1 内容:

txt 复制代码
this is file1
good luck to you

切换回 master 分支,合并时产生冲突,需要我们手动处理冲突

bash 复制代码
$ git merge dev1
Auto-merging file1
CONFLICT (content): Merge conflict in file1
Automatic merge failed; fix conflicts and then commit the result.

打开 file1 内容如下:

txt 复制代码
this is file1
<<<<<<< HEAD

good luck
=======
good luck to you
>>>>>>> dev1

然后我们修改 file1

txt 复制代码
this is file1
good luck to you
good luck
bash 复制代码
www@DESKTOP-3QO16U4 MINGW64 /d/wordspace/code/study-program/git-test (master|MERGING)
$ git add .

www@DESKTOP-3QO16U4 MINGW64 /d/wordspace/code/study-program/git-test (master|MERGING)
$ git commit -m 'merge'
[master 35adfe8] merge

www@DESKTOP-3QO16U4 MINGW64 /d/wordspace/code/study-program/git-test (master)
$

解决冲突!!!

4.仓库托管

(1)配置 SSH 公钥

bash 复制代码
 ssh-keygen -t rsa

生成密钥,通过以下查看公钥并配置

bash 复制代码
cat ~/.ssh/id_rsa.pub

通过以下方法判断是否成功

bash 复制代码
 ssh -T git@gitee.com

(2)远程仓库推送

首先创建一个仓库

添加到远程仓库 (用 SSH 的地址)

bash 复制代码
git remote add origin git@gitee.com:xxx/git-test.git

查看远程仓库

bash 复制代码
git remote

把 master 分支推送到 origin 仓库

bash 复制代码
git push origin master
bash 复制代码
git push origin master:master

关联分支

bash 复制代码
git push --set-upstream origin master:master

关联之后仅需 git push

查看本地分支和远程分支的关系

bash 复制代码
git branch -vv

(3)远程仓库拉取

切换新的目录

克隆项目,并且文件夹命名为git-test2

bash 复制代码
 git clone git@gitee.com:xxxxx/git-test.git git-test2

项目抓取

在git-test项目中添加文件 file3,并且提交远程仓库。

bash 复制代码
touch file3
git commit -m 'add file3'
git push

在git-test项目中抓取

bash 复制代码
# 从远程仓库拉取最新的分支和数据,但不会自动合并到本地分支
git fetch origin

# 将远程仓库的 master 分支的更改合并到当前本地分支
git merge origin/master
bash 复制代码
# 从远程仓库拉取最新的分支和数据,并自动合并到当前本地分支
git pull origin branch_name

远程仓库冲突

按照自己意愿修改冲突文件

相关推荐
皮皮学姐分享-ppx1 小时前
机器人行业工商注册企业基本信息数据(1958-2023年)
大数据·人工智能·python·物联网·机器人·区块链
Elasticsearch1 小时前
使用 ES|QL COMPLETION + 一个 LLM 在 5 分钟内编写一个 Chuck Norris 事实生成器
elasticsearch
wayhome在哪2 小时前
Git 合并:Merge 还是 Rebase?
git·面试·github
喻师傅2 小时前
横扫SQL面试——流量与转化率分类
大数据·数据仓库·sql
武子康3 小时前
大数据-81 Spark 手把手搭建 分布式计算环境:从下载配置到多节点部署
大数据·后端·spark
孫治AllenSun3 小时前
【ElasticSearch】客户端选择
大数据·elasticsearch·jenkins
科技热点圈5 小时前
切入高潜市场,抢占行业先机!ES SHOW 2025展位预订火爆,10月28-30日共启增长新蓝海
大数据·elasticsearch·搜索引擎
低代码布道师6 小时前
UX 设计入门终章:让洞察落地!用用户流程图、IA 和旅程图,设计用户与产品的互动故事
大数据·流程图·ux
专注API从业者14 小时前
基于 Node.js 的淘宝 API 接口开发:快速构建异步数据采集服务
大数据·前端·数据库·数据挖掘·node.js
3Cloudream15 小时前
互联网大厂Java面试深度解析:从基础到微服务云原生的全场景模拟
java·spring boot·redis·elasticsearch·微服务·kafka·电商架构