首页 > 其他分享 >Git

Git

时间:2023-09-14 16:17:03浏览次数:40  
标签:文件 git -- 暂存区 Git 版本 目录

介绍

问:git是什么
答:git是分布式版本控制系统

工作原理/流程

  • Workspace:工作区
  • Index/Stage:暂存区
  • Repository:仓库区(本地仓库)
  • Remote:远程仓库

一般工作流程如下:

  • 克隆 Git 资源作为工作目录
  • 在克隆的资源上添加或修改文件
  • 如果其他人修改了,你可以更新资源
  • 在提交前查看修改
  • 提交修改
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提

SVN与GIT的最主要区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的

  • 干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本
  • 然后干活,干完后,需要把自己做完的活推送到中央服务器
  • 集中式版本控制系统是必须联网才能工作
  • 如果在局域网还可以,带宽够大,速度够快
  • 如果在互联网下,如果网速慢的话,就纳闷了

Git是分布式版本控制系统,那么它就没有中央服务器的

  • 每个人的电脑就是一个完整的版本库
  • 工作的时候就不需要联网了,因为版本都是在自己的电脑上
  • 既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?
    • 比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了

install

Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行

win:点击此处下载

linux

Debian/Ubuntu

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

Centos/RedHat

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

yum -y install git-core

git --version
git version 1.7.1

配置

  • etc/gitconfig文件:系统中对所有用户都普遍适用的配置
    • 若使用git config时用--system选项,读写的就是这个文件
  • ~/.gitconfig文件:用户目录下的配置文件只适用于该用户
    • 若使用git config时用--global选项,读写的就是这个文件
  • 当前项目的Git目录中的配置文件(也就是工作目录中的.git/config文件)
  • 这里的配置仅仅针对当前项目有效
    • 每一个级别的配置都会覆盖上层的相同配置
    • 所以.git/config里的配置会覆盖/etc/gitconfig中的同名变量
  • 在 Windows 系统上,Git会找寻用户主目录下的.gitconfig文件
    • 主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER
配置信息
git config --global user.name "用户名" 
git config --global user.email "电子邮箱"

git工作区,暂存区和版本库

  • 工作区:电脑能看到的目录
  • 暂存区: (stage或index)一般放在.git目录下的index文件
  • 版本库:工作区有一个隐藏目录.git这个不算工作区,而是git的版本库

  • 图中左侧为工作区,右侧为版本库
    • 在版本库中标记为index的区域是暂存区(stage/index)),标记为master的是master分支所代表的目录树
  • 此时HEA实际是指maste分支的一个"游标"
    • 所以图示的命令中出现HEAD的地方可以用master来替换
  • objects标识的区域为 Git 的对象库,实际位于 .git/objects目录下,里面包含了创建的各种对象及内容
  • 工作区修改或者新增是,执行git add,暂存区的目录树被更新,同时工作区修改或新增的文件内容被写入到对象库中一个新的对象中,而该对象的ID被记录在暂存区的文件索引中
  • git commit时,暂存区的目录树写到版本库中,master做出分支会做相应的更新
  • git reset HEAD暂存区的目录树会被重写,被master分支指向的目录树所替换,但是工作区不受影响
  • git rm --cached <file>会直接从暂存区删除文件,工作区不做改变
  • git chekout . 或者 git checkout --<file>会用暂存区全部或指定的问题件替换工作区的文件,会清除工作区中未添加到暂存区的改动
  • git checkout HEAD . 或者 git checkout HEAD <file>会用HEAD指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件,不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动

git创建仓库

# 使用之后会生成一个.git的目录,包含了资源的所有元数据,其他的项目保持不变
git init # 初始化仓库,也可以指定目录

# 当前目录下有几个文件想要纳入版本控制,需要先用gitadd命令告诉git开始对这些文件进行追踪
git add . # 表示全部加入
git add *.c # 后缀为.c的全部文件

# 提交说明,win中使用双引号,linux中使用单引号
git commit -m "提交说明"

# 克隆仓库
git clone git仓库 本地目录

# 配置
git config --list
	credential.helper=osxkeychain
	core.repositoryformatversion=0
	core.filemode=true
	core.bare=false
	core.logallrefupdates=true
	core.ignorecase=true
	core.precomposeunicode=true
	…………
git config -e # 编辑当前仓库的配置文件
git config -e --global #编辑系统上的所有仓库

git基本操作

