git使用


git 是一个版本控制软件, 许多软件项目都使用 git 进行开发, 如 Linux 内核, OPLC 核心等

git 的远程仓库有许多, 如 GitHub, Gitee. 也可以在家中的 NAS 等服务器上架设 Gitlab, Gitea 等项目作为远程仓库

基础

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

  • 工作区:电脑内可见的目录,仓库的目录,独立于各个分支
  • 暂存区:存放在.git目录下的 index 文件(.git/index),英文中称stageindex
  • 版本库:工作区中的隐藏目录.git,存放所有已提交到本地仓库的代码版本
  • 版本结构:树结构,每一个节点代表一个代码版本

Git 创建仓库

git init

git init会将当前目录作为 GIt 仓库,并会生成 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变

git init
#当前目录作为Git仓库
git init git-tutorial
#将指定目录**git-tutorial**目录作为Git仓库

git clone

git clone 可以使用不同的协议,包括 ssh,git,https 等

git clone [https/http/git]:[git@]url

git config

git config -e #针对当前仓库的配置

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

#提交代码时的用户信息
git config --global user.name ""
git config --global user.email ""

git config 命令实际上是在编辑 ~/.gitconfig文件

Git 本地操作

从本地提交到本地仓库步骤:

git init #初始化仓库
git add [文件名称] [-A] #添加文件到暂存区, -A将所有变更添加到暂存区
git commit #将暂存区内容添加到本地仓库中

git commit如果不带参数-m会启动core.editor全局变量中的文本编辑器

git status # 查看当前仓库状态,会显示未提交的事项

git log #查看仓库历史

git branch #查看仓库分支

git reflog #查看Head指针移动历史

Head 指针: 可以将 Git 所有的操作都看成在对一颗 n 叉树 进行操作, 且他的物理结构是链式存储

创建仓库

命令说明
git init初始化仓库
git clone拷贝远程仓库,也就是下载一个项目

git init

git init 命令后可接路径,绝对路径/相对路径 均可,但必须为文件夹的路径

git clone

格式:

git clone branch_name <url>

提交&修改

命令说明
git add添加文件到库
git status查看仓库当前状态,显示可变更的文件
git diff比较文件的不同,暂存区与工作区内文件的不同
git commit提交暂存区到本地仓库
git restore将文件回档
git reset回退版本
git rm删除工作区文件
git mv移动或重命名工作区文件

git add

格式:

git add // add 后跟路径,通git init一样,必须为文件夹路径,将该文件夹下的modified文件加入暂存区

git commit

git commit -m " " // ""中跟具体信息

git restore

格式:

git restore [--staged] name //不加--staged:将文件从暂存区恢复到目录;加上则从head所指的分支中恢复

git rm

格式:

git rm [--cached]//不加--cached等同于rm命令,加上可从暂存区移除文件

提交历史

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

远程操作

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

合并与衍合

命令说明
git merge合并指定分支到当前分支
git rebase衍合指定分支到当前分支