git基础指令大全

版本控制

  • git管理文件夹

  • 进入要管理的文件夹 — 进入

  • 初始化(提名) git init

  • 管理文件夹

  • 生成版本

  • .git ---- git在管理文件夹时,版本控制的信息

  • 生成版本

    git status 检测当前文件夹下的文件状态 (检测,检测之后就要管理了)-------当执行时,什么都没有,说明当前文件夹所有的文件都被管理起来了,生成一个版本

    git add index.html(我要管谁)

    git add . 当前没有被管理的文件全部管理

个人信息配置----一次即可

git config --global user.email "email"
git config --global user.name "name"
git config --glocal --list

  
git commit  -m  "描述信息(版本)"  --------(跳到另一个状态,生成一个版本)----------失败可能是因为没有个人信息配置
  

  
修改文件
  
git status ------------ modified:  我在上一个版本的基础上修改了一个状态 (modify -- 修改)
  
//相当于有新的文件(在生成文本)
  
git add    .   或者 文件名
  
git commit
  
  
  
  查看版本记录
  
  git log
  
  
  
  新增文件
  

添加文件

 touch wenjian
  1. mkdir(Make Directory)
    • 功能:用于创建新的目录(文件夹)。
    • 语法格式mkdir [选项] 目录名。例如,要创建一个名为 test 的目录,在终端中输入 mkdir test 即可。如果要创建多级目录(父目录不存在时一并创建),可以使用 -p 选项,如 mkdir -p parent/child 会创建 parent 目录及其子目录 child
  2. cd(Change Directory)
    • 功能:用于切换当前工作目录。
    • 语法格式cd [目录路径]。例如,要切换到名为 documents 的目录,假设该目录在当前路径下,可输入 cd documents。若要返回上一级目录,使用 cd..。输入 cd 不加任何参数,会切换到用户的主目录。例如,在 Linux 系统中,普通用户执行 cd 会回到 /home/用户名 目录。
  3. pwd(Print Working Directory)
    • 功能:用于显示当前工作目录的完整路径。
    • 语法格式pwd [选项]。通常直接使用 pwd 命令,它会输出当前所在目录的绝对路径。例如,当你在 /home/user/Documents 目录下执行 pwd,会输出 /home/user/Documents
ls [选项] [目录]

如果不指定目录,ls 会列出当前工作目录的内容。如果指定了目录,ls 会列出该目录的内容。

创建目录

mkdir 目录名称
pwd 作用是打印当前工作目录的完整路径。使用 pwd 命令可以帮助你确认当前所在的目录是否为目标仓库目录
ls  ls 是 “list” 的缩写,用于列出当前目录下的文件和文件夹
当你进入一个可能是目标仓库的目录后,使用 ls 命令可以查看该目录下的内容,以此来确认是否为目标仓库。因为 Git 仓库通常包含一个隐藏的 .git 文件夹,你可以通过 ls 命令查看是否存在该文件夹来判断

回滚

git reset --hard 版本号 在git log 里面的commit(不需要加引号)
git checkout -- 文件名

查看文件内容

cat 文件(加后缀) 命令直接查看某个文件的内容

从远程仓库下载文件

克隆分支时,只会显示主枝(但其实分支也有 ,可以直接git checkout branch(分支名))

git clone 和git pull有什么区别

  • git clone
    • git clone 用于将远程仓库完整地复制到本地。当你需要获取一个全新的项目副本,或者想要在本地开始对一个已存在于远程的项目进行开发时,就会使用这个命令。它会创建一个新的本地仓库,包含远程仓库的所有文件、提交历史、分支信息等。
    • 例如,你想要将 GitHub 上的一个项目复制到本地,可以使用以下命令:
git clone 远程仓库网址------------内部已经实现 git remote add origin 远程仓库地址
    • git pull 用于从远程仓库获取最新的提交,并将其合并到本地当前分支。当你已经在本地克隆了一个远程仓库,并且想要更新本地仓库的内容以与远程仓库保持同步时,就会使用这个命令。它实际上是 git fetchgit merge 两个命令的组合。
    • 例如,你已经克隆了一个项目到本地,并且在一段时间后想要获取远程仓库的最新更新,可以在本地仓库目录下执行以下命令:
