《Git:基本命令使用》

news/2025/3/31 11:56:29/

备份、代码还原、协同开发、追溯问题代码编写的人和时间

Git是一个开源的分布式版本控制系统,可以有效、高速地处理很小到很大的项目版本管理。是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

Git工作流程图

  • clone(克隆):从远程仓库中克隆代码到本地仓库
  • checkout(检出):从本地仓库检出一个仓库分支进行修订
  • add(添加):在提交之前先将代码提交到暂存区
  • commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本
  • fetch(抓取):从远程仓库抓取到本地仓库,不进行合并动作,一般不使用
  • pull(拉取):从远程仓库拉取到本地仓库,自动进行合并,放到工作区。等于fetch+merge
  • push(推送):修改完成后,将代码推送到远程仓库

基本配置

  • git config --global user.name "用户名"
  • git config --global user.email "xxx@xxxx"

查看配置信息

  • git config --global user.name
  • git config --global user.email

为常用指令配置别名

输出git提交日志
alias git-log = 'git log --pretty = oneline --all --graph --abbrev-commit'

获取本地仓库

  1. 创建一个空目录作为本地仓库
  2. 执行git init命令

基础操作指令

Git工作目录下对于文件的修改(包括增加、删除、更新)会存在几个状态,这些状态会随着执行git命令而发生变化。

  • git status:查看(工作区、暂存区)修改状态
  • git add:将工作区文件提交到暂存区
  • git commit  -m "内容注释":提交暂存区内容到本地仓库的当前分支
  • git log:查看提交日志
  • git reset --hard commitID:版本回退到提交的ID版本
  • git reflog:查看已经删除的提及记录

分支

几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着可以把你的工作从主线上分离开来,进行重大的bug修改、开发新功能,而不影响开发主线。

  • git branch:查看本地分支
  • git branch 分支名:创建本地分支
  • git checkout 分支名:切换分支
  • git checkout -b 分支名:创建并切换分支,如果分支不存在
  • git merge:合并分支,一个分支上的提交可以合并到另一个分支

删除分支

不能删除当前分支,只能删除其他分支。

  • git branch -d 分支名:删除分支,需要做各种检查。
  • git branch -D 分支名:不做任何检查,强制删除。

解决冲突

当两个分支上同时修改了同一个文件的同一行,merge的时候就会存在冲突。

  1. 处理文件中冲突的地方
  2. git add
  3. git commit

分支使用原则与流程 

 

 Git远程仓库

  1. 创建远程仓库
  2. 配置ssh公钥:ssh-keygen -t rsa 不断回车,如果公钥已经存在,则自动覆盖
  3. Gitee设置账户公钥,获取公钥:cat ~/.ssh/id_rsa.pub
  4. 验证是否配置成功:ssh -T git@gitee.com

操作远程仓库

添加远程仓库

此操作是先初始化本地库,然后与已创建的远程库进行对接。

  •  git remote add <远端名称> <仓库路径>
  • 远端名称,默认是origin,取决于远端服务器设置
  • 仓库路径,从远端服务器获取此URL

查看远程仓库

推送到远程仓库

git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ]

  • 如果远程分支名和本地分支名称相同,则可以只写本地分支
  • git push origin master
  • -f 表示强制覆盖
  • --set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。
  • git push --set-upstream origin master
  • 如果当前分支已经和远端分支关联,则可以省略分支名和远端名。
  • git push 将master分支推送到已关联的远端分支。

从远程仓库克隆

如果已经有一个远端仓库,我们可以直接clone到本地。

  • git clone <仓库路径> [本地目录]

本地目录可以省略,会自动生成一个目录。

从远程仓库抓取和拉取

远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。

  • git fetch [remote name] [branch name]

抓取指令就是将仓库里的更新都抓取到本地,不会进行合并,如果不指定远端名称和分支名,则抓取所有分支。

  • git pull [remote name] [branch name]

拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge。如果不指定远端名称和分支名,则抓取所有并更新当前分支。

解决合并冲突

在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支,如下图所示。

在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。

解决:远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同。手动修改冲突地方。

push推送远程仓库之前先pull拉取远程仓库到本地仓库。


http://www.ppmy.cn/news/1583754.html

相关文章

【学Rust写CAD】14线性插值函数(加入color.rs)

lerp 函数源码 /// 颜色线性插值/// t 取值范围 0..256&#xff0c;0 表示完全使用当前颜色(self)&#xff0c;256 表示完全使用目标颜色(end)#[inline]pub fn lerp(self, end: Color, t: u32) -> Color {let mask 0xff00ff;// 提取目标颜色的蓝色和红色分量let brb end.…

[计算机网络]网络I/O模型

欢迎来到啾啾的博客&#x1f431;。 这是一个致力于构建完善的Java程序员知识体系的博客&#x1f4da;&#xff0c;记录学习的点滴&#xff0c;分享工作的思考、实用的技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。…

Go File容器化部署方案:本地快速搭建与无公网IP远程传输文件指南

文章目录 前言1. 安装Docker2. Go File使用演示3. 安装cpolar内网穿透4. 配置Go File公网地址5. 配置Go File固定公网地址 前言 在这个信息大爆炸的时代&#xff0c;谁还没遇到过这样的尴尬场面呢&#xff1f;当你正在办公室埋头苦干时&#xff0c;手机突然跳出一条紧急邮件&a…

TCP的长连接和短连接,以及它们分别适用于什么场合

TCP长连接与短连接详解 一、核心概念对比 特性长连接&#xff08;Persistent Connection&#xff09;短连接&#xff08;Short-lived Connection&#xff09;连接生命周期一次建立后长期保持&#xff0c;多次数据交互复用同一连接每次数据交互均需新建连接&#xff0c;完成后…

内网渗透-DLL和C语言加载木马

免杀进阶技术 1、DLL的定义与使用 DLL:Dynamic Link library,动态链接库&#xff0c;是一个无法自己运行&#xff0c;需要额外的命令或程序来对其接口进行调用&#xff08;类方法、函数&#xff09;。 (1)在DevCpp中创建一个DLL项目 (2)在dllmain.c中定义源代码函数接口 #i…

CLion配置问题解决

课程笔记 https://www.yuque.com/bigdata-caoyu/newcpp CLion 激活码不可用 https://blog.csdn.net/qq_41973721/article/details/142407716 主机名&#xff1a;localhost 端口号&#xff1a;80 不为以下设置代理&#xff1a;*.github.com,plugins.jetbrains.com 插件无法下…

OkHttp 的证书设置

在 Android 开发中&#xff0c;通过 OkHttp 自定义 SSLSocketFactory 和 X509TrustManager 可以有效增强 HTTPS 通信的安全性&#xff0c;防止中间人攻击&#xff08;如抓包工具 Charles/Fiddler 的拦截&#xff09;。以下是实现防抓包的关键技术方案&#xff1a; 一、Okhttp设…

在 Ubuntu 下通过 Docker 部署 Nginx 服务器

1. Docker 和 Nginx 简介以及实验环境 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用程序及其依赖项打包成一个轻量级的、可移植的容器。通过 Docker&#xff0c;开发者可以在任何支持 Docker 的环境中运行应用&#xff0c;从而实现一致的开发和生产环境。Docke…