命令 说明
git init 初始化仓库
git add 添加文件到暂存区
git status 查看仓库当前的状态,显示有变更的文件
git diff 比较暂存区和工作区的文件差异
git commit 提交暂存区到本地仓库
git reset 回退版本
git rm 将文件从暂存区和工作区删除
git mv 移动或重命名工作区文件
git branch 查看分支
git checkout 切换分支
git switch 更清晰的切换分支(git 2.23版本引入)
git restore 恢复或撤销文件的更改(git 2.23版本引入)
git log 查看历史提交纪录
git blame <file> 以列表形式查看指定文件的历史修改纪录
git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并
git tag -a <name> 打标签

github

首先配置ssh key:ssh-keygen -t rsa -C "邮箱地址"

打开生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key到github的ssh and gpg keys中





参考链接:菜鸟教程

标签:文件,git,--,暂存区,Git,版本,目录
From: https://www.cnblogs.com/NingYaFelix/p/17702745.html

相关文章

  • 部署openldap服务并配置jumpsever、jira、mindoc、gitlab、jenkins集成ldap认证
    背景公司各种信息化系统越来越多,需要记住的用户账号也越来越多,人员入职离职就要分别在不同的各种系统上进行添加和删除比较繁锁,急需要一个可以统一认证的服务,于是就开始研究ldap,ldap中openldap是开源的方便使用,于是花了大概2个月时间才把标题上面的这几个服务全部调通,以下记录配置......
  • Git日常简单命令一览
    总结一些常用的git操作命令,并不断更新...1、个人信息配置:gitconfig--globaluser.name"shensy"  //修改用户名[email protected] //修改邮箱gitconfig--list //查看个人信息2、clone:gitclonessh://[email protected]/~/abc/projectname.g......
  • git revert如何撤销某次merge或commits?
    gitrevert撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交撤销commits bash复制代码gitrevert-n'commitid'撤销某次merge保留本分支内容,撤销'commitid'对应的内容 bash复制代码gitrevert-m1'commitid'......
  • 【git pull】 error: You have not concluded your merge (MERGE_HEAD exists).
    问题$gitpullerror:Youhavenotconcludedyourmerge(MERGE_HEADexists).......
  • Git分支合并(merge)时忽略dist文件
    Git分支合并(merge)时忽略dist文件Git分支合并(merge)时忽略某个文件或者目录​前端项目不同分支dist文件合并到其他分支有很多冲突操作步骤1.定义虚拟合并策略gitconfig--globalmerge.ours.drivertrue其他配置可参考Git配置2.编辑规则文件编辑根目录下的.gita......
  • git常用命令总结
    总结来源:https://baijiahao.baidu.com/s?id=1750089046854021842&wfr=spider&for=pc1、初始化本地仓库gitinit<目录>是可选的,如果不指定,将使用当前目录。 2、克隆一个远程仓库gitclone<url> 3.添加文件到暂存区gitadd<file>//file当前你要添加暂存的文......
  • git 查看分支/切换分支命令
     1、查看所有分支  gitbranch-a 2、查看当前分支gitbranch 3、切换分支gitcheckout分支名 4、查看当前分支gitbranch 5、切换完分支之后拉取当前分支最新代码gitpull 6、如果你在当前分支修改了东西,想要切换分支一定要先将......
  • 分享!JetBrains IDE中的GitLab支持
    GitLab是流行的基于git的软件开发和部署平台之一,虽然很长一段时间以来,所有基本git操作都已经可以通过GitLab实现,但GitLab集成仍是JetBrains社区的一大最热门请求。为此,JetBrains团队今年与GitLab联手提供了这种类型的集成。JetBrains官方认为此类集成包括的各种功能可能会影响开发......
  • Learn Git in 30 days——第 17 天:关于合并的基本观念与使用方式
    写的非常好的一个Git系列文章,强烈推荐原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn 我曾在【第08天:关于分支的基本观念与使用方式】提过关于「分支」的基本观念与用法,现在则要来讲「合并」如何进行。由于Git是一种分布式版本控制系统(......
  • 我找回了我喜欢的Github Old Feed
    前言这周Github更新了个人主页Feed(指的是用户的活动源或动态源),作为GitHub重度爱好者而言NewFeed完全不是我之前所喜欢的效果。虽然说NewFeed添加了允许用户可以自定义配置过滤器,但是无论我添加多少过滤器,我都找不到我感兴趣的信息。我个人只关心我关注的人的star、commit和我仓......