git pull origin main

git pull origin dev 只会更新本地 dev 分支的内容,不会影响其他分支。

git clone 用于获取全新的远程仓库副本,而 git pull 用于更新本地已有仓库的内容,使本地分支与远程分支保持同步。

若要再回滚回来
git reflog
git reset --hard 版本号
列出分支/查看分支
git branch
创建分枝
git branch  分支名
创建的分支修改名字
git branch -m oldname newname
如何删除远程连接
git remote rm orign(远程仓库的代称)
推送分支
git push -u origin(远程仓库的代称)  分支名称
切换到分支

(回去也使用这个命令,但是回去的时候,相当于回到了之前的状态-----在分支上的修改,回去之后是没有的)

git checkout 分支名
将分支合并
git checkout master(你要合并到哪个分支上)
git merge bug(你要合并哪个分支)
合并时出现的bug
Merge branch 'bug' to fix critical bugs in the system.
2. 保存并退出编辑器
若使用 vim 编辑器:
按 Esc 键退出插入模式。
输入 :wq 并回车,这会保存你输入的提交信息并退出编辑器,Git 会完成合并提交。
合并之后,应该把不必要的分支删除
git branch -d bug(你要删除的分支)

冲突解决--------------手动解决

CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

意味着在合并分支时,Git 无法自动处理某些更改,从而产生了冲突。具体到这个例子中,冲突发生在 index.html 文件里。

  • 同一文件的同一部分被不同分支修改:比如,在主分支和 bug 分支里,都对 index.html 文件的同一行或者相邻行进行了修改。当你尝试合并这两个分支时,Git 就不知道该采用哪个更改,于是产生冲突。
  • 文件被删除和修改:一个分支删除了 index.html 文件,而另一个分支却对该文件进行了修改,这种情况下合并也会产生冲突。

冲突解决办法

要解决合并冲突,你需要手动编辑有冲突的文件,然后标记冲突已解决并提交更改。下面是具体步骤:

1. 识别冲突文件

Git 会在控制台提示哪些文件存在冲突,像这里提示 index.html 有冲突。你可以使用以下命令查看所有冲突文件:

git status

这个命令会列出所有包含冲突的文件,这些文件通常处于 “unmerged” 状态。

2. 编辑冲突文件

打开 index.html 文件,你会看到类似下面的冲突标记:

<<<<<<< HEAD
<!-- 这是当前分支(如主分支)的内容 -->
<div class="old-style">Old content</div>
=======
<!-- 这是要合并进来的分支(如 bug 分支)的内容 -->
<div class="new-style">New content</div>
>>>>>>> bug
  • <<<<<<< HEAD 表示当前分支的内容开始。
  • ======= 是分隔线。
  • >>>>>>> bug 表示要合并的 bug 分支的内容结束。

你需要手动决定保留哪些内容,删除冲突标记。例如,如果你想保留 bug 分支的更改,可以将文件修改为:

<div class="new-style">New content</div>
3. 标记冲突已解决

编辑完冲突文件后,使用以下命令将修改后的文件添加到暂存区,标记冲突已解决:

git add index.html
4. 提交合并结果

所有冲突都解决并添加到暂存区后,使用以下命令提交合并结果:

git commit

这时候可能会打开编辑器让你输入合并提交信息,输入合适的信息(如 “Resolve merge conflicts in index.html”)后保存并退出编辑器,合并操作就完成了。

vim a1.py(打开编辑器)

删除最后一次提交

如果你只是想删除最后一次提交,让仓库状态回退到上一次提交的状态,可以使用 git reset 命令。

git reset --hard HEAD~1
  • --hard 选项表示不仅将 HEAD 指针移动到指定的提交,还会将工作目录和暂存区的内容也重置为该提交的状态。
  • HEAD~1 表示上一次提交,HEAD 指向当前所在的提交,~1 表示向上移动一个提交。

