Git


本文学习自 Git 教程

安装

Windows 安装

安装包下载地址:https://gitforwindows.org/

官网慢,可以用国内的镜像:https://npm.taobao.org/mirrors/git-for-windows/。

完成安装之后,就可以使用命令行的 git 工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。

小声bb:这个图形界面真的不好用,建议大家熟练使用命令行,很舒服的。

在开始菜单里找到”Git”->”Git Bash”,会弹出 Git 命令窗口,你可以在该窗口进行 Git 操作。

配置

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。

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

  • 系统

    /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 还会尝试找寻 `/etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。

用户信息

查看配置
git config -l

示例

有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig 和 ~/.gitconfig),不过最终 Git 实际采用的是最后一个。

这些配置我们也可以在 ~/.gitconfig/etc/gitconfig 看到。

也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:

设置用户
git config --global user.name 用户名
git config --global user.email 邮箱

示例

编辑配置文件

编辑 git 配置文件:

git config -e    # 针对当前仓库 

或者:

$ git config -e --global   # 针对系统上所有仓库

设置提交代码时的用户信息:

git config --global user.name "runoob"
git config --global user.email [email protected]

如果去掉 —global 参数只对当前仓库有效。

文本编辑器

设置Git默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的话,可以重新设置::

git config --global core.editor emacs

差异分析工具

还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:

$ git config --global merge.tool vimdiff

Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。

当然,你也可以指定使用自己开发的工具,具体怎么做可以

实现原理

工作流程

本图是盗的

简单来说,就是在副本上进行修改,修改好了在作为新的原本。同时所有的原本都不自动删除,以此来实现版本回退。

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

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

暂缓!!!

基本操作

创建仓库

初始化本地库(git init

  • 使用当前目录作为 Git 仓库,我们只需使它初始化。

    git init
  • 使用我们指定目录作为Git仓库。若原本无此目录,则会新建一个目录。

    git init newrepo
  • 如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

    git add <要跟踪的文件>
    git commit -m "初始化项目版本"

    用 < > 括起来的内容是需要进行替换的内容,包括<>。

    注: 在 Linux 系统中,commit 信息使用单引号 ‘,Windows 系统,commit 信息使用双引号 “。

    所以在 git bash 中 git commit -m ‘提交说明’ 这样是可以的,在 Windows 命令行中就要使用双引号 git commit -m “提交说明”。

克隆库(git clone

我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。

克隆仓库的命令格式为:

git clone <repo>

如果我们需要克隆到指定的目录,可以使用以下命令格式:

git clone <repo> <directory>
  • repo:Git 仓库。
  • directory:本地目录。

示例:git clone git://github.com/schacon/grit.git

提交与修改

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。

创建与提交

命令 说明
git add 添加文件到暂存区
git status 查看仓库当前的状态,显示有变更的文件。
git diff 比较文件的不同,即暂存区和工作区的差异。
git commit 提交暂存区到本地仓库。
git reset 回退版本(上一个版本)。
git rm 将文件从暂存区和工作区中删除。
git mv 移动或重命名工作区文件。

下面是上面命令的高级使用

  1. 版本穿梭[1]

    git reset --hard 版本号
  2. 提交到本地库

    git commit -m "日志信息" 文件名

提交日志

命令 说明
git log 查看历史提交记录
git blame <file> 以列表形式查看指定文件的历史修改记录

远程操作

命令 说明
git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并

出现冲突

冲突原因:假设你的版本是 v1,然后你进行了修改,有了 v2 版本,但是此时远程仓库上已经有了一个 v2 版本(可能是你的同事交的),你们两者的代码并不一样,因此就产生了冲突

Git 分支管理

原理

其实跟虚拟机的镜像管理是一个道理

Git 分支实际上是指向更改快照的指针。

具体操作

创建分支

git branch <branchname>

切换分支

git checkout <branchname>

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

列出分支

列出分支基本命令:

git branch

没有参数时,git branch 会列出你在本地的分支。

当你执行 git init 的时候,默认情况下 Git 就会为你创建 master 分支,*用于标识现在使用的分支

合并分支

git merge <branchname>
  • 是被合并到当前分支中的分支
合并冲突

合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。

删除分支

git branch -d <branchname>

Git 标签

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。

比如说,我们想为我们的 runoob 项目发布一个”1.0”版本。 我们可以用git tag -a v1.0 命令给最新一次提交打上(HEAD)”v1.0”的标签。

-a 选项意为”创建一个带注解的标签”。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 我推荐一直创建带注解的标签。

emmm 还有些内容没用到,用到再写https://www.runoob.com/git/git-commit-history.html

Git 代理

GPT 生成

  1. 全局代理配置(适用于所有存储库):

    如果您希望在所有Git存储库中使用相同的代理,可以配置全局代理。在命令行中执行以下命令,将代理服务器和端口替换为您的代理信息:

    git config --global http.proxy http://代理服务器:端口号
    git config --global https.proxy https://代理服务器:端口号

    如果代理服务器需要身份验证,您还可以添加用户名和密码:

    git config --global http.proxy http://用户名:密码@代理服务器:端口号
    git config --global https.proxy https://用户名:密码@代理服务器:端口号
  2. 特定存储库的代理配置

    如果您只想在特定Git存储库中使用代理,可以进入该存储库的目录,并执行以下命令:

    git config http.proxy http://代理服务器:端口号
    git config https.proxy https://代理服务器:端口号

    同样,如果需要身份验证,可以添加用户名和密码。

  3. 取消代理配置

    如果您想取消代理配置,可以使用以下命令:

    git config --global --unset http.proxy
    git config --global --unset https.proxy

    或者在特定存储库中取消代理配置,只需进入该存储库的目录,并运行相同的命令,不过将 --global 移除。

杂项

使用 .gitignore 文件



  1. 1.顾名思义,就是跳转到指定的版本

如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


文章作者: Anubis
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Anubis !
评论
  目录