Linux12(Git01)

#技术笔记

1. Git是一个版本控制工具,可以记录、追踪某个文件在某一时刻的内容和状态,主流的管理工具有Git、SVN,Git分布式 版本控制工具,可以在离线状态下提交、查看日志、创建分支等,需要同步时再 push/pull 到远程仓库;SVN是集中式版本控制工具,开发者需要联网才能提交、查看日志、比较版本等,本地只保留一个工作副本。如下图。

2. Git核心流程

3. 在不同Git仓库注册时一定要记住,账号、密码、邮箱,因为后续会用到,比如私有仓库克隆的时候就要用,不记得一般看URL上的内容。

4. Git命令

git clone 下载远程仓库的内容,并在本路径创建一个和远程仓库同名的文件夹,然后建议配个公私钥(SSH Key),这样在git push/pull/clone 就不用每次输入密码了。(理解克隆就是进行多人开发了,每个人有一条自己的本地仓库,随便改)

git status 可以查看工作区和暂存区/缓冲区和本地仓库的变化。

git add 可以把工作区的内容提交到暂存区。git add . <-这个命令是全部提交,注意add后面有个点;git add 指定的文件名,这个文件把指定的文件推到暂存区;git add *.c 这个通配符* 可以匹配所有以**.c**结尾的文件。

git commit 这个可以把缓冲区/暂存区的内容提交到本地仓库,是一次性上传全部暂存区的内容,建议加上 -m 参数,例如 git commit -m "备注" , 这样可以不用编辑文件了,直接用git commit 会进入一个配置好的编辑器(可以自己配置)。

git log 这个可以列出所有版本的详细信息(每次 git commit就会有一个版本出来),版本号是哈希算法生成的,40为16进制的数,可以直接用短版本号(就是用前7位,没冲突就行);一般可以用 git log --oneline 来查看防止过长,还可以用 git log --oneline --all --graph 有个小图可以参考。

5.分支问题

5.1 查看分支

git branch -a 可以查看所有分支,有些远程的别的开发者的也看得见。

git branch 就是查看当前分支,也就是本地的。

5.2 git branch 分支名 <-这就是创建分支

5.3 切换分支

git checkout 分支名

git checkout -b 分支名

git switch 分支名 <-现在用的,因为git checkout功能太多和复杂,也可以用checkout

5.4 删除分支

git branch -d 分支名

git branch -D 分支名 <-小d是安全删除,可能删不掉,删不掉就用D强制删除,但删不掉你所在的分支。

5.5 合并分支

git merge 分支名 <-这个用来合并两个分支的内容的,要注意合并分支应该向下游版本合并,上游的理解就是老的版本号哪些合并新的正在开发的下游;还有合并产生了无法自动合并的冲突就要手动处理冲突了,也就是猛猛改代码了。合并完的分支如果不想要就可以删了。

6. 冲突问题

冲突大多时候是几个开发者对同一文件发生了修改(也就是多人合作提交到远程仓库)或者两个分支修改了同一文件中的相邻部分内容。冲突约定俗称的规矩,先push的人不处理冲突,后push的人要处理冲突,准备提交代码的时候最好pull一下,这样要push提交的时候不容易出错。

**7.**提交和更新,用git push 和 git pull。在合作开发中,多个用户基于远程仓库的代码合并本质上就是类似冲突处理问题。

push命令 就是把本地仓库的版本变化推到远程仓库,git push 把本地当前所在的分支的版本变化推送到跟踪/关联的远程分支; git push origin 分支名 把本地当前所在的分支的版本变化推送到显示指明的远程分支上;

8. 回退问题

git reset 相当于git reset --mixed HEAD

git reset --soft 版本号 //将本地仓库的提交和本地仓库回退到暂存区,但暂存区和工作区没变化

git reset --hard 版本号 // 将本地仓库、暂存区、工作区的内容恢复 (毁灭性最强

git reset --mixed 版本号 // 将本地仓库和暂存区回退到工作区,工作区的内容没有变化

soft 动仓库,mixed 动暂存,hard 动工作区

9.忽略文件

git下有一个**.gitignore**文件,可以起到过滤的效果,例如把不需要的什么.o;.s等文件过滤了,这样就不会追踪和不会提交。

10.本地项目提交

主要涉及关联远程仓库和提交到远程仓库这两步最重要。

  1. git add -u //添加所有已经跟踪文件的变更(包括删除,移动)
    最后有个Git分支的学习网站推荐一下: https://learngitbranching.js.org/?locale=zh_CN
相关推荐
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
社交怪人1 小时前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
郭涤生2 小时前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS2 小时前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言
卢锡荣2 小时前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
Xin_ye100862 小时前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
不仙5202 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
AI科技星3 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
审判长烧鸡3 小时前
【Go工具】go-playground是什么组织?官方的?
开发语言·安全·go