Git版本工具学习

目录

版本控制

本地版本控制:在本地记录每一次版本更新。

集中版本控制:版本数据都保存在单一服务器,不联网就看不到版本信息。SVN

分布式版本控制:所有的版本信息都同步到本地的每个用户,可以离线在本地提交,只需在联网时push。Git

++SVN与Git的区别:++

  • SVN 是集中式的;Git 是分布式的
  • SVN 的分支操作成本(创建/删除/合并)比 Git 高
  • SVN 是存储变更差异;Git 是存储文件快照
  • SVN必须联网操作,只有服务器上的版本控制;Git支持离线操作,有本地的版本控制
git配置

1)git\mingw64\etc\gitconfig ,--system系统级

2)C:\Users\用户\.gitconfig ,--global全局

Git branch 获取分支列表 ,列表保存到refs/heads/master 下面。

git config -l,配置清单

git config --system --list,系统配置

git config --global --list,全局配置(用户配置)

安装好git后,设置用户名和邮箱(必要):

shell 复制代码
git config --global user.name "xxx"
git config --global user.email "xxx@qq.com"

配置ssh公私钥连接远程仓库:

在c:/Users/用户/.ssh下打开git bash,运行ssh-kengen生成公私钥,将pub公钥粘贴到远程仓库配置中。

工作区域

git本地有三个工作区域:工作目录、暂存区(stage/index)、资源库(repository)、远程仓库(remote repository)。

工作区:平时写代码项目文件的目录。

index/stage:存放提交的文件列表信息的文件。

Local R本地仓库:存放提交的所有版本信息,HEAD总是指向当前分支。

Remote:托管代码的远程服务器。

文件状态

untracked:未加入到本地库中,不参与版本控制,使用git add变为staged状态

unmodify:文件已入库,未修改。变为modified文件或git rm移除版本库变为untracked状态。

modified:文件已修改。通过git add变为staged状态,或通过git checkout放弃修改回到unmodify状态。

staged:暂存状态。执行git commit提交到版本库中,文件变为unmodify状态,执行git reset HEAD filename取消暂存,文件变为modified状态。

git对象模型

在git系统中有四种尅对象:

commit:指向一个tree,纪录了文件操作,作者,提交者信息;

tree:对象关系树,管理tree和blob的关系;

blob:保存文件内容;

tag:标记提交。

基础命令

git init,本地创建一个新的项目。

git clone [url],克隆远程仓库上的项目代码。

git rm/mv [file],删除移动文件

git status [xx],查看文件状态。

git commit -m xxx,提交暂存区中的内容到本地仓库,-v提交时显示diff信息。

git branch,查看本地分支,-r查看远程,-d name删除分支,-rd删除远程分支

复制代码
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]

git merge [branch],合并分支到当前分支。

git checkout [branch]或git switch,切换到指定分支。

git checkout [file],恢复暂存区文件到工作区。

git log,显示当前分支版本历史,-S key根据关键词搜索提交历史,--follow file显示某文件的版本历史,--oneline简洁显示。

git shortlog -sn,显示所有提交过的用户。

git blame [file],显示文件被什么人什么时间修改。

git diff,显示工作区和暂存区的差异。

git show [commit],显示某次提交的时间和内容变化。

git fetch [remote],下载远程仓库变动到本地版本库。

git remote -v,显示所有远程仓库,add添加仓库,remove删除。

git pull [remote] [branch],取回远程仓库分支的变化并与本地合并。

git push [remote] [branch],推送本地分支到远程仓库。

master分支主要用于发布新版本,常用工作分支使用dev等分支。

推送失败,因为最新提交和你试图推送的提交有冲突。先用git pull把最新提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送。git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接。

shell 复制代码
git branch --set-upstream-to=origin/dev dev

这回git pull成功,但是合并有冲突,需要手动解决,解决后提交,再push。

.gitignore忽略文件

在目录下创建.gitignore文件,将某些文件排除在版本控制外。

#:注释。

tmp/*.txt:忽略tmp目录所有以.txt结尾的文件,不包括tmp/d/*.txt。

!:除了这个文件外忽略所有

/tmp:忽略除tmp文件夹外的其他文件

tmp/:忽略tmp目录下的所有文件

IDEA集成Git

将所有克隆下来的git项目或新创建的git项目文件拷贝到IDEA项目中即可,或在IDEA下载git插件。

相关推荐
鬼手点金5 小时前
opencode-性能优化建议
java·人工智能·git·自动化·nanogpt
网络毒刘7 小时前
开源 Aider 工作流实战:Git 提交驱动的 AI 结对,与 Cursor 何时互补
git·ai编程·cursor·aider
HRTOS9 小时前
HRTOS 4.0 将长期维护:为什么版本号不再频繁变化
经验分享·git·单片机·51单片机
驭渊的小故事1 天前
linux 基础命令 + git 仓库创建和配置命令
linux·git
行者-全栈开发1 天前
华为云码道 CodeArts 实测:让 AI 用 Rust 写一个 Git 仓库健康度体检台「仓衡」
git·rust·tauri·桌面应用·ai 编程·华为云码道·codearts 代码智能体
挖掘狂人3 天前
Git 从 0 到 1:用一个小项目走完 add / commit / reset / merge / rebase / push
git·后端·github
codigger3 天前
Git 三区域模型:把 add、commit、reset、merge 一次讲透
git·github·编程·编程语言
水饺编程3 天前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
idanzk3 天前
Git 推送 GitHub 报 SSL_READ /src refspec main 不匹配 完整踩坑记录
git·github·ssl
星恒随风3 天前
Linux开发工具详解(二):Git版本控制、GitHub协作与GDB调试实战
linux·笔记·git·学习·github