执行该命令后,最后一次提交将被删除,工作目录和暂存区的内容也会恢复到上一次提交时的状态。需要注意的是,这种方式会永久删除最后一次提交,如果你之后又想恢复这次提交,操作会比较复杂。

情况二:删除中间的某次提交

如果你想删除中间的某次提交,可以使用 git rebase 命令结合交互模式来实现。假设你要删除的提交哈希值为 abc123,可以按照以下步骤操作:

  1. 找出要删除提交的前一个提交的哈希值。可以使用 git log 命令查看提交历史,找到该提交的前一个提交的哈希值,假设为 def456
  2. 进入交互式变基模式:
git rebase -i def456

执行该命令后,会打开一个文本编辑器,显示从 def456 之后的所有提交记录。找到你要删除的提交记录,将其前面的 pick 改为 drop,然后保存并关闭编辑器。
\3. Git 会按照修改后的提交顺序进行变基操作,将指定的提交删除。如果在变基过程中出现冲突,需要手动解决冲突,然后使用 git rebase --continue 继续变基操作。

情况三:删除远程仓库的提交

如果你已经将本地的提交推送到了远程仓库,要删除这些提交需要先在本地仓库进行上述操作,然后使用 git push -f 强制推送到远程仓库:

git push -f origin <branch-name>

其中,origin 是远程仓库的名称,<branch-name> 是你要推送的分支名称。需要注意的是,强制推送会覆盖远程仓库的提交历史,可能会影响其他开发者的工作,因此在团队协作中使用时要谨慎,最好提前和团队成员沟通。

    • 如果你在 Windows 系统上工作,希望文件使用 CRLF 换行符,可以执行:
git config --global core.autocrlf true
  • 如果你在 Unix/Linux 或 macOS 系统上工作,希望文件使用 LF 换行符,可执行:
git config --global core.autocrlf input
  • 若你不希望进行任何换行符转换,可设置为:
git config --global core.autocrlf false

退出

esc :wq

补充

git pull origin dev
等同于
git fetch origin dev
dit merge origin/dev

git分区

stash git stash可以将当前已经修改的文件暂存起来,将文件恢复到修改前的状态。同时可以在适合的时候还可以将进度还原。

# 把所有修改未提交的文件放入暂存区
git stash
# 把所有修改未提交的文件放入暂存区,并添加注释
git stash save 'message'

# 查看所有缓存区进度列表
git stash list

# 释放暂存区最新一个stash
git stash pop

# 恢复指定进度到工作区,这里的id是通过上面list命令得来的
git stash pop [id]

# 删除进度,不指定ID的话,默认删除最新的进度
git stash drop [id]

# 清空
git stash clear

tag

tag 是git仓库里面某分支某次commit标记。本质上还是commit的一个别名

查看 本地 所有tag
git tag or git tag -l
查看 仓库 所有tag
git ls-remote --tags origin 
创建 本地 tag
git tag -a <标签名> -m '标签内容文字描述'
创建 仓库 tag
将本地tag推送到仓库,就成了仓库tag
git push origin <标签名>
如果本地tag比较多,一次全部推送
git push origin --tags
删除本地tag
git tag -d <标签名>

进阶用法,为某个commit后的代码打tag标签
查看当前分支的提交历史 里面包含 commit id
git log --pretty=oneline 
git tag -a <标签名> 
or
git tag -a <标签名> <commitId> -m '标签内容文字描述'

作者:防己_DoLi
链接:https://juejin.cn/post/7165818788695408676
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
删除仓库tag
git push origin :refs/tags/<标签名>

将代码切换到某个标签
git checkout -b <tagName>

diff

git diff 命令,默认查看的就是 工作区 和 暂存区之间文件的差异
1.git diff : 查看工作区和暂存区之间所有的文件差异
2.git diff -- 文件名:查看具体某个文件 在工作区和暂存区之间的差异
3.git diff -- 文件名1 文件名2 文件名3:查看多个文件在工作区和暂存区之间的差异

