Git管理本地代码

news2024/12/23 11:54:47

一、Git配置

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改
– global全局配置
通过 --global 选项可以设置全局配置信息

git config --global user.email “dahuadj@qq.com”;
git config --global user.name “dahua”

在这里插入图片描述

检测 打开c盘,查看 .gitconfig文件用记事本打开

C:\Users\wiat\.gitconfig

进入希望纳入 git 版本控制的项目目录,使用 git init 初始化,然后初始化后的文件夹能看到的区域就叫工作区

$ git init

Initialized empty Git repository in D:/workspace/project/program/.git/

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这个目录也是上面我们说的三个区域之一,这个目录也是 Git 保存数据记录的地方,非常重要,如非必要,不要改动

当一个项目被 Git 初始化以后,只是表示我们希望通过 Git 来管理当前的这个项目文件的不同时期版本记录,但是这个时候项目中已存在的文件,或者以后新增的文件都是没有进入版本控制管理的,它们是 未追踪(Untracked) 的状态

二、Git管理常用操作

1、Git文件夹创建文件
既然 Git 是一种对文件进行操作的软件,那么Git肯定也是可以创建文件的,创建出来的文件会被存放在工作区

wiat@DESKTOP-L159V8T MINGW64 /d/workspace/project/git_test (master)$ git > 2.txt
wiat@DESKTOP-L159V8T MINGW64 /d/workspace/project/git_test (master)$ ls
2.txt  test.txt

2、添加工作区文件到暂存区
暂存区就是通过 git add 文件存放的地方在要提交之前

wiat@DESKTOP-L159V8T MINGW64 /d/workspace/project/git_test (master)$ echo "hello" >> 2.txt
wiat@DESKTOP-L159V8T MINGW64 /d/workspace/project/git_test (master)$ cat 2.txt
hello

git add 文件

# 添加单个文件
git add 1.txt
# 添加多个文件
git add 2.txt 3.txt
# 添加整个目录
git add ./a
# 添加多个目录
git add ./b ./c
# 添加所有文件
git add .

3、查看当前工作区文件状态
git status 查看当前工作区的文件的状态

 git status

git status

On branch master
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        2.txt
        test.txt

当前文件已经被添加至暂存区,等待提交到仓库

wiat@DESKTOP-L159V8T MINGW64 /d/workspace/project/git_test (master)
$ ls -a
./  ../  .git/  2.txt  test.txt

4、暂存区的文件提交至本地仓库

$ git commit -m "V1.0"
[master (root-commit) 0118026] V1.0
 2 files changed, 2 insertions(+)
 create mode 100644 2.txt
 create mode 100644 test.txt

用命令git commit把文件提交到Git仓库(-m后面输入的是本次提交的说明)
为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

四、版本管理
现在已经成功添加并提交了一个 2.txt 文件,接着继续修改 2.txt,修改内容如下:

$ echo "add 123" >> 2.txt

接着运行git status命令可以查看仓库当前的状态,通过输出得知 readme.txt 被修改过了,但还没有准备提交

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   2.txt

假如你休假之后继续上班,但已经记不清上次怎么修改的 2.txt,这时可以用git diff这个命令看看

现在对文件进行提交

$ git add 2.txt
warning: in the working copy of '2.txt', LF will be replaced by CRLF the next time Git tou
ches it
$ git commit -m "add 1"
[master 061ca5e] add 1
 1 file changed, 1 insertion(+)

提交后,再用git status命令查看仓库的当前状态:

$ git status
On branch master
nothing to commit, working tree clean

五、版本回退
在实际工作中,我们怎么知道 readme.txt 文件一共有几个版本被提交到Git仓库里了呢?这时就用到git log命令了。
git log命令显示从最近到最远的提交日志

$ git log
commit 061ca5e383b77ab72e5ad57633bf3adfffba2ee0 (HEAD -> master)
Author: dahua <dahuadj@qq.com>
Date:   Wed Aug 30 14:17:49 2023 +0800
    add 1
    
commit 01180266efcfa99bd3e0999501a0bbb52ff51c30
Author: dahua <dahuadj@qq.com>
Date:   Wed Aug 30 14:09:12 2023 +0800
    V1.0

如何把 2.txt 回退到上一个版本呢?
拉取最近一次提交到暂存区,该操作不影响工作区

$ cat 2.txt
hello
add 123
$ git reset HEAD^
Unstaged changes after reset:
M       2.txt

执行“git checkout 文件名”,从暂存区拉取到工作区

$ git checkout .
Updated 1 path from the index

如何把 2.txt 回退到指定版本呢?

