<git><1>git版本管理的必知必会

作为一个嵌软工程师, GIT 是要必备的技能之一, 以下内容将带你熟悉 git 常用的基础的操作

0.规范

1.环境管理

  • 当你使用ssh链接时, 注意要生成自己的ssh公钥, 否则无法推送, 报错权限不够

    # 生成ssh公钥方式
    ssh-keygen -t rsa -C "e-mail" # 一路回车
    cat ~/.ssh/id_rsa.pub  # 查看ssh公钥
    

    需要使用密钥时可以了解如下链接

    1. 了解ssh代理:ssh-agent
    2. ssh agent详解
  • 本地分支就好与远程分支名字一样, 便于管理

  • 如果不想使用CLI, 这里有几款优质的GUI GIT

  • 关于git签名GPG了解一下


2.分支管理

git branch -a - 查看仓库所有分支

2.1.拉取

2.1.1.普通拉取
# 新拉取特定远程分支
git clone -b 分支名 url

# 一步拉取全部分支
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done

# 补充拉取远程远程分支内容(建立新分支)
git checkout -b 分支名 origin/分支名

# 将远程分支与本地分支进行关联
git branch --set-upstream-to=origin/远程分支 本地分支

# 同步远程内容 https://www.runoob.com/git/git-fetch.html
2.1.2.拉取子模块 - (CBB)

其他关于删除, 修改, 更新子模块操作, 可参考链接Git submodule 子模块的管理和使用

# 克隆项目时递归克隆所有模块
git clone 地址 文件夹名 --recursive(--recurse-submodules)
# 后补充子模块部分
git submodule update --init --recursive

# 创建子库
git submodule add -b master [URL]

# 更新子库
git submodule update --init

# 帖子
https://blog.csdn.net/yjkhtddx/article/details/108527042

2.2.推送

# 新推送到远程一个新分支
git push origin 本地分支名:远程分支名

# 强制推送分支: 强制推送且检查该分支是否单人开发
git push origin --force-with-lease master

2.3.删除

git push -d origin 远程分支名
git branch -d 本地分支名

3.内容管理

  • git status查看当前暂存区状态
  • git reflog 查看所有的提交
  • git log --all --decorate --oneline --graph可视化观察分支记录 可视化分支记录

3.1.删除文件

# 仅删除工作区, 未提交到暂存区
rm
# 一并提交到暂存区
git rm

3.2.add到暂存区

git add . # 所有变化提交暂存, 包括内容修改(modified)以及新文件(new)
git add -u # 仅监控已被 add的文件, 不包括新文件, --update
git add -A # 以上功能合集  

3.3.内容的暂存-stash

当你出现需要临时切换分支工作时, 若当前分支已近有部分修改, 不要直接切换, 未经过版本管理的内容, 不会跟随转变, 若你还不想提交commit, 可以使用git stash

# 保存快照
# 此时工作空间内容会复位
git stash save "" 

# 显示快照差异
git stash show stash@{1}

# 恢复快照1
git stash list
git stash apply stash@{0} # 不会删除堆栈内容, 可重复恢复
# 恢复快照2
git stash pop # 只能恢复一次

# 删除快照
git stash drop 名称 # 堆栈中移除某个指定的stash
git stash clear # 清除堆栈中的所有内容

3.4.内容撤销

  • commit到了版本库

    git reset --hard HEAD^ # 舍弃之前commit的修改, 恢复到当前commit最新状态
    git reset --soft HEAD^ # 暂存区保留之前的commit修改
    
  • add或其他修改, 已提交到暂存区

    git reset HEAD <file> # 撤销暂存区
    
  • 工作区修改的内容撤销

    git checkout -- <file> # 撤销工作区
    

3.5.git merge使用的优秀文章


4.其他有趣的操作

4.1.一次push到两个仓库

当你想每次将一个工作空间, 上传到两个仓库中时, 又不想每次push 两次, 你可以

git remote add origin-all 仓库1链接
git remote set-url origin-all --push --add 仓库1链接
git remote set-url origin-all --push --add 仓库2链接
git push origin-all master # 一次推送到两个仓库

4.2.可视化冲突解决工具P4Merge

  • 关于P4merger软件布局说明

  • 关于合并冲突时的几个文件说明

# 工具下载链接 https://www.perforce.com/downloads/visual-merge-tool
# 下载安装好P4Merge之后, 将软件绝对路径添加到环境变量中
# 打开git bash运行如下6条指令
git config --global diff.tool p4merge
git config --global difftool.p4merge.path "软件绝对路径"
git config --global difftool.prompt false
git config --global merge.tool p4merge
git config --global mergetool.p4merge.path "软件绝对路径"
git config --global mergetool.prompt false

# 开始合并目标分支到当前分支时
# 做好目标分支更新
git checkout -b 目标分支 origin/目标分支
git pull origin 目标分支
git checkout 操作分支

# --no-ff好处细看文章https://blog.csdn.net/zombres/article/details/82179122
git merge --no-ff 目标分支
# 当不想保留分支的历史提交时, 可以使用--squash, 保证主分支代码整洁
git merge --squash 目标分支

# 当你使用git diff查看不同或解决冲突时使用如下命令代替
git difftool
git mergetool

# 取消本次合并
git merge --abort

# 合并完成后, 直接commit
# 合并成功后会有残留文件, 使用如下命令删除之一
rm *.orig
find . -name '*.orig' -type f -print -exec rm -rf {} \;

(1) “.” 表示从当前目录开始递归查找
(2) “ -name ‘.’ "根据名称来查找,要查找所有以.*结尾的文件夹或者文件
(3) " -type f "查找的类型为文件
(4) “-print” 输出查找的文件目录名
(5) "-exec"选项后边跟着一个所要执行的命令,表示将find出来的文件或目录执行该命令。

 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号

4.3.标签tag

Tag推荐两条链接 搞懂git标签的使用, 更细的参数节内容可跳转 - 实践

# 创建标签
git tag -a 标签名称 -m 附注信息 # 当前commit
git tag -a 标签名称 提交版本号 -m 附注信息

# 查看标签注释
git tag -n # 看到对应tag的信息, 没有注释则显示为commit信息
git tag --list
git tag -l
git tag

# 推送标签
git push origin 标签名称 # 将指定的标签上传到远程仓库
git push origin --tags # 将所有不在远程仓库中的标签上传到远程仓库

# 删除本地标签
git tag -d 标签名称
# 删除远程标签
git push origin  :regs/tags/标签名称
git push origin --delete 标签名称

# 检出标签做事
git checkout -b 分支名称 标签名称 # 创建新分支对应标签开发

4.4.修改commit提交信息

5.必看文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青蓝灰紫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值