修改内容
echo "添加内容" >> a.txt   

将工作区中修改的文件添加到暂存区后再比较差异情况
git diff HEAD : 查看工作区与最新版本库之间的所有的文件差异
git diff 具体某个版本 : 查看工作区与具体某个提交版本之间的所有的文件差异
git diff HEAD -- 文件名 : 查看工作区与最新版本库之间的 指定文件名的文件差异
git diff HEAD -- 文件名1 文件名2 文件名3 :查看工作区与最新版本库之间的 指定文件名的多个文件差异
git diff 具体某个版本 -- 文件名 : 查看工作区与具体某个版本之间的 指定文件名的文件差异
git diff 具体某个版本 -- 文件名1 文件名2 文件名3 :查看工作区与最具体某个版本之间的 指定文件名的多个文件差异
git diff 版本号1 版本号2 --stat : 查看两个版本之间的改动的文件列表
git diff 版本号1 版本号2 src : 查看两个版本之间的文件夹 src 的差异

# 查看reflog git reflog # 找到丢失提交的哈希值 git reset --hard

使用 git reflog 来找回之前的状态。通过查看引用日志,我们可以找到被删除的分支或者之前的提交,并重新创建分支或者将 HEAD 恢复到正确的状态。

总结

git init ----初始化

git status ----------管理目录下的文件状态 (新增和修改过的都是红色)

git add . 或者文件名 -----------管理指定文件(红变绿)

git config --global user.name “name”

git config --global user.email “email”------------个人信息配置

git commit -m “描述信息”------生成版本

git log ------查看版本记录

git reset --hard 目标版本号-----回滚(它之前的版本没有了)

git branch -----查看分支

git branch 分支名称 -----切换分支

git checkout 分支名称--------切换分支

git merge 要合并的分支 --------分支合并

git branch -d 分支名称 ----------删除分支

git remote add origin 远程仓库地址------给远程仓库起别名

git push -u origin 分支 ---------向远程推送代码

git clone 远程仓库地址 -------克隆远程仓库代码

git pull origin dev -----拉代码

git push -f 强推

包图

类图

用例图

git reset --hard HEAD~1 回到上一个版本

soft

只移动 HEAD 指针,暂存区和工作目录的内容都不会改变

远程仓库没有f3–被删除了

但是 git status — 还有绿色的 f3 -------说明还在暂存区

soft影响版本库,不影响工作区和暂存区

mixed

移动 HEAD 指针,同时重置暂存区,让暂存区的状态和指定提交版本一致,但工作目录里文件的内容不会改变。

mixed影响版本库、暂存区,不影响工作区

hard

不仅移动 HEAD 指针,还会重置暂存区和工作目录,让它们的状态都和指定提交版本完全一致

这意味着工作目录里的文件会被直接替换为指定版本时的内容,未提交的修改都会丢失,回到指定提交时的状态。

git status --------什么都没有------说明不在暂存区

hard影响版本库、工作区和暂存区

git clone 远程仓库地址 -------克隆远程仓库代码

git pull origin dev -----拉代码

git push -f 强推

包图

类图

用例图

git reset --hard HEAD~1 回到上一个版本

soft

只移动 HEAD 指针,暂存区和工作目录的内容都不会改变

远程仓库没有f3–被删除了

但是 git status — 还有绿色的 f3 -------说明还在暂存区

soft影响版本库,不影响工作区和暂存区

mixed

移动 HEAD 指针,同时重置暂存区,让暂存区的状态和指定提交版本一致,但工作目录里文件的内容不会改变。

mixed影响版本库、暂存区,不影响工作区

hard

不仅移动 HEAD 指针,还会重置暂存区和工作目录,让它们的状态都和指定提交版本完全一致

这意味着工作目录里的文件会被直接替换为指定版本时的内容,未提交的修改都会丢失,回到指定提交时的状态。

git status --------什么都没有------说明不在暂存区

hard影响版本库、工作区和暂存区

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[高等数学学习记录]函数的极值与最大值最小值

