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插件。

相关推荐
Winston Wood41 分钟前
一文了解git TAG
git·版本控制
喵喵先森1 小时前
Git 的基本概念和使用方式
git·源代码管理
xianwu5432 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio5 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。6 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie67 小时前
在IDEA中使用Git
java·git
晓理紫16 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿17 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git
_OLi_1 天前
IDEA中新建与切换Git分支
java·spring boot·git
PyAIGCMaster1 天前
ubuntu下安装 git 及部署cosyvoice(1)
git