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

git入门笔记

TIPS:

仅作个人学习用途,文章逻辑很乱

Git分支:

Git仓库由分支组成,每个commit版本构成分支的一个结点(每次commit相当于在当前分支末端插入一个节点),主分支通常命名为main或master, 通常使用HEAD指向当前分支

创建分支:

$ git branch [new-branch-name]

在当前结点创建出一支新的分支,名字叫new-branch-name

转到其他分支:

$ git checkout [destination-branch]

将HAED指向destination-branch

创建并转到该分支:

$ git checkout -b [new-branch-name]

删除分支:

$ git branch -d [branch-to-delete]

查看当前所处分支:

$ git branch -v

合并分支:

假设需要合并分支master与fixing-ai-heuristics,那么我们先checkout到分支master,然后将fixing-ai-heuristics合并到master

$ git checkout master
$ git merge fixing-ai-heuristics

合并效果如图所示:

合并前:

合并后:

创建了新结点C6,C5是C6的第一父亲,C4是C6的第二父亲

此次合并会将两个分支中修改过的文件都在C6呈现,倘若有同一个文件的同一个代码块(函数,代码行)既在master修改过,又在fixing-ai-heuristics修改过,那么就会发生合并冲突

合并冲突示例:

合并冲突的代码会包含如下代码块:

<<<<<<< HEAD
for (int i = 0; i < results.length; i++) {println(results[i]);println("FIX ME!");
}
=======
int[] final = int[results.length];
for (int i = 0; i < results.length - 1; i++) {final[i] = results[i] + 1;println(final[i]);
}
>>>>>>> fixing-ai-heuristics

第一个代码块是当前HEAD指向的分支的代码

第二个代码块是fixing-ai-heruistice的代码

我们需要人为进行修改,只保留一份,从而解决合并冲突

初始化仓库:

先定位到需要创建仓库的目标目录,然后输入命令git init

cd D:\Documents\CS61B
git init

这里只是创建空仓库,仓库里什么都没有

添加文件为待提交状态:

git add .

.是缺省符号,意味着添加目录下所有文件,也可以输入具体的文件路径

这里仍然没有将文件添加到仓库,只是设置为待提交(tracked)

查看仓库状态:

git status

输出例子:

On branch masterInitial commitChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   tofu/kung_pao_tofu.txtUntracked files:(use "git add <file>..." to include in what will be committed)seitan/tofu/basil_ginger_tofu.txt

Changes to be committed:

列举所有被tracked的文件(将要被放入仓库的文件)

Untracked files:

未被使用git add跟踪的文件

将文件拷贝到仓库

git commit -m "first commit"

-m:允许添加commit的注释

后面紧跟着的字符串就是注释

查询git记录

git log

输出例子:

commit 9f955d85359fc8e4504d7220f13fad34f8f2c62b
Author: Sandra Upson <sandra@Sandras-MacBook-Air.local>
Date:   Sun Jan 17 19:06:48 2016 -0800added tofu recipes

commit后面紧跟的是本次commit的哈希值

展示commit细节

git show 9f955d85359fc8e4504d7220f13fad34f8f2c62b

输出例子:

commit 9f955d85359fc8e4504d7220f13fad34f8f2c62b
Author: Sandra Upson <sandra@Sandras-MacBook-Air.local>
Date:   Sun Jan 17 19:06:48 2016 -0800added tofu recipesdiff --git a/tofu/basil_ginger_tofu.txt b/tofu/basil_ginger_tofu.txt
new file mode 100644
index 0000000..9a56e7a
--- /dev/null
+++ b/tofu/basil_ginger_tofu.txt
@@ -0,0 +1,3 @@
+basil
+ginger
+tofu
diff --git a/tofu/kung_pao_tofu.txt b/tofu/kung_pao_tofu.txt
new file mode 100644 index
0000000..dad9bd9
--- /dev/null
+++ b/tofu/kung_pao_tofu.txt
@@ -0,0 +1,3 @@
+szechuan peppers
+tofu
+peanuts
+kung
+pao

修改文件并commit到仓库:

修改文件后,需要再将其add一遍再commit(即使之前该文件已经被add过),否则该文件将是Changes not staged for commit的类型

修改后未add的git status例子:

On branch master
Changes not staged for commit:modified:   tofu/kung_pao_tofu.txtUntracked files:seitan/no changes added to commit

回档至某次commit刚实行之后:

命令:git checkout commit_hash_val directory

git checkout 9f955d85359fc8e4504d7220f13fad34f8f2c62b ./recipes/tofu

只有在这次commit及之前被trakced了的文件才会被回溯

命令不会撤销指定的commit记录,只是回溯到本次操作刚实行之后,同时撤销需要commit生效

checkout自动调用git add,所以不用手动git add,直接commit即可

commit本次撤销:

git commit -m "went back to the original recipe with no bok choy"

撤销git add:

想要撤销某个文件的待提交状态

git reset HEAD [file]

这里只撤销待提交状态,但会保留file_name在当前目录的修改

将本次修改合并到上次的commit中:

git commit --amend

会更新上次的commit记录,不会生成本次的commit记录

回溯到上次commit操作刚完成后:

git checkout -- [file]

http://www.xdnf.cn/news/8683.html

相关文章:

  • 基于SpringBoot+Vue的家政服务系统源码适配H5小程序APP
  • Ubuntu24安装Ollama
  • 信息论基础
  • Spring Boot 中修改 HTTP 响应状态码(即 `response.status`)可以通过以下几种方式实现
  • springboot 多模块,打包为一个jar包
  • 1.4 TypeScript 编译是如何工作的?
  • Maven:在原了解基础上对pom.xml文件进行详细解读
  • Web安全技术体系
  • 恢复二叉搜索树:递归与中序遍历的智慧应用
  • [创业之路-374]:企业战略管理案例分析-战略制定/设计-市场洞察“五看”:看宏观之当前的国际环境、国家产业政策中的机会与风险
  • Redis学习打卡-Day6-Redis 高可用(上)
  • 在Visual Studio中进行cuda编程
  • Spark 中,创建 DataFrame 的方式(Scala语言)
  • 最宽温度范围文本格式PT1000分度表-200~850度及PT1000铂电阻温度传感器计算公式
  • Linux常用命令学习指南: 基础教程与实战应用
  • 【DAY28】类的定义和方法
  • H3C-W2000-G2【透明代理模式】
  • day11制作窗口(鼠标显示、图层和图层控制器、显示窗口、高速计数器、消除闪烁)
  • 力扣热题100之排序链表
  • 电脑网络如何改ip地址?ip地址改不了怎么回事
  • 白杨SEO:做AI搜索优化的DeepSeek、豆包、Kimi、百度文心一言、腾讯元宝、通义、智谱、天工等AI生成内容信息采集主要来自哪?占比是多少?
  • Microsoft.ClearScript.V8单例模式封装,方便下次使用。
  • Android12 launcher3修改App图标白边问题
  • Linux命令简介
  • 过滤器和拦截器的区别
  • web常见的攻击方式有哪些?如何防御?
  • 防止误触的手机锁屏实用工具
  • 跨平台兼容Setup PDF 编辑器页面合并拆分OCR 识别支持多语言
  • Jenkins的Pipline中有哪些区块,以及其它知识点整理
  • 【 大模型技术驱动智能网联汽车革命:关键技术解析与未来趋势】