Git 使用教程

Git 使用教程

前情提要

  • 毕业做了两年单片机项目开发,均采用 SVN 进行版本管理(集成式)
  • 在接触Linux、Android等项目后,均采用 Git 进行版本管理(分布式)
  • 常用命令自不用再提,但遇到问题时还是得看用哪条命令合适
  • 究其根源,还是对git --help用的不熟,那就今天就开设专题,缕缕这每天都要打交道的 git 命令

参考资料

一、git 常用指令

在这里插入图片描述
在这里插入图片描述

全局:
git config --global user.name "mooncity"**
git config --global user.email "mooncity0910@163.com"
本地:
git config user.name "mooncity"
git config user.email "mooncity0910@163.com"
1.1 创建一个空的Git仓库或重新初始化已有仓库并提交

git init
git add .
git commit -m “this is a empty codebase.”
git push origin master

1.2 克隆远程仓库代码修改后提交Gerrit审核

git clone ssh://192.168.xx.xxx:xxxxxx/openharmony-r4.0.git
本地修改
git status // 显示红色意味着进行了增添、修改、删除,但未提交到暂存区
git diff // 显示更改前一行信息与更改
git add .
git status // 显示绿色即已经提交到暂存区,未提交到版本库
git commit -m “add rk3568 driver support.”
git push origin HEAD:refs/for/master
git status // 空,当前所有文件已被git管控且与远端版本库保持一致
git reflog // 查看简易版本更改记录

1.3 提交

git add . // 工作区文件内容修改内容添加。
git add -u // 工作区被修改的文件提交到暂存区。不会提交新文件(untracked file),(git add --update的缩写)

git commit -m “submit all.” -a // 提交所有修改
git comm -m “add readme.md.” readme.md // 提交单个文件
git commit -C HEAD -a --amend // 增补提交,不会产生新的提交记录

git remote add origin ssh://192.168.xx.xxx:xxxxxx/openharmony-r4.0.git // 添加远程仓库地址
git remote -v // 查看对应仓库

git push [远程主机名] [本地分支名]:[远程分支名]
git push origin master // 本地分支与远程分支同名
git push origin master:dev // 本地分支与远程分支不同名

git push -u origin master // 首次添加加-u
git push // 之后就不需要了

1.4 撤销修改
1.4.1 撤销尚未提交的修改,不保留更改点
1.4.2 撤销尚已提交至暂存区的修改,不保留更改点

git checkout readme.md // 撤销readme.md文件更改
git checkout kernel/ // 撤销kernel文件下所有修改点
git checkout . // 撤销所有修改点
git restore . //丢弃工作区的修改

1.4.3 撤销尚已提交至暂存区的修改,保留更改点

git reset HEAD // 撤销至 HEAD 对应版本
git reset HEAD filename // 撤销filename文件夹的暂存
git reset commit-id-前7位即可 // 撤销至 commit-id 对应版本

git reset --hard HEAD^ // 不会在版本库中留下记录

git restore --staged file_name

1.4.4 反转提交

git revert --no-commit HEAD // 提交最近一次提交的反操作

1.4.5 清除未跟踪文件(编译临时文件)

// 如果已经git add . 就不会被删除

git clean -n // 显示将要被删除的文件以及目录

git clean -f // 删除所有未跟踪文件,.gitignore文件里指定的不会删除
git clean -f file_path // 删除对应文件夹下所有未跟踪文件,.gitignore文件里指定的不删除

git clean -df // 强制删除所有未跟踪的文件夹及文件
git clean -fx // 强制删除所有未跟踪的文件(.gitignore文件也会删除)

1.5 提交文件不完整或提交信息拼错

git reset --soft HEAD^
git commit -m “add file.” -c ORIG_HEAD // 沿用上次日志信息,-C 不需要编辑信息

1.6 分支
1.6.1 查看分支

git branch // 查看本地分支
git branch -a // 查看所有分支

1.6.2 创建分支

git branch [branch-name] // 基于当前分支创建新分支
git checkout [branch-name] // 检出分支
git checkout -b [branch-name] // 基于当前分支创建新分支并检出

