概述

安装Git

下载官方网站,下载后安装包样式:双击安装,安装成功后右键文件会有如下选项证明安装成功。

基本配置

  1. 设置用户信息,桌面右键,选择Git bash here
hecheng@LAPTOP-OJQFEH00 MINGW64 ~/Desktop
$ git config --global user.name "hecheng" hecheng@LAPTOP-OJQFEH00 MINGW64 ~/Desktop
$ git config --global user.email "hecheng@qq.com"

自己编写自己的用户名和邮箱,之后可以查看,效果如下

基本操作

  1. 创建文件——>提交到缓存区——>提交到仓库
hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest
$ git init
Initialized empty Git repository in E:/GitTest/.git/ hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ ll
total 8
drwxr-xr-x 1 hecheng 197121 0 7月 17 16:18 ./
drwxr-xr-x 1 hecheng 197121 0 7月 17 16:17 ../
drwxr-xr-x 1 hecheng 197121 0 7月 17 16:18 .git/ hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ touch file01.txt hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git status
On branch master No commits yet Untracked files:
(use "git add <file>..." to include in what will be committed)
file01.txt nothing added to commit but untracked files present (use "git add" to track) hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git add . hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git status
On branch master No commits yet Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: file01.txt hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git commit -m "add file01"
[master (root-commit) e205281] add file01
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file01.txt hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git status
On branch master
nothing to commit, working tree clean hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git log
commit e2052811960420feb66b8b7bef48980537ea859b (HEAD -> master)
Author: hecheng <hecheng@qq.com>
Date: Mon Jul 17 16:30:35 2023 +0800 add file01

  1. 修改文件后,文件又进入工作区
hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ 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: file01.txt no changes added to commit (use "git add" and/or "git commit -a") hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git add . hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: file01.txt hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git commit -m "update file01"
[master 033fcd2] update file01
1 file changed, 1 insertion(+) hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git log
commit 033fcd2c7386e611bff68c325ab2c770e075f014 (HEAD -> master)
Author: hecheng <hecheng@qq.com>
Date: Mon Jul 17 16:36:21 2023 +0800 update file01 commit e2052811960420feb66b8b7bef48980537ea859b
Author: hecheng <hecheng@qq.com>
Date: Mon Jul 17 16:30:35 2023 +0800 add file01

  1. 版本回退
hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* 033fcd2 (HEAD -> master) update file01
* e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git reset --hard e205281
HEAD is now at e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* e205281 (HEAD -> master) add file01

  1. 查看已删除的记录
$ git reflog
033fcd2 (HEAD -> master) HEAD@{0}: reset: moving to 033fcd2
e205281 HEAD@{1}: reset: moving to e205281
033fcd2 (HEAD -> master) HEAD@{2}: commit: update file01
e205281 HEAD@{3}: commit (initial): add file01

Git分支

  1. 查看,创建,切换分支
hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git branch
* master hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git branch dev01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* 033fcd2 (HEAD -> master, dev01) update file01
* e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ touch .gitignore hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore nothing added to commit but untracked files present (use "git add" to track) hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git add . hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .gitignore hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git commit -m "add ignore file"
[master 4008424] add ignore file
1 file changed, 1 insertion(+)
create mode 100644 .gitignore hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git status
On branch master
nothing to commit, working tree clean hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* 4008424 (HEAD -> master) add ignore file
* 033fcd2 (dev01) update file01
* e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git checkout dev01
Switched to branch 'dev01' hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev01)
$ git checkout master
Switched to branch 'master' hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git checkout -b dev02
Switched to a new branch 'dev02'

  1. 合并、删除分支
hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev02)
$ git checkout master
Switched to branch 'master' hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* 4008424 (HEAD -> master, dev02) add ignore file
* 033fcd2 (dev01) update file01
* e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git checkout dev01
Switched to branch 'dev01' hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev01)
$ touch file02.txt hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev01)
$ git add . hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev01)
$ git commit -m 'add file02'
[dev01 f2a85f1] add file02
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file02.txt hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev01)
$ git-log
* f2a85f1 (HEAD -> dev01) add file02
| * 4008424 (master, dev02) add ignore file
|/
* 033fcd2 update file01
* e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev01)
$ git checkout master
Switched to branch 'master' hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git merge dev01
Merge made by the 'ort' strategy.
file02.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file02.txt hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* c3ebaa2 (HEAD -> master) Merge branch 'dev01'
|\
| * f2a85f1 (dev01) add file02
* | 4008424 (dev02) add ignore file
|/
* 033fcd2 update file01
* e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git branch -d dev02
Deleted branch dev02 (was 4008424). hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* c3ebaa2 (HEAD -> master) Merge branch 'dev01'
|\
| * f2a85f1 (dev01) add file02
* | 4008424 add ignore file
|/
* 033fcd2 update file01
* e205281 add file01