1 知识点 1.1 函数的极值及其求法 定义 设函数 f ( x ) f(x) f(x) 在点 x 0 x_0 x0​ 的某邻域 U ˚ ( x 0 ) \mathring{U}(x_0) U˚(x0​) 内有定义&#xff0c;如果对于去心邻域 U ˚ ( x 0 ) \mathring{U}(x_0) U˚(x0​) 内的任一 x x x&#xff0c;有 f ( x ) <…

docker 简要笔记

文章目录 一、前提内容1、docker 环境准备2、docker-compose 环境准备3、流程说明 二、打包 docker 镜像1、基础镜像2、国内镜像源3、基础的dockerfile4、打包镜像 四、构建运行1、docker 部分2、docker-compose 部分2.1、构建docker-compose.yml2.1.1、同目录构建2.1.2、利用镜…

JVM常见知识点

在《深入理解Java虚拟机》一书中&#xff0c;介绍了JVM的相关特性。 1、JVM的内存区域划分 在真实的操作系统中&#xff0c;对于地址空间进行了分区域的设计&#xff0c;由于JVM是仿照真实的机器进行设计的&#xff0c;那么也进行了分区域的设计。核心区域有四个&#xff0c;…

电脑系统bcd文件损坏修复方法:小白也会的修复方法

电脑系统bcd文件损坏怎么办?当电脑开机时出现bcd文件损坏&#xff0c;一般情况是由于电脑系统的引导坏了&#xff0c;需要进行修复。现在越来越多的小伙伴遇到电脑引导丢失或者安装后无法正常引导的问题&#xff0c;我们现在一般是pe下进行修复引导&#xff0c;那么电脑系统bc…

Flutter_学习记录_导航和其他

Flutter 的导航页面跳转&#xff0c;是通过组件Navigator 和 组件MaterialPageRoute来实现的&#xff0c;Navigator提供了很多个方法&#xff0c;但是目前&#xff0c;我只记录我学习过程中接触到的方法&#xff1a; Navigator.push(), 跳转下一个页面Navigator.pop(), 返回上一…

【架构面试】二、消息队列和MySQL和Redis

MQ MQ消息中间件 问题引出与MQ作用 常见面试问题&#xff1a;面试官常针对项目中使用MQ技术的候选人提问&#xff0c;如如何确保消息不丢失&#xff0c;该问题可考察候选人技术能力。MQ应用场景及作用&#xff1a;以京东系统下单扣减京豆为例&#xff0c;MQ用于交易服和京豆服…

Git 如何将旧仓库迁移新仓库中,但不显示旧的提交记录

一、异常错误 场景&#xff1a;我想把旧仓库迁移新仓库中&#xff0c;放进去之后&#xff0c;新仓库会显示这个项目之前的所有提交&#xff0c;如何不显示这些旧的提交&#xff1f; 二、原因 我们需要将旧仓库迁移新仓库中&#xff0c;但是又不想在新仓库中显示旧的提交记录…

02-AD-绘制原理图(画示意图+添加已有P封装)

画示意图添加已有P封装 画原理示意图绘制原理图:电容绘制原理图:晶体绘制发光二极管绘制TVS二极管绘制按键绘制拨码开关绘制双排针绘制单排针绘制TYPE母座画图技巧:按顺序递增,删除不用的先画线,再画框 绘制AMS芯片填充框透明显示:防止遮挡其他部分不需要添加其他内容 绘制STM3…

C++红黑树详解

文章目录 红黑树概念规则为什么最长路径不超过最短路径的二倍&#xff1f;红黑树的时间复杂度红黑树的结构插入叔叔节点情况的讨论只变色(叔叔存在且为红)抽象的情况变色单旋&#xff08;叔叔不存在或叔叔存在且为黑&#xff09;变色双旋&#xff08;叔叔不存在或叔叔存在且为黑…

LLaMA-Factory 微调LLaMA3

