首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
SQL-Server
›
Git基本使用教程(学习记录)
返回列表
发新帖
Git基本使用教程(学习记录)
[复制链接]
发表于 2024-6-25 02:02:18
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
参考文章链接:
Git教程(超详细,一文秒懂)
RUNOOB Git教程
Git学习记录
1Git概述
1.1
版本
控制软件
功能
版本
管理:更新或回退到历史上任何
版本
,数据
备份
共享
代码
:团队间共享
代码
,合作开发
1.2svn与git
上图来自RUNOOB Git教程
svn它集中式的版本控制,不能离线工作。git分布式的版本控制,它版本放在用户本身的电脑。
svn不支持离线工作,版本全部都放在是中央
服务器
。如果中央
服务器
挂了。那么版本全部丢失。
git支持离线工作。版本都放用户本身电脑上完成。---- 分布式的版本控制。
svn是项目对堆栈,git是堆栈对堆栈。
1.3Git工作机制
上图来自RUNOOB Git教程
图中左侧为
工作区
,右侧为版本库。在版本库中标记为 “index” 的区域是
暂存区(stage/index)
,标记为 “master” 的是 master 分支所代表的
目次树
;HEAD是指向当前分支的一个游标(别名),输入下令时可相互更换;
objects
标识的区域为 Git 的对象库,实际位于 “.git/objects” 目次下,内里包含了创建的各种对象及内容
在工作区写
代码
(**工作区:**就是你在电脑里能看到的目次。)
git add * 临时
存储
在暂存区(**暂存区:**英文叫 stage 或 index。一般存放在 .git 目次下的 index 文件(.git/index)中,以是我们把暂存区有时也叫作索引(index)),暂存区的目次树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中
git commit -m “ xxx” 提交在本地库并形貌(**版本库:**工作区有一个隐蔽目次 .git,这个不算工作区,而是 Git 的版本库),暂存区的目次树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目次树就是提交时暂存区的目次树
git push 上传到长途堆栈
上图来自RUNOOB Git教程
1.4Git和代码托管中心
代码托管中心是基于网络服务其的长途代码堆栈,简称为长途库
局域网
GitLab:本身搭建长途库
gogs:极易搭建的自助Git服务
互联网
GitHub
Gitee
1.5Git安装与设置
#安装
apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-dev
apt-get install git
git --version
# 输出:git version 1.8.1.2
#
配置
gitconfig
# /etc/gitconfig 文件:系统中对所有用户都普遍适用的
配置
。若使用 git config --system ,读写的就是这个文件
#~/.gitconfig 文件:用户目录下的
配置
文件只适用于该用户。若使用 git config --global ,读写的就是这个文件
#当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量
#下面--global 可以更换为 --system 或不加,意义如上
git config --global user.name "abc"
git config --global user.email
[email protected]
#查看已有配置信息
git config --list
#输出:user.name=abc
[email protected]
# 有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig、~/.gitconfig),不过最终 Git 实际采用的是最后一个。
复制代码
2Git常见下令
git config --global user.name xxx #设置用户名
git config --global user.email xxx #设置用户邮箱
git init #初始化本地库,生成一个 .git 目录,该目录包含了资源的所有元数据,
git init 文件夹名 #指定目录作为Git仓库,会在该目录下生成.git目录,所有Git需要的数据资源都放在该目录
#如果当前目录有几个文件想要纳入版本控制,需要先用git add命令告诉Git开始对这些文件进行跟踪,然后提交:
git add *.c
git add README
git commit -m "初始化项目版本"
git rm #将文件从暂存区和工作区中删除
git mv #移动或重命名工作区文件
git status #查看本地库状态
git add xxx #将xxx文件加入到暂存区
git commit -m "xxx" #提交到本地库并添加
日志
git reflog #查看历史记录
git reset --hard 版本号 #版本穿梭
git rm --cached 文件名 #清除暂存区文件
git checkout -- 文件名 #将暂存区中同名文件覆盖到工作区
git checkout 分支名 -- 文件名 #将本地库中同名文件覆盖到暂存区和工作区
git restore #恢复或撤销文件的更改
复制代码
2.1git status 查看本地库状态
首次查看,可看到分支,可看到无内容提交
增长文件后再次查看,文件显示为红色,意味着在工作区,git未追踪该文件
2.2git add 上传工作区文件至本地库
git add xxx
git status 会检测到暂存区有新文件
2.3git commit -m “日记信息” 文件名 提交至本地库
git commit -m 'first commit' hello.txt
2.4修改文件后,文件未被添加到暂存区,需重复上述操作
3历史版本
3.1git reflog 查看提交的版本及日记信息
3.2git log查看完整的提交版本及日记信息
git log [选项] [分支名/提交哈希]
常用的选项包括:
-p:显示提交的补丁(详细更改内容)
--oneline:以简洁的一行格式显示提交信息
--graph:以图形化方式显示分支和合并历史
--decorate:显示分支和标签指向的提交
--author=<作者>:只显示特定作者的提交
--since=<时间>:只显示指定时间之后的提交
--until=<时间>:只显示指定时间之前的提交
--grep=<模式>:只显示包含指定模式的提交消息
--no-merges:不显示合并提交
--stat:显示大略统计信息,包括修改的文件和行数
--abbrev-commit:使用短提交哈希值
--pretty=<格式>:使用自定义的提交信息显示格式
git blame 文件名 以列表形式显示修改记录
3.3版本穿梭
git reset 版本号暂存区的目次树会被重写,被定义版本号指向的目次树所更换,但工作区不受影响
git rm --cached 文件名会直接从暂存区删除文件,工作区不作出改变
git checkout . 或者 git checkout -- 文件名会用
暂存区全部或指定的文件更换工作区的文件
。这个操作很伤害,会扫除工作区中未添加到暂存区中的改动
git checkout 分支名 .或者git checkout -- 文件名会用定
义或指向分支中的全部或者部分文件更换暂存区和以及工作区中的文件
。这个下令也是极具伤害性的,由于不但会扫除工作区中未提交的改动,也会扫除暂存区中未提交的改动。
4Git分支操作
4.1分支概述及优点
在版本控制过程中,同时推进多个使命,为每个使命可以创建单独分支,意味着可以将工作从开发主线上分离开来,开发分支不影响主线运行,可明确为副本
并行推进多个
功能
开发,进步效率
各个分支在开发过程中,单个分支开发失败,不会影响其他分支,失败分支可重新开始
4.2分支操作
git branch 分支名 #创建分支
git branch -v #查看分支
git checkout 分支名 #切换分支
git checkout -b 分支名 #创建新分支并切换
git switch 分支名 #切换分支
git switch -c 新分支名 #创建新分支并切换
git merge 分支名 #把指定的分支合并到当前分支上
git branch -d 分支名 #删除分支
复制代码
4.2.1查看分支
git branch -v
4.2.2创建分支
git branch 分支名
4.2.3切换分支
git checkout 分支名
4.2.4合并分支
git checkout 主分支
git merge 分支名
分支冲突:当要合并的两个分支存在对同一文件进行修改,git无法确定作哪一修改
办理冲突:修改master中类似文件的内容,不修改合并分支中类似文件的内容
在master分支确定要修改的文件及内容,git add 文件名
git commit -m “日记” (后不能加文件名,否则会报错)
合并分支的同文件不做改变,git merge 合并分支名
4.2.5删除分支
git branch -d 分支名
5长途堆栈
上图来自RUNOOB Git教程
5.1在github/gittee上创建长途堆栈
5.2长途堆栈操作
git remote -v #查看当前所有远程地址别名
git remote add 别名 远程地址 #起别名(第一次)
git push 别名 分支 #推送本地分支上的内容到远程仓库
git clone 远程地址 #将远程仓库的内容科隆到本地(第一次)
git pull 远程库地址别名 远程分支名 #将远程仓库对于分支最新内容拉下来后与当前本地分支直接将合并
复制代码
5.2.1克隆堆栈到本地
git clone 长途地址,实行该下令会默认处于master分支下,也会主动将origin设置成该长途堆栈的标识符
git clone 长途地址 新名字克隆堆栈并在本地修改堆栈名
设置提交代码时的用户信息
git config --global user.name "abc"
git config --global user.email
[email protected]
#如果去掉 --global 参数只对当前仓库有效。
复制代码
5.2.2未工作区增久长途堆栈
git remote -v #先查看当前所有远程地址一般会叫origin
git remote add 仓库别名 远程地址 #增加远程仓库
git remote -v #再次查看当前所有远程地址
#会有两个仓库,又分别有1个可以推送(push) 一个可以拉取(fetch)
#删除仓库
git remote rm 仓库名
复制代码
5.2.3推送本地分支到长途堆栈
git push 长途堆栈地址别名 分支名,推送的最小单元是分支,以是一定要指定分支,例如:git push origin master
5.2.4拉取长途堆栈内容
git pull 长途堆栈地址别名 分支名,例如:git pull origin master
6版本控制(查看与更新长途分支)
git fetch 获取长途堆栈中最新的提交和分支信息,但不会主动合并到当前分支上
例如:git fetch origin 从名为origin的长途堆栈获取所有分支的最新更改
git diff 比较本地分支和长途分支之间的差异,制止潜伏冲突,例如git diff HEAD origin/分支名,HEAD 是指当前分支的最新提交
然后进行合并:git merge orgin/分支名
回复
使用道具
举报
返回列表
浏览过的版块
Java
人工智能
数据安全
物联网
Oracle
数据仓库与分析
开源技术
分布式数据库
SAAS
我可以不吃啊
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表