当前位置: 首页 > news >正文

Git的基本操作

Git 介绍和基本使用命令

1. git 基本介绍

Git是一款分布式源代码管理工具(版本控制工具) ,可以有效、高速地处理从很小到非常大的项目版本管理

。Git具有版本控制、分支管理、远程仓库、代码合并、代码回滚、代码比较和代码托管平台等七个主要功能。Git 官网:https://git-scm.com/

2. Git 安装

# ubuntu 安装
sudo apt update
sudo apt install git# 其它系统可以去官网下载包安装

3. Git 初始化

# 给git配置用户名
git config --global user.name 'wenjtop'
git config --global user.email "1007131354.@qq.com" 
# --global 全局信息,所有仓库都生效。不加只对当前仓库生效。
# --system 系统配置,所有用户都生效。很少使用。git config --global credential store # 存储配置
git config --global --list           # 查看当前仓库配置信息

4. 新建仓库

新建的仓库相当于一个文件目录,这个文件目录由git管理,里面所有文件的增删改查都会被记录下来,可以追踪历史和还原版本。

mkdir myRepository
cd myRepository
git init [文件]      # 方法一,本地建立一个仓库,会在文件下面生成.git文件
git clone 仓库的url  # 方法二,远程克隆一个仓库

5. git的三个区域和文件状态

git的本地数据管理区区域分为三个区域:

  1. 工作区、工作目录,本地工作目录(Working Directory):.git所在的目录,自己电脑上能看见的目录。
  2. 暂存区(Staging Area/index):.git/index文件,临时存储区域,用于保存即将提交到Git仓库的修改内容。
  3. 本地仓库(Local Repository):.git/objects文件,通过git init创建的仓库,包含了完整的项目历史和版本信息。

ls           # 查看工作区的内容
git ls-file  # 查看暂存区的内容

文件的四种状态:

6. git添加和提交文件

git status                          # 查看仓库状态
git add <file> 或者 . 或者 *.txt     # 跟踪修改的文件。.表示当前所有修改过的文件,*.txt表示所有.txt结尾的文件。
git rm --cached <file>              # 取消文件add操作
git commit -m [message]             # 提交暂存区到本地仓库中
git log                             # 查看提交记录和版本id

7. 代码回退到之前版本

git reset --soft 版本id    # 回退之前某个版本,并且保留工作区和暂存区内容
git reset --hard 版本id    # 回退之前某个版本,并且丢弃工作区和暂存区内容
git reset --mixed 版本id   # 回退之前某个版本,并且保留工作区丢弃暂存区内容
git log                   # 查看版本id
git reflog
                # 查看回退操作之前到版本id
git checkout -b 新分支名 提交id  # 恢复到分支到指定版本上

8. 查看代码的差异

git diff file.txt  # 只查看file.txt的差异# 查看工作区,暂存区和本地仓库之间
git diff           # 查看工作区与暂存区之间的差异
git diff HEAD      # 查看工作区与版本库之间的差异
git diff --cache   # 查看暂存区与版本库之间的差异# 查看不同版本之间的差异
git diff 版本id1 版本id2   # 查看版本id1和版本id2的差异
git diff HEAD~ HEAD      # 查看上一个版本和当前版本的差异,HEAD~和HEAD^都可以表示上一个版本,HEAD~3之前的第三个版本
# 查看不同分支之间的差异
git diff 分支名1 分支名2    # 查看分支名
1与分支名2之间的差异

9. 删除文件

方法一:
rm file.txt             # 删除工作区
git add .               # 提交到暂存区
git commit -m [message]方法二:
git rm file.txt           # 直接删除工作区,暂存区
git commit -m [message] 

10. 忽略提交的文件

创建 .gitignore 文件,把要忽略的文件名

写在里面,如忽略log、png、file.txt文件和tmp文件夹

生效前提不能是已经被添加到版本库的文件 。

*.log
*.png
file.txt
tmp/

注意:如果添加的文件已经被归纳在系统文件中,需要在git数据库

中删除对于该文件的追踪。

git rm -r --cached .

11. 连接远程仓库

本地仓库和远程仓库是两个独立的仓库。使用git方式连接远程仓库,需要先配置ssh公钥的配置。

cd ~/.ssh
ssh-keygen -t rsa -b 4096    # 生成id_rsa私钥文件和id_rsa.pub公钥文件。
ssh-keygen -t rsa -C "wenjtop@gmail.com"
cat ~/.ssh/id_rsa.pub        # 查看SSH keys粘贴到githup上SSH keys中