强制删除

hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* 88d63ff (dev02) abcde
* b357906 (HEAD -> master) Merge branch 'dev'
|\
| * b6c3192 update file01 count-2
* | d9ed7d0 update file01 count-3
|/
* c3ebaa2 Merge branch 'dev01'
|\
| * f2a85f1 add file02
* | 4008424 add ignore file
|/
* 033fcd2 update file01
* e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git branch -d dev02
error: The branch 'dev02' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev02'. hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git branch -D dev02
Deleted branch dev02 (was 88d63ff). hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* b357906 (HEAD -> master) Merge branch 'dev'
|\
| * b6c3192 update file01 count-2
* | d9ed7d0 update file01 count-3
|/
* c3ebaa2 Merge branch 'dev01'
|\
| * f2a85f1 add file02
* | 4008424 add ignore file
|/
* 033fcd2 update file01
* e205281 add file01

  1. 解决冲突
hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git checkout -b dev
Switched to a new branch 'dev' hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev)
$ git status
On branch dev
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: file01.txt no changes added to commit (use "git add" and/or "git commit -a") hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev)
$ git add . hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev)
$ git commit -m "update file01 count-2"
[dev b6c3192] update file01 count-2
1 file changed, 1 insertion(+), 1 deletion(-) hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev)
$ git-log
* b6c3192 (HEAD -> dev) update file01 count-2
* c3ebaa2 (master) Merge branch 'dev01'
|\
| * f2a85f1 add file02
* | 4008424 add ignore file
|/
* 033fcd2 update file01
* e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (dev)
$ git checkout master
Switched to branch 'master' hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git add . hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git commit -m "update file01 count-3"
[master d9ed7d0] update file01 count-3
1 file changed, 1 insertion(+), 1 deletion(-) hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
Merge branch 'dev' [master b357906] Merge branch 'dev' hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git-log
* b357906 (HEAD -> master) Merge branch 'dev'
|\
| * b6c3192 (dev) update file01 count-2
* | d9ed7d0 update file01 count-3
|/
* c3ebaa2 Merge branch 'dev01'
|\
| * f2a85f1 add file02
* | 4008424 add ignore file
|/
* 033fcd2 update file01
* e205281 add file01

  1. 分支创建原则

    master,主分支,用于发行的版本,develop,开发的分支,feature(可以删除),功能的分支,hotfix,修复bug的分支,feature合并到develop,develop合并到master,用户反馈到bug,创建hotfix分支,写好修复代码后,分别合并到master分支和develop分支。

四、远程仓库

1.

创建码云账户,创建仓库,获取公匙。

再连接本地仓库与远程仓库(添加远程仓库:git remote add 远端名称 仓库路径),查看远程仓库,将代码推送到远程仓库(git push 远端名称 本地分支名:远端分支名),查看关联关系:git branch -vv

hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git remote add origin git@gitee.com:hecheng11223/git_-test.git hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git remote
origin hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git push origin master
Enumerating objects: 22, done.
Counting objects: 100% (22/22), done.
Delta compression using up to 16 threads
Compressing objects: 100% (14/14), done.
Writing objects: 100% (22/22), 1.82 KiB | 621.00 KiB/s, done.
Total 22 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:hecheng11223/git_-test.git
* [new branch] master -> master hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git push origin master:master
Everything up-to-date
hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git push --set-upstream origin master
Everything up-to-date
branch 'master' set up to track 'origin/master'. hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git push
Everything up-to-date
hecheng@LAPTOP-OJQFEH00 MINGW64 /e/GitTest (master)
$ git branch -vv
* master b357906 [origin/master] Merge branch 'dev'

2.

从远程仓库克隆