LLaMA-Factory 框架 首先需要通过vscode连接远程服务器哦 如果是租赁的AutoDL服务器&#xff0c;一定要将模型下载到数据盘。 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e . 准备训练数据 训练数据&#xff1a; fintech.json …

FFmpeg 头文件完美翻译之 libavcodec 模块

前言 众所周知&#xff0c;FFmpeg 的代码开发上手难度较高&#xff0c;源于官方提供的文档很少有包含代码教程相关的。要想熟练掌握 FFmpeg 的代码库开发&#xff0c;需要借助它的头文件&#xff0c;FFmpeg 把很多代码库教程都写在头文件里面。因此&#xff0c;熟读头文件的内…

IDEA工具下载、配置和Tomcat配置

1. IDEA工具下载、配置 1.1. IDEA工具下载 1.1.1. 下载方式一 官方地址下载 1.1.2. 下载方式二 官方地址下载&#xff1a;https://www.jetbrains.com/idea/ 1.1.3. 注册账户 官网地址&#xff1a;https://account.jetbrains.com/login 1.1.4. JetBrains官方账号注册…

AMQP是什么

文章目录 AMQP是什么一、引言二、AMQP的核心概念1、协议定义2、消息传递模型 三、AMQP的工作原理1、消息路由机制2、消息确认机制 四、使用示例1、Java代码示例1.1、项目依赖1.2、配置文件1.3、消息配置1.4、消息生产者1.5、消息消费者 五、总结 AMQP是什么 一、引言 在现代分…

ESP32基于ESPIDF I2C设备探测和使用

ESP32基于ESPIDF I2C设备探测和使用 &#x1f4cd;I2C接口介绍和参考&#xff1a;https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-reference/peripherals/i2c.html &#x1f4d3;I2C 主机探测 主要主要利用 i2c_master_probe() 函数&#xff0c;来检测…

计算机网络 (58)无线局域网WLAN

前言 无线局域网WLAN&#xff08;Wireless Local Area Network&#xff09;是一种利用无线通信技术将计算机设备互联起来&#xff0c;构成可以互相通信和实现资源共享的网络体系。 一、定义与特点 定义&#xff1a; WLAN通过无线信道代替有线传输介质连接两个或多个设备形成一个…

物业管理平台系统提升社区智能化服务效率与管理水平

内容概要 在现代社会中&#xff0c;物业管理平台系统的出现&#xff0c;为社区的智能化服务带来了革命性的变化。这种系统不仅仅是提升了工作效率&#xff0c;更是通过一系列智能化功能&#xff0c;根本性改变了物业管理的方式。比如&#xff0c;在广告位管理方面&#xff0c;…

基于SpringBoot的网上考试系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【C++】类与对象初级应用篇:打造自定义日期类与日期计算器(2w5k字长文附源码)

文章目录 一、日期类的实现1. 日期类的默认成员函数的分析与实现构造函数其它默认成员函数 2. 各种逻辑比较运算符重载3. 日期加与减天数日期加天数系列日期减天数系列日期加减天数的最后修定和- -系列 4. 日期减日期方法一方法二 5. 流插入与流提取重载流插入重载流提取重载(含…

51单片机入门_01_单片机(MCU)概述(使用STC89C52芯片)

文章目录 1. 什么是单片机1.1 微型计算机的组成1.2 微型计算机的应用形态1.3 单板微型计算机1.4 单片机(MCU)1.4.1 单片机内部结构1.4.2 单片机应用系统的组成 1.5 80C51单片机系列1.5.1 STC公司的51单片机1.5.1 STC公司单片机的命名规则 2. 单片机的特点及应用领域2.1 单片机的…

“腾讯、钉钉、飞书” 会议开源平替,免费功能强大

在数字化时代&#xff0c;远程办公和线上协作越来越火。然而&#xff0c;市面上的视频会议工具要么贵得离谱&#xff0c;要么功能受限&#xff0c;甚至还有些在数据安全和隐私保护上让人不放心。 今天开源君给大家安利一个超棒的开源项目 - Jitsi Meet&#xff0c;这可是我在网…