复制公要文件,粘贴复制到SSH keys中。

连接远程仓库

# 情况1,本地无仓库
echo "# RepositoryTest" >> README.md
git init
git add README.md
git commit -m "first commit"           
git branch -M main               # 对于当前分支重命名为main
git remote add origin git@github.com:wenjtop/RepositoryTest.git
git push -u origin main# 情况2,本地有仓库
git remote add origin git@github.com:wenjtop/RepositoryTest.git
git branch -M main
git push -u origin main# 参数说明 git@github.com:wenjtop/RepositoryTest.git 远程仓库地址
# branch -M main 指定main分支
# origin 表示原创仓库的别名,可修改
# push -u origin main 同步到远程main分支,并合并
# pull  把远程仓库内容拉取到本地,并合并
# git commit -a -m "first commit" # 可以同时执行add和commit操作
# git pull <远程主机名> <远程分支名>:<本地分支名>     # 用于从远程获取代码并合并本地的版本
# git push <远程主机名> <本地分支名>:<远程分支名>     # 用于从将本地的分支版本上传到远程并合并git remote -v         # 查看远程仓库别名和地址
git checkout -b 分支名 # 切换分支名称
git fetch             # 获取远程仓库的修改内容,手动合并 

命令提供了一些用于查看、添加、重命名和删除远程仓库的功能

git remote
git remote -v                                           # 显示所有远程仓库
git remote add origin https://github.com/user/repo.git  # 添加远程版本库
git remote rename origin new-origin                     # 修改仓库名
git remote remove new-origin                            # 删除远程仓库
git remote set-url origin https://github.com/user/new-repo.git   # 修改指定远程仓库的 URL
git remote show origin                                  # 显示某个远程仓库的信息

12. 仓库分支

不同分支,可以由不同人开发,也可以是项目的不同版本。

git branch               # 查看在哪个分支上
git branch 分支名         # 创建分支
git switch 新分支名       # 却换到新分支名上,新方法
git checkout -b 新分支名  # 却换到新分支名上,旧方法
git branch -d 分支名      # 删除以合并的分支,-D强制删除
git merge dev 分支名      # 当面分支为目标分支
,后面为需要合并的分支

13. 合并分支和解决冲突(同时修改两个文件的同一行代码)

方法1:
git status  # 查看冲突文件列表
git diff    # 查看冲突的具体内容# 在目标分支下查看冲突的文件,手工编辑,在合并和提交。
# git merge --abort  # 终止合并方法2:
git switch dev1  
git rebase dev2             # 把dev1分支的所有提交,都嫁接在dev2分支后,dev1可能会覆盖dev2git blame [选项] <文件路径>   # 逐行显示指定文件的每一行代码是由谁在什么时候引入或修改的

相关文章:

  • hive在配置文件中添加了hive.metastore.uris之后进入hive输入命令报错
  • R语言实战第5章(1)
  • 前端面经 计网 http和https区别
  • SpringBoot校园失物招领信息平台
  • 24 小时 AI 门店管家:重新定义连锁门店智能化管理范式
  • 【氮化镓】横向GaN 器件注入隔离区的电场相关载流子传输特性
  • 棉花杂草检测数据集VOC+YOLO格式4279张2类别
  • LabVIEW中算法开发的系统化解决方案与优化
  • 首屏优化,webpack插件用于给html中js自动添加异步加载属性
  • .net 公共变量 线程安全
  • flutter 的 json序列化和反序列化
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.1 风险数据清洗与特征工程
  • 【技巧】离线安装docker镜像的方法
  • Python中操作Neo4j图数据库
  • LeetCode热题100——链表
  • IBM BAW(原BPM升级版)使用教程第十二讲
  • HTML17:表单初级验证
  • js应用opencv
  • Scala和Spark的介绍
  • 深入浅出 iOS 对象模型:isa 指针 与 Swift Metadata
  • 时隔4年多,这一次普京和泽连斯基能见面吗?
  • 英媒:英国首相住所起火,目前无人伤亡
  • 我国7名优秀护理工作者荣获第50届南丁格尔奖
  • 撤制镇如何突破困境?欢迎订阅《澎湃城市报告》第23期
  • 中俄就应对美加征所谓“对等关税”等问题进行深入交流
  • 罕见沙尘再度入川,官方:沙尘传输高度达到平流层,远超以往