搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
繁依Fanyi0
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
winscp linux命令,使用WinSCP实现Windows与Linux之间的文件传输
2
图像风格迁移实战
3
【重制版】Unity Meta Quest 一体机开发:前期准备,Meta XR SDK导入和环境配置,配置玩家物体_meta quest sdk接口
4
Ai绘画 | 机甲少女(含Prompt提示词)_机甲女孩画图关键词
5
Python heapq实现大顶堆_python heapq大顶堆
6
SQL Formatter
7
40-岁的中年失业者怎么活下去?,零基础入门学习android_40岁失业的中年人,怎么活下去?
8
《数据库系统概念》学习笔记——第五章 高级SQL_触发器和递归查询
9
MySQL数据查询语言(DQL)_mysql数据查询语言的缩写
10
Angular目录结构分析以及app.module.ts详解_app.module.ts这个文件没有生成怎么办
当前位置:
article
> 正文
git管理工具
作者:繁依Fanyi0 | 2024-06-13 00:40:43
赞
踩
git管理工具
Bash – CMD – GUI 区别
◼
Bash
,
Unix shell
的一种,
Linux
与
Mac OS X
都将它作为默认
shell
。
Git Bash
就是一个
shell
,是
Windows
下的命令行工具
,可以
执行
Linux
命令
;
Git Bash
是
基于
CMD
的,在
CMD
的基础上增添一些新的命令与功能
;
所以建议在使用的时候,
用
Bash
更加方便
;
◼
Git CMD
命令行提示符(
CMD
)是
Windows
操作系统上的命令行解释程序
;
当你在
Windows
上安装
git
并且习惯使用命令行时,可以使用
cmd
来运行
git
命令;
◼
Git GUI
基本上针对那些不喜欢黑屏(即命令行)编码的人;
它提供了一个
图形用户界面
来运行
git
命令;
◼
Git
自带一个
git config
的工具来帮助设置控制
Git
外观和行为的配置变量:
/etc/gitconfig
文件
:包含系统上每一个用户及他们仓库的通用配置
如果在执行
git config
时带上
--system
选项,那么它就会读写该文件中的配置变量;
由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。(开发中通常不修改)
~/.gitconfig
或
C/
用户
/coderwhy/.gitconfig
文件
:只针对当前用户
你可以传递
--global
选项让
Git
读写此文件,这会对你系统上 所有 的仓库生效;
当前使用仓库的
Git
目录中的
config
文件(即
.git/config
)
:针对该仓库
你可以传递
--local
选项让
Git
强制读写此文件,虽然默认情况下用的就是它;
◼
安装Git后,
要做的第一件事就是设置你的用户名和邮件地址。
这一点很重要,因为
每一个
Git
提交都会使用这些信息
,它们
会写入到你的每一次提交
中,不可更改;
如果使用了
--global 选项,那么该命令只需要运行一次
,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息;
◼
检测当前的配置信息:
git config --list
◼
Git 并不会在你输入部分命令时自动推断出你想要的命令:
如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松地为每一个命令设置一个别名。
获取Git仓库 – git init/git clone
◼
我们需要一个Git来管理源代码,那么我们本地也需要有一个Git仓库。
◼
通常有两种获取 Git 项目仓库的方式:
方式一:
初始化一个Git仓库
,并且可以将当前项目的文件都添加到Git仓库中(目前很多的脚手架在创建项目时都会默认创建一个Git仓库);
方式二:
从其它服务器 克隆(clone) 一个已存在的 Git 仓库
(第一天到公司通常我们需要做这个操作);
◼
方式一:初始化Git仓库
该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的核心;
但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪;
◼
方式二:从Git远程仓库
获取Git仓库 – git init/git clone
◼
现在我们的电脑上已经有一个Git仓库:
在实际开发中,你需要将
某些文件交由这个Git仓库
来管理;
并且我们之后
会修改文件的内容
,当
达成某一个目标时,想要记录下来这次操作
,就
会将它提交到仓库
中;
◼
那么我们需要对文件来划分不同的状态,以确定这个文件是否已经归于Git仓库的管理:
未跟踪
:默认情况下,Git仓库下的文件也没有添加到Git仓库管理中,我们需要通过add命令来操作;
已跟踪
:添加到Git仓库管理的文件处于已跟踪状态,Git可以对其进行各种跟踪管理;
◼
已跟踪的文件又可以进行细分状态划分:
staged
:暂缓区中的文件状态;
Unmodified
:commit命令,可以将staged中文件提交到Git仓库
Modified
:修改了某个文件后,会处于Modified状态;
◼
在工作时,你可以选择性地将这些修改过的文件放入暂存区;
Git操作流程图
检测文件的状态 - git status
◼
我们在有Git仓库的目录下新建一个文件,查看文件的状态:
◼
Untracked files:未跟踪的文件
未跟踪的文件意味着
Git
在之前的提交中没有这些文件;
Git
不会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”;
◼
我们也可以查看更加简洁的状态信息:
git status –s
git status --short
文件添加到暂存区 – git add
◼
跟踪新文件命令:
使用命令
git add
开始跟踪一个文件。
◼
跟踪修改的文件命令:
如果我们已经跟踪了某一个文件,这个时候修改了文件也需要重新添加到暂存区中;
◼
通过
git add .
将所有的文件添加到暂存区中:
git add aaa.js
git add .
git忽略文件
◼
一般我们总会有些文件无需纳入
Git
的管理,也不希望它们总出现在
未跟踪文件列表。
通常都是些
自动生成的文件
,比如日志文件,或者编译过程中创建
的临时文件等;
我们可以创建一个名为
.gitignore 的文件
,列出要忽略的文件的模
式;
◼
在实际开发中,这个文件通常不需要手动创建,在必须的时候添加自
己的忽略内容即可;
◼
比如右侧是创建的Vue项目自动创建的忽略文件:
包括一些不需要提交的文件、文件夹;
包括本地环境变量文件;
包括一些日志文件;
包括一些编辑器自动生成的文件;
文件更新提交 – git commit
◼
现在的暂存区已经准备就绪,可以提交了。
每次准备提交前,先用 git status 看下,你所需要的文件是不是都已暂存起来了;
再运行提交命令 git commit;
可以在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行;
◼
如果我们修改文件的add操作,加上commit的操作有点繁琐,那么可以将两个命令结合来使用:
查看提交的历史 – git log
◼
在提交了若干更新,又或者克隆了某个项目之后,有时候我们想要查看一下所有的历史提交记录。
◼
这个时候我们可以使用
git log
命令:
不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面;
这个命令会列出每个提交的
SHA-1
校验和、作者的名字和电子邮件地址、提交时间以及提交说明;
◼ git reflog可以查看历史回退版本操作
版本回退 – git reset
◼
如果想要进行版本回退,我们需要先知道目前处于哪一个版本:Git通过HEAD指针记录当前版本。
HEAD
是当前分支引用的指针,它总是指向该分支上的最后一次提交;
理解
HEAD
的最简方式,就是将它看做
该分支上的最后一次提交
的快照;
◼
我们可以通过HEAD来改变Git目前的版本指向:
上一个版本就是HEAD^,上上一个版本就是HEAD^^;
如果是上1000个版本,我们可以使用HEAD~1000;
我们可以可以指定某一个commit id;
git reset --hard HEAD^
git reset --hard HEAD~1000
git reset --hard 2d44982
远程仓库的验证
◼
常见的远程仓库有哪些呢?目前比较流行使用的是三种:
GitHub:
https://github.com/
Gitee:
https://gitee.com/
自己搭建Gitlab
◼
目前Git服务器验证手段主要有两种:
方式一:基于
HTTP的凭证存储
(
Credential Storage
);
方式二:基于
SSH的密钥
;
◼
因为本身HTTP协议是无状态的连接,所以每一个连接都需要用户名和密码:
如果每次都这样操作,那么会非常麻烦;
幸运的是,
Git
拥有一个凭证系统来处理这个事情;
◼
下面有一些
Git Crediential
的选项:
选项一:默认所有都不缓存。 每一次连接都会询问你的用户名和密码;
选项二:“
cache”
模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在
15
分钟后从内存中清除;
选项三:“
store”
模式会将凭证用明文的形式存放在磁盘中,并且永不过期;
选项四:如果你使用的是
Mac
,
Git
还有一种 “
osxkeychain”
模式,它会将凭证缓存到你系统用户的钥匙串中(加密的);
选项五:如果你使用的是
Windows
,你可以安装一个叫做 “
Git Credential Manager for Windows”
的辅助工具;
可以在
https://github.com/Microsoft/Git-Credential-Manager-for-Windows
下载。
◼
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。
◼
SSH以非对称加密实现身份验证。
例如其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;
另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录;
公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管;
◼
如果我们以SSH的方式访问Git仓库,那么就需要生产对应的公钥和私钥:
远程仓库的验证 – SSH密钥
ssh-keygen -t ed25519 -C “your email"
管理远程服务器
◼
查看远程地址:比如我们之前从GitHub上clone下来的代码,它就是有自己的远程仓库的:
-v
是
—verbose
的缩写
(
冗长的
)
◼
添加远程地址:我们也可以继续添加远程服务器(让本地的仓库和远程服务器仓库建立连接):
git remote add <shortname> <url>
git remote add gitlab http://152.136.185.210:7888/coderwhy/gitremotedemo.git
◼
重命名远程地址:
git remote rename gitlab glab
◼
移除远程地址:
git remote remove gitlab
本地分支的上游分支(跟踪分支)
◼
问题一:当前分支没有track的分支
◼
原因:当前分支没有和远程的origin/master分支进行跟踪
在没有跟踪的情况下,我们直接执行pull操作的时候必须指定从哪一个远程仓库中的哪一个分支中获取内容;
◼
如果我们想要直接执行git fetch是有一个前提的:必须给当前分支设置一个跟踪分支:
拒绝合并不相干的历史
◼
问题二:合并远程分支时,拒绝合并不相干的历史
◼
原因:我们将两个不相干的分支进行了合并:
https://stackoverflow.com/questions/37937984/git-refusing-to-merge-unrelated-histories-on-rebase
简单来说就是:过去git merge允许将两个没有共同基础的分支进行合并,这导致了一个后果:新创建的项目可能被一个毫不 怀疑的维护者合并了很多没有必要的历史,到一个已经存在的项目中,目前这个命令已经被纠正,但是我们依然可以通过
--
allow-unrelated-histories
选项来逃逸这个限制,来合并两个独立的项目;
远程仓库的交互
◼
从远程仓库clone代码:
将存储库克隆到新创建的目录中;
git clone http://152.136.185.210:7888/coderwhy/gitremotedemo.git
◼
将代码push到远程仓库:将本地仓库的代码推送到远程仓库中;
默认情况下是将当前分支(比如master)push到origin远程仓库的;
git push
git push origin master
◼
从远程仓库fetch代码:从远程仓库获取最新的代码
默认情况下是从origin中获取代码;
git fetch
git fetch origin
获取到代码后默认并没有合并到本地仓库,我们需要通过merge来合并;
git merge
git merge origin/master
◼
从远程仓库pull代码:上面的两次操作有点繁琐,我们可以通过一个命令来操作
远程仓库的交互
git pull
git fetch + git merge(rebase)
总结
情况一:已有远程仓库
git clone XXX
git add.
git commit -m "提交"
git pull
git push
情况二:全新项目
创建远程仓库
git clone XXX
在clone下来的文件夹中搭建项目
git add.
git commit -m ""
git push
情况三:本地仓库搭建
创建一个本地仓库和搭建本地项目
git remote add origin 远程地址
git branch --set-upstream-to=origin/master
git fetch
git merge --allow-unrelated-histories
git push
常见命令
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/710259
推荐阅读
article
软件测试——代码
管理工具
Git
、
Source
tree
...
Git
是一款版本控制工具,我们首先可以将其理解成多人协同开发代码的
管理工具
,每个人员的代码交给
Git
进行管理时,都会由...
赞
踩
article
SQL
Formatter
...
SQL
Formatter
SQL
Formatter
是一个开源的 SQL 代码美化工具,可以帮助用户将不规范的 SQL...
赞
踩
article
怎么
更改
android
的
包名
,
使其可以变成另外一个
app
_
android
更改
包名
...
在 Android 中
更改
应用
的
包名
并不是一项简单
的
任务
,
因为
包名
在应用
的
整个代码和配置文件中都被广泛使用。使用IDE
的
...
赞
踩
article
YOLOv5
-
6.1
从训练到部署(一):
环境
安装
、示例
检测
、
推理
文件
的导出与可视化_
yolov5
6...
本系列文章是演示如何使用Ultralytics公司的开源项目
YOLOv5
-
6.1
版本进行目标
检测
的文章,包括直接使用官方...
赞
踩
article
Docker
使用
过程中
需要
关注的五项
安全
问题
...
2019独角兽企业重金招聘Python工程师标准>>> ..._docker
使用
过程中
需要
注意...
赞
踩
article
LeetCode
鸡蛋
掉落
(
最清晰
的
解法)_
扔
鸡蛋
leetcode
...
你将获得 K 个
鸡蛋
,并可以使用一栋从 1 到 N 共有 N 层楼
的
建筑。每个蛋
的
功能都是一样
的
,如果一个蛋碎了,你就不...
赞
踩
article
[
word
]
word
文档
特殊
符号
在
哪里找
? #其他#学习方法#职场发展
_
word
文档
中如何找%%
c
...
1、打开一个新建的
word
文档
,依次点击“插入”-“
符号
“,在下拉菜单中点击”其他
符号
“2、在弹出的对话框中单击包含所需...
赞
踩
article
基于
FPGA
的
简易
电子琴
Verilog
代码
Quartus
仿真_基于
verilog
的
简易
电子琴
...
代码功能:简易
电子琴
电路设计要求1.输入量为8个按键,每个按键对应一个音阶;输出量为 SPEAKER。当其中一个按键按下...
赞
踩
article
Redisson
一分钟
学会【
通俗易懂
】...
Redisson
介绍,
Redisson
教学,
Redisson
实操,
Redisson
分布式锁,
Redisson
缓存_red...
赞
踩
article
pl
/
sql
developer
的
字符集
问题_
pl
sql
developer
调整
字符集
...
今天装
pl
/
sql
developer
后,连接远程数据库,查询后查询结果乱码。。。 解决如下: 创建一个名为“NLS_L...
赞
踩
article
pyspark
之
Structured
Streaming
文件
file
案例_
pyspark
操作stru...
【代码】
pyspark
之
Structured
Streaming
文件
file
案例。_
pyspark
操作structure...
赞
踩
article
【
YOLOv10
改进
[
CONV
]】
轻量级
架构
AKConv
助力
YOLOv10
目标
检测
效果 + 含全部代...
轻量级
架构
AKConv
助力
YOLOv10
目标
检测
效果 + 含全部代码和详细
修改
方式 + 手撕
结构图
+ 有效涨点 + 全...
赞
踩
article
PySpark
—— 流
计算
_
pyspark
stream
...
流
计算
(或流处理),处理在线的实时数据,单次处理数据量小,速度较快_
pyspark
stream
pyspark
stre...
赞
踩
article
Redisson
—
分布式
集合
详述_
rlocalcachedmap
...
Redisson
—
分布式
集合
_
rlocalcachedmap
rlocalcachedmap
7....
赞
踩
article
使用v-
md
-
editor
开发
sql
查看器
--
实战_前端
sql
编辑器
插件...
sql
查看器
,借助v-
md
-
editor
实现
sql
在线
查看器
,_前端
sql
编辑器
插件前端
sql
编辑器
插件 ...
赞
踩
article
Docker
运行新版
linux
原生
微信
和
WPS
的方法(原创)_
docker
运行
微信
...
最近网络上有人泄露了正在测试的
linux
原生的
微信
(参考:https://www.52pojie.cn/thread...
赞
踩
article
NPOI
使用手册
_
tonyqu
屈荆波...
NPOI
使用手册
此内容转自:http://blog.csdn.net/pan_junbiao/article/detai...
赞
踩
article
文心
一
言
VS 讯飞星火 VS
chatgpt
(
250
)
--
算法导论18.2 3题...
在B树
(
也称为B-tree
)
中,最小的关键字总是位于最左边的叶子节点的最左边的元素。要找到最小关键字,你需要从根节点开始...
赞
踩
article
Windows
Terminal
配置
美化 +
Git
配置
+ 管理员
配置
_
windows
termi...
Windows
Terminal
配置
美化 +
Git
配置
+ 管理员
配置
_
windows
terminal
梅花wind...
赞
踩
article
40
-岁
的
中年
失业
者怎么
活下去
?,零基础入门学习
android
_
40
岁
失业
的
中年
人,怎么
活下去
?...
看见这个标题我就移不开眼了,因为我自己也三十好几了,这个问题让我有些在意,就一口气滑下去,看完了。提这个问题
的
人在后面讲...
赞
踩
相关标签
git
gitee
android
YOLO
运维
python
数据库
word
学习方法
职场和发展
笔记
fpga开发
redis
分布式
缓存
mysql
spark
人工智能
计算机视觉
目标检测
OD
YOLOv10改进
大数据