1、查看版本号:git log查找历史或使用git reflog命令查找合并操作的commit ID,也可以上代码托管网页上查看history,找到需要回滚的目标版本号
2、 使用git reset --hard 版本名命令将版本回退。此命令会将HEAD指针、当前分支指针和索引区都指向指定的commit ID,并重置工作区为该版本。

$ git log
commit 315b68efffe767306838869cfe435b1d33b7678f
Author: dahua <dahuadj@qq.com>
Date:   Wed Aug 30 14:28:48 2023 +0800

    V1.1
$ git reset --hard 315b68efffe767306838869cfe435b1d33b7678f
HEAD is now at 315b68e V1.1

步骤2:“git checkout 文件名”,从暂存区拉取到工作区。

$ cat 2.txt
hello
add 123
147

3、使用git push -f提交更改,此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧,用“git push -f”强制推上去。
//把当前分支重命名为main

$ git branch -M main

然后执行命令git remote add origin + 仓库地址

$ git remote add origin https://github.com/dahuadj/dahuadj.git

注:如果执行后出现 remote origin already exists 就是异常
解决方法:先执行 git remote rm origin 再执行git remote add origin + 仓库地址

$ git remote rm origin

提交时,需要输入验证码同意git上传到github
//用本地的main覆盖远端的main

$ git push -u origin main

1.查看所有分支
用命令:git branch -a
2.创建新分支
命令:git branch test。将会创建一个名为test的新分支
把新分支推送到远程分支(github仓库上):
$ git push origin test
3.切换分支
$ git checkout test
$ git push --set-upstream origin test
4.删除本地分支test
$ git branch -d test
5.删除远程分支
删除完本地,就应该删除远程了。输入以下命令:
$ git branch -r -d origin/test

参考链接:https://blog.csdn.net/kiritomzzz/article/details/131546316
https://blog.csdn.net/catshitone/article/details/54973968

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/950304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第6篇:ESP32连接无源喇叭播放音乐《涛声依旧》

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 D5连接喇叭正极&#xff0c;GND连接喇叭负…

推荐一本AI+医疗书:《机器学习和深度学习基础以及医学应用》,附21篇精选综述

当代医学仍然存在许多亟待解决的问题&#xff0c;比如日益增加的成本、医疗服务水平的下降...但近几年AI技术的发展却给医疗领域带来了革命性的变化&#xff0c;因此AI医疗迅速兴起。 从目前已知的成果来看&#xff0c;人工智能在医学领域的应用已经相当广泛&#xff0c;智能诊…

【pyqt5界面化工具开发-14】初始牛刀-登录工具

目录 0x00 前言&#xff1a; 一、准备好ui的加载 二、获取对应的触发事件 三、触发事件绑定 三、输入内容的调用 三、完善登录逻辑 0x00 前言&#xff1a; 在逻辑代码的处理添加数据包的请求&#xff0c;返回数据包的判断&#xff0c;就可以完整实现登录检测的一个界面化…

zookeeper介绍、zookeeper的安装与配置

1、zookeeper介绍 1.1 官网说明 官方地址&#xff1a;http://zookeeper.apache.org/ 它是拿来管理 Hadoop、Hive、Pig的管理员&#xff0c; Apache Hbase和Apache Solr以及阿里的Dubbo等项目中都采用到了Zookeeper。 一句话&#xff1a;ZooKeeper是一个分布式协调技术、高性…

基于Kohonen网络的聚类算法

1.案例背景 1.1 Kohonen网络 Kohonen网络是自组织竞争型神经网络的一种,该网络为无监督学习网络,能够识别环境特征并自动聚类。Kohonen神经网络是芬兰赫尔辛基大学教授Teuvo Kohonen 提出的,该网络通过自组织特征映射调整网络权值,使神经网络收敛于一种表示形态。在这一形态中…

OLAP学习

OLAP又叫联机分析处理&#xff0c;联机分析处理(OLAP)的概念最早是由关系数据库之父E.F.Codd于1993年提出的。 当今的数据处理大致可以分成两大类&#xff1a;联机事务处理OLTP&#xff08;on-linetransactionprocessing&#xff09;、联机分析处理OLAP&#xff08;On-LineAna…

外观模式:简化复杂子系统的访问与使用

文章目录 1. 简介2. 外观模式的基本结构3. 外观模式的实现步骤4. 外观模式的应用与实例4.1 图形界面库的外观模式应用4.2 文件压缩与解压缩的外观模式应用4.3 订单处理系统的外观模式应用 5. 外观模式的优缺点5.1 优点5.2 缺点 6. 总结 1. 简介 外观模式是一种结构型设计模式&…

从过滤器初识责任链设计模式