git branch commit-id [branch-name] // 基于commit-id对应版本创建新分支
git branch branch-1 [branch-name] // 基于branch-1版本创建新分支

1.6.3 合并分支

git merge [branch-name] // 合并某分支到当前分支并提交
git merge --no-commit [branch-name] // 合并某分支到当前分支但不提交
git merge --squash [branch-name] // 压合合并并提交
git merge --squash --no-commit [branch-name] // 压合合并不提交

1.6.4 重命名分支

git branch -m [branch-name> [new-name] // 不会覆盖已存在的同名分支
git branch -M [branch-name> [new-name] // 会覆盖已存在的同名分支

1.6.5 删除分支

git branch -d [branch-name] // 若未被合并会提示失败
git branch -D [branch-name] // 强制删除分支
git push origin --delete [branch_name] // 删除远程分支
git branch -r // 查看远程分支
git remote show origin // 获取远端分支信息
git remote prune origin // 删除远程库中不存在的分支

1.7 查看修改

git diff // 查看当前改动
git diff --cached // 查看已经缓存的改动
git diff HEAD // 查看所有改动
git diff --stat // 显示摘要

1.8 日志

git log // 查看详细版本提交信息
git log --oneline // 查看简洁版本信息
git log --oneline --author=mooncity // 查看指定用户提交的日志
git log --patch-with-stat // 显示提交的代码差异、增改文件及i行数信息
git show commit-id // 查看指定提交日志

1.9 标签

git tag Relese-V1.0 // 注意:标签无法重命名
git tag Openharmony-Relese-V1.0 openharmony // 为分支openharmony创建标签
git tag Openharmony-Relese-V2.0 commit-id // 基于commit-id提交创建标签
git tag // 显示标签列表
git checkout Relese-V1.0 // 检出标签,但是不能提交
git branch V1.1 Relese-V1.0 // 基于标签创建分支
git checkout -b V1.1 Relese-V1.0 // 基于标签创建分支并检出至分支
git tag -d Relese-V1.0 // 删除标签

1.10 patch包生成与合并
1.10.1 根据 git 提交记录生成 PATCH

git format-patch -1 commit_id // 生成专用0001-xxxx.patch
git diff commit-id-1 commit-id-2 > diff.patch // 生成通用PATCH,commit-id-1~2(含commit-id-2)的修改

git apply --stat 0001-xxxx.patch // 检查该PATCH信息
git apply --check 0001-xxxx.patch //检查该PATCH是否合入
git apply 0001-xxxx.patch // 合入到本地
patch -p(n) < diff.patch // 合入PATCH,其中 n 代表路径的层级

推荐使用git format-patch 生成 git 专用PATCH
-git diff生成通用PATCH,对于删除文件的操作会出现失败
-若无删除操作的情况下 git diff 的效率及通用性会比较好
1.11 常用命令拓展
1.11.1 快速克隆代码到指定名称文件夹下

git clone --depth=1 --branch=[tags标签] ssh://192.168.xx.xxx:xxxxxx/openharmony-r4.0.git openharmony

  • 名称更改 openharmony-r4.0 > openharmony
  • –depth=1:仅克隆最近一次commit
  • 对应[tags标签]分支克隆
1.11.2 ssh 公钥生成

ssh-keygen -t ed25519 -C “youremail@example.com”

# Generating public/private ed25519 key pair...	

cat ~/.ssh/id_ed25519.pub // 公钥生成
ssh -T git@gitee.com // 远程仓库连接测试

1.11.3 查看当前git仓库大小

git count-objects -vH

1.12 忽略本地部分文件 .gitignore
mkdir .gitignore
vim .gitignore

添加:
node_models # 忽略所有node_models文件与子目录
/out        # 忽略当前工程根目录下out文件夹
/out/*      # 忽略当前工程根目录下out文件夹所有文件
*Y*         # 名称中有一个Y的都会被过滤(*代表0~n个任意字符)

注意:已经纳入版本管理的文件不会被过滤,故先删除需过滤的文件,再添加.gitignore文件

git add .gitignore
git commit -m "add .gitignore file" -a

二、git 命令进阶

待补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值