hecheng@LAPTOP-OJQFEH00 MINGW64 /e/Git_Study
$ git clone git@gitee.com:hecheng11223/git_-test.git hello-git
Cloning into 'hello-git'...
remote: Enumerating objects: 22, done.
remote: Counting objects: 100% (22/22), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 22 (delta 3), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (22/22), done.
Resolving deltas: 100% (3/3), done.
hecheng@LAPTOP-OJQFEH00 MINGW64 /e/Git_Study/hello-git (master)
$ git-log
* b357906 (HEAD -> master, origin/master, origin/HEAD) Merge branch 'dev'
|\
| * b6c3192 update file01 count-2
* | d9ed7d0 update file01 count-3
|/
* c3ebaa2 Merge branch 'dev01'
|\
| * f2a85f1 add file02
* | 4008424 add ignore file
|/
* 033fcd2 update file01
* e205281 add file01

从远程仓库抓取和拉取

hecheng@LAPTOP-OJQFEH00 MINGW64 /e/Git_Study/hello-git (master)
$ git fetch
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), 229 bytes | 76.00 KiB/s, done.
From gitee.com:hecheng11223/git_-test
b357906..c9b33a5 master -> origin/master hecheng@LAPTOP-OJQFEH00 MINGW64 /e/Git_Study/hello-git (master)
$ git-log
* c9b33a5 (origin/master, origin/HEAD) add file03
* b357906 (HEAD -> master) Merge branch 'dev'
|\
| * b6c3192 update file01 count-2
* | d9ed7d0 update file01 count-3
|/
* c3ebaa2 Merge branch 'dev01'
|\
| * f2a85f1 add file02
* | 4008424 add ignore file
|/
* 033fcd2 update file01
* e205281 add file01 hecheng@LAPTOP-OJQFEH00 MINGW64 /e/Git_Study/hello-git (master)
$ git merge origin/master
Updating b357906..c9b33a5
Fast-forward
file04.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file04.txt hecheng@LAPTOP-OJQFEH00 MINGW64 /e/Git_Study/hello-git (master)
$ git pull
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), 208 bytes | 69.00 KiB/s, done.
From gitee.com:hecheng11223/git_-test
c9b33a5..418f89f master -> origin/master
Updating c9b33a5..418f89f
Fast-forward
file05.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file05.txt hecheng@LAPTOP-OJQFEH00 MINGW64 /e/Git_Study/hello-git (master)
$ git-log
* 418f89f (HEAD -> master, origin/master, origin/HEAD) add file05
* c9b33a5 add file03
* b357906 Merge branch 'dev'
|\
| * b6c3192 update file01 count-2
* | d9ed7d0 update file01 count-3
|/
* c3ebaa2 Merge branch 'dev01'
|\
| * f2a85f1 add file02
* | 4008424 add ignore file
|/
* 033fcd2 update file01
* e205281 add file01