下面用的过滤器都是注解方式 可以使用非注解方式,就是去web.xml配置映射关系 上面程序的执行输出是 再加一个过滤器 下面来看一段程序 输出结果 和过滤器是否非常相识 但是上面这段程序存在的问题:在编译阶段已经完全确定了调用关系,如果你想改变他们的调用顺序或者继续添加一…

基于MYSQL的主从同步和读写分离

目录 一.完成MySQL主从同步&#xff08;一主两从&#xff09; 1.主库配置 2.建立同步账号 3.锁表设置只读 4.备份数据库数据 5.主库备份数据上传到从库 6.从库上还原备份 7.解锁 8.从库上设定主从同步 9.启动从库同步开关 10.检查状态 二.基于MySQL一主两从配置&…

取数组中每个元素的最高位

1 题目 /*程序将一维数组a中N个元素的最高位取出&#xff0c;保存在一维数组b的对应位置。 程序运行结果为&#xff1a; a&#xff1a;82 756 71629 5 2034 b: 8 7 7 5 2 */ 2 思考 简单来说就是取一个数据的最高位。 一开始的笨方法没有办法判断数据的长度&#xff0c;后来…

nowcoder NC236题 最大差值

目录 题目描述&#xff1a; 示例1 示例2 题干解析&#xff1a; 暴力求解&#xff1a; 代码展示&#xff1a; 优化&#xff1a; 代码展示&#xff1a; 题目跳转https://www.nowcoder.com/practice/a01abbdc52ba4d5f8777fb5dae91b204?tpId128&tqId33768&ru/exa…

BFT最前线|AI透过胸片估测患者年龄,可揭示其患慢性病风险;中信建投:国产人形机器人核心零部件成本下行值得期待

文 | BFT机器人 AI视界 TECHNOLOGY NEWS 看点1 AI模拟芯片能效达传统芯片14倍 《自然》23日发表的研究报道了一种能效为传统数字计算机芯片14倍的人工智能&#xff08;AI&#xff09;模拟芯片。这一由IBM研究实验室开发的芯片在语音识别上的效率超过了通用处理器。该技术或能…

【java中的Set集合】HashSet、LinkedHashSet、TreeSet(最通俗易懂版!!)

目录 一、HashSet集合 1.HashSet集合的特点 2.HashSet常用方法 二、LinkedHashSet集合 LinkedHashSet集合的特点 三、TreeSet集合 1.TreeSet集合的特点 2.TreeSet的基本使用 四、HashSet、LinkedHashSet、TreeSet的使用场景 五、list和set集合的区别 一、HashSet集合 …

yolo增加mobileone

代码地址&#xff1a;GitHub - apple/ml-mobileone: This repository contains the official implementation of the research paper, "An Improved One millisecond Mobile Backbone". 论文地址&#xff1a;https://arxiv.org/abs/2206.04040 MobileOne出自Apple&am…

java八股文面试[数据库]——B树和B+树的区别

B树是一种树状数据结构&#xff0c;它能够存储数据、对其进行排序并允许以O(logn)的时间复杂度进行查找、顺序读取、插入和删除等操作。 1、B树的特性 B树中允许一个结点中包含多个key&#xff0c;可以是3个、4个、5个甚至更多&#xff0c;并不确定&#xff0c;需要看具体的实…

VBA技术资料MF50:VBA_在Excel中突出显示前3个值

【分享成果&#xff0c;随喜正能量】人受到尊重&#xff0c;不是因为权钱&#xff0c;而是他骨子里透出的&#xff0c;正直与善良。。 我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高…

RabbitMQ工作模式-路由模式

官方文档参考&#xff1a;https://www.rabbitmq.com/tutorials/tutorial-four-python.html 使用direct类型的Exchange,发N条消息并使用不同的routingKey,消费者定义队列并将队列routingKey、Exchange绑定。此时使用direct模式Exchange必须要routingKey完成匹配的情况下消息才…

Node.js /webpack DAY6

一、Node.js 入门 1. 什么是 Node.js&#xff1f; 2. 什么是前端工程化&#xff1f; 3. Node.js 为何能执行 JS&#xff1f; 4. Node.js 安装 5. 使用 Node.js 总结 6. fs 模块 - 读写文件 /*** 目标&#xff1a;基于 fs 模块 读写文件内容* 1. 加载 fs 模块对象* 2. 写入文件…

Java并发(十五)----synchronized解决共享的问题

为了避免临界区的竞态条件发生&#xff0c;有多种手段可以达到目的。 阻塞式的解决方案&#xff1a;synchronized&#xff0c;Lock 非阻塞式的解决方案&#xff1a;原子变量 此次介绍使用阻塞式的解决方案&#xff1a;synchronized&#xff0c;来解决上述问题&#xff0c;即…