流心
发布于 2025-02-01 / 0 阅读
0

GIT

git命令

  • git log :查看版本号

  • git log --oneline : 查看版本号前缀

  • git reset --hard 目标版本号 : 版本回退

  • git push -f : 提交更改

  • git status :查看仓库当前的状态,显示有变更的文件

  • git clone : 下载一个项目

  • git init : 初始化工作区

  • git add . :将工作区中修改的文件提交到暂存区( . 是提交所有代码,不使用 . 就在后面写上文件名字)

  • git add *.txt :将后缀为 .txt 的文件提交到暂存区

  • git commit -m"这里写描述" :将暂存区文件提交到本地仓库,在控制台输入

  • git reset --soft :回退某个版本 保留 工作区 和 暂存区 的内容

  • git reset --hard :回退某个版本 丢弃 工作区 和 暂存区 的内容

  • git reset --mixed :回退某个版本 保留 工作区 丢弃 暂存区 的内容

  • git push :提交更改如果报错就使用 git push -f ,因为本地库指向的版本比远程库的旧

  • git remote add origin 这里填写远程仓库的 shh 或 http 地址:关联到远程仓库

  • git remote -v : 查看是否连接成功

  • git push -u origin master :提交到远程仓库

  • git diff :比较文件的不同,暂存区和工作区的差异

  • git rm --cached <filename> :将缓存区的文件删除

  • git reset HEAD <被删除的文件夹> :用于取消 Git 暂存区中对指定被删除文件夹的更改的命令。它会将暂存区中对该文件夹的更改移除,但保留工作目录中的文件夹和文件。这个命令并不会恢复被删除的文件夹

  • git checkout <被删除的文件或文件夹> :完全恢复文件如果出现错误

  • git pul --rebase origin master :先拉取

  • git config --global user.name "你的用户名" :设置用户名

  • git config --global user.email 邮箱 :设置邮箱

  • git config --list :查看配置信息

  • git remote remove origin :与远程仓库断开连接.git生成的配置文件 config:

[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = http://gitlab.code-nav.cn/2213746416/myapp.git
fetch = +refs/heads/*:refs/remotes/origin/*

git配置

  1. 这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

> /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。

> ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。

> 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

  1. 配置个人的用户名称和电子邮件地址

    如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

    如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里

git config --global user.name "Liux"
git config --global user.email 2213746416
  1. git工作流程

Git 工作区、暂存区和版本库

基本概念

  • 工作区:就是你在电脑里能看到的目录。

  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。

  • 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

  • 当执行 git rm --cached <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变。

  • 当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

  • 当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

创建仓库

Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变使用当前目录作为 Git 仓库,我们只需使它初始化。进入该目录右键点击 git bash here

git init-该命令执行完后会在当前目录生成一个隐藏的 .git 目录,ls 查看没有被隐藏的目录 ls -a 查看所有目录包括被隐藏的
ls
ls -a

将文件添加到缓存区以及将文件从暂存区:删除使用 git add 文件名字可以把单个文件添加到缓存区 如果想把所有文件添加进去则使用 git add .想把文件从缓存区删除 则使用 git rm --cached 文件名

git add 文件名字
git add .
git rm --cached 文件名

从暂存去提交到本地仓库:注意如果没有写上描述的话,会变成交互式页面 默认使用 vm 来编辑提交只会把暂存区的文件提交到本地仓库,如果没有把文件提交到暂存区的话是不会被提交上去的

git commit -m "这里写描述"

回退到某个版本:

查看暂存区信息 git status
查看版本信息 git log --oneline 发现指向的是 v1.0.2 版本
git reset -- soft 回退到哪个提交版本
再一次查看暂存区信息 git status
再一次查看版本信息 git log --oneline 回退之后的指向的 v1.0.1 版本
● git reset --soft :回退某个版本 保留 工作区 和 暂存区 的内容
● git reset --hard :回退某个版本 丢弃 工作区 和 暂存区 的内容
● git reset --mixed :回退某个版本 保留 工作区 丢弃 暂存区 的内容

git 从远程 clone 到本地仓库:使用我们指定目录作为Git仓库

git init newrepo
初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

git add *.c
git add README
git commit -m '初始化项目版本'
git clone我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。克隆仓库的命令格式为:
git clone <repo>
如果我们需要克隆到指定的目录,可以使用以下命令格式:
git clone <repo> <directory>
参数说明:repo:Git 仓库。directory:本地目录。比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
git clone git://github.com/schacon/grit.git
执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:编辑 git 配置文件:# 针对当前仓库 或者:# 针对系统上所有仓库设置提交代码时的用户信息:如果去掉 --global 参数只对当前仓库有效。

git配置ssh

SSH密钥使用与身份验证和加密通讯的一对加密密钥,它由两个部分组成:私钥(private key)公钥(public key)这对密钥是通过非对称加密算法生成的,其中私钥用于加密数据,而公钥用于解密数据在 SSH 中,私钥保存在本地计算机上,并且必须保持安全和保密,公钥则可以被分享给其他人或其他服务器,当你连接到一个远程服务器时,你可以将公钥添加到服务器上,以便服务器可以使用该公钥对你的身份进行验证使用 SSH 协议连接到远程服务器时,身份验证过程如下:本地计算机向服务器发送请求服务器要求提供身份验证凭据本地计算机将使用私钥对一个随机生成的数字进行加密,并将加密后的数字发送给服务器服务器使用本地计算机提供的公钥对加密的数字进行解密,如果解密后的数字与服务器生成的数字匹配,服务器将验证你的身份彬允许你登录

获取 SSH Key

ssh-keygen -t rsa -C "邮箱"

提示在哪个文件夹生成的密钥

在 github 添加 SSH Key点击右侧头像 选中 Settings

点击 SSHand GPG keys

点击 NEW SSH KEY

Title 随便填写一个名字将本地公钥复制粘贴到 Key 方框中点击 Add SSH key