一篇博客带你上手Git的更多相关文章

  1. 一篇博客带你学会MyBatis

    概念 MyBatis是一款持久层框架,用于简化JDBC操作(JavaEE三层架构:表现层(用来做页面的代码),业务层(业务逻辑代码),持久层(对数据库操作的代码))(框架就是一个半成品软件,是一套可重 ...

  2. 一篇博客带你入门Flask

    一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不 ...

  3. 一篇博客带你轻松应对java面试中的多线程与高并发

    1. Java线程的创建方式 (1)继承thread类 thread类本质是实现了runnable接口的一个实例,代表线程的一个实例.启动线程的方式start方法.start是一个本地方法,执行后,执 ...

  4. 一篇博客带你轻松应对Springboot面试

    1. SpringBoot简介 SpringBoot是简化Spring应用开发的一个框架.他整合了Spring的技术栈,提供各种标准化的默认配置.使得我们可以快速开发Spring项目,免掉xml配置的 ...

  5. 一遍博客带你上手Servlet

    概念 Servlet其实就是Java提供的一门动态web资源开发技术.本质就是一个接口. 快速入门 创建web项目,导入servlet依赖坐标(注意依赖范围scope,是provided,只在编译和测 ...

  6. 通通的最后一篇博客(附自制html5平面射击小游戏一枚)

    这是我最后一篇博客了,由于本人的人生规划吧,以后应该也写不出什么好的技术文章了,到现在在博客园写了2年, 今天一看,我也有了120个粉丝,好几万的浏览量,感谢大家的支持啊~~ 半年没有写博客了,由于半 ...

  7. 第一篇博客 ---- 分享关于Maven使用的一些技巧

    Maven环境搭建 在官网上下载maven安装包,地址:http://maven.apache.org/download.cgi . 解压文件到电脑坐在盘符目录,如E:\apache-maven-3. ...

  8. 小白两篇博客熟练操作MySQL 之 第二篇

    小白两篇博客熟练操作MySQL  之   第二篇 一. 视图 视图是一个虚拟表,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集, 并可以将其当做表来使用. s ...

  9. 鸿蒙内核源码分析(编译脚本篇) | 如何防编译环境中的牛皮癣 | 百篇博客分析OpenHarmony源码 | v58.01

    百篇博客系列篇.本篇为: v58.xx 鸿蒙内核源码分析(环境脚本篇) | 编译鸿蒙原来如此简单 | 51.c.h.o 本篇用两个脚本完成鸿蒙(L1)的编译环境安装/源码下载/编译过程,让编译,调试鸿 ...

  10. 鸿蒙内核源码分析(ELF解析篇) | 你要忘了她姐俩你就不是银 | 百篇博客分析OpenHarmony源码 | v53.02

    百篇博客系列篇.本篇为: v53.xx 鸿蒙内核源码分析(ELF解析篇) | 你要忘了她姐俩你就不是银 | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应 ...

随机推荐

  1. ai问答:使用 Vue3 组合式API 和 TS 封装 websocket 断线重连

    这是一个使用 Vue3 组合式 API 和 TS 封装 websocket 的例子 这个组件在 setup 中: 创建了一个 WebSocket 连接 定义了 sendMessage 方法发送消息 监 ...

  2. Pwn系列之Protostar靶场 Stack0题解

    前提学习 GDB反调试相关 设置反汇编代码格式为intel格式 set disassembly-flavor intel 反汇编函数 disas/disass/disassemble 函数名/起始地址 ...

  3. #Python基础 pandas索引设置

    一:XMIND 二:设置索引 示例数据,假设我们有一个DataFrame对象,如下: import pandas as pd df = pd.DataFrame({ "name": ...

  4. 文心一言 VS chatgpt (15)-- 算法导论3.2 4~5题

    四.函数 $\lceil \lg n \rceil !$ 多项式有界吗?函数 $\lceil \lg \lg n \rceil !$ 多项式有界吗? 文心一言: chatgpt: 对于第一个问题,函数 ...

  5. 2021-02-06:假设字符串str长度为N,请问最长回文子串的长度是多少?

    福哥答案2021-02-06: 1.动态规划.无代码,见图.2.中心扩展法.无代码.3.Manacher算法.有代码,见图.1)理解回文半径数组.2)理解所有中心的回文最右边界R,和取得R时的中心点C ...

  6. 2022-02-13:k8s安装gitlab,yaml如何写?

    2022-02-13:k8s安装gitlab,yaml如何写? 答案2022-02-13: yaml如下: apiVersion: apps/v1 kind: Deployment metadata: ...

  7. remote: HTTP Basic:Access denied fatal:Authentication failed for

    近来在一天新电脑上面使用git pull 一个项目,老是提示 Access denied, 找了许多方法,ssh key这些都配置了还是不行,当时别提有多尬 看嘛这就是pull 时的提示 // *** ...

  8. Kotlin难点

    目录 高阶函数 双冒号 函数引用 类引用 属性引用 匿名函数 Lambda 表达式 例子 作用域函数 高阶函数 高阶函数是将函数用作参数或返回值的函数,还可以把函数赋值给一个变量. 所有函数类型都有一 ...

  9. SpringBoot进阶教程(七十六)多维度排序查询

    在项目中经常能遇到,需要对某些数据集合进行多维度排序的需求.对于集合多条件排序解决方案也有很多,今天我们就介绍一种,思路大致是设置一个分值的集合,这个分值是按照需求来设定大小的,再根据分值的大小对集合 ...

  10. 强国杯南部西部赛区分区晋级赛WP

    Misc 空白文件 解压的文件,通过kali strings 查看到base64加密,把%7B换成'{',%7D换成'}' 迷惑的时间 导出3.jpg原始数据信息 去掉没用的头部信息,得到3.jpg图 ...