当前位置: 首页 > news >正文

记录:git

记录:Git

.gitignore文件

    
    介绍
  • 一个纯文本文件,包含了项目中所有指定的文件和文件夹的列表,这些文件和文件夹是 Git 应该忽略和不追踪的
  • 一个 .gitignore 文件会被放在仓库的根目录下
    使用文档
  • /test/text.txt 或test/text.txt忽略一个位于根目录下的 test 目录中的 text.txt 文件
  • text.txt忽略位于项目中任何地方的具有该特定名称的所有文件
  • test/忽略位于你的项目中任何地方的名为 test 的目录
  • test匹配任何带有这个名字的文件或目录
  • img*忽略所有名字以 img 开头的文件和目录
  • *.md忽略所有以特定文件扩展名结尾的文件
  • !README.md排除一个本来会被忽略的文件(忽略了整个目录,这个模式就不起作用)
    忽略以往仓库文件
  • echo ".env" >> .gitignore为.gitignore添加.env文件
  • git rm --cached .env从Git索引中删除
  • git add .gitignore添加.gitignore进入暂存区
  • git commit -m "update ignored files"提交.gitignore文件

git 删除命令

    
    git rm --cached
  • --cached 选项使得 Git 仅从版本控制中移除文件
      撤销更改
    • git status查看工作目录和暂存区的状态
    • git reset撤销对暂存区中文件的更改
    • git reset 恢复某个特定文件的更改
    • git checkout -- 将指定文件恢复到最后一次提交时的状态
    • Powershell:Remove-Item -Recurse -Force .git删除本地仓库

git初始化配置

    
    git config --list
  • 可查看设置的user.name与user.email
  • git config --global user.name "<用户名>"
  • git config --global user.email"<电子邮件>"
    邮箱选择使用基于ID的GitHub-provided no-reply邮箱github->setting->email->Keep my email addresses private
  • cd 进入项目目录
  • git init 初始化git仓库
  • git add . 添加该文件夹下文件到git缓冲区
  • git commit -m "提交说明" 提交缓冲区文件到本地仓库
  • git diff <文件名> 查看differerce
  • git status 查看仓库状态

git更新

查看版本:  git --version
2.17.1之后:git update-git-for-windows
2.17.1之前:git update

git版本回退

  • git log 查看历史版本
    • git log --pretty=oneline --abbrev-commit --graph
    • --pretty=oneline提交显示为一行,<哈希值> <信息>
    • --abbrev-commit缩短显示的哈希值
    • --graph显示分支图
  • git reset --hard HEAD^ 回退到上一个版本
  • git reset --hard 4b7afa6bb7ad775d239e 回退到指定版本
  • hard 已提交状态 soft 未提交状态 mixed 已添加但未提交状态
  • 注:回退到往期版本,执行git log将无法现版本之后的日志,如需取消回退,可以在term中找到上次执行git log显示的commit id

git管理修改

  • git diff HEAD -- <文件名> 查看未提交文件与版本库中的difference
  • 注:在未提交之前,add多次同一文件,结果覆盖

撤销修改

  • git checkout -- <文件名> 撤销修改
  • 注:在为add之前,回退到版本库状态,add之后,回退到add时缓存区最新最近一次add状态
  • git reset HEAD <文件名> 撤销缓存区

删除文件

  • 先删除本地文件
  • git rm <文件名> git add <文件名> 添加修改,效果一样
  • commit 提交修改到版本库
  • git checkout -- <文件名> 撤销删除
  • 注:git checkout 使用版本库里版本替代工作区版本

远程仓库

  • 生成本地SSH密钥 ssh-keygen -t rsa -C "your@email.com" 有三次提问
    • 密钥生成目录地址
    • 使用密钥密码
    • 确认密码注:可Enter跳过设置,若设置密码,使用git指令使会提示输入密码
    • .ssh目录,id_rsa为私钥,id_rsa.pub为公钥
  • github仓库
    • Setting -> SSH and GPG keys -> New SSH key ->title不影响,types:Authentication keys,输入公钥
    • Creat new repository
      • 已有本地仓库
        • git remote add origin git@github.com:GitHub名称/仓库名.git建立本地仓库与github远程仓库关联,即远程仓库别名origin
        • git push -u origin master推送并建立master分支与origin仓库的关联,即master分支默认推送到origin
      • 克隆远程仓库
        • git clone git@github.com:GitHub名称/仓库名.git
  • 删除远程仓库
    • git remote -v可查看远程库信息,fetch:拉取地址 push:推送地址
    • git remote rm 别名解除本地仓库与远程库关联

分支管理

  • git branch查看分支
  • git checkout -b <分支>创建并切换一个分支
    • git branch <分支>创建分支
    • git checkout <分支>切换分支
  • git switch -c <分支>switch命令替换checkout
  • git merge <分支>合并分支到当前分支
  • git branch -d <分支>删除分支
  • git branch -D <分支>未合并的分支,需使用强制删除,-D

冲突处理

    在dev分支上修改readme.txt文件提交,切换到main分支上修改readme.txt提交,此时合并dev到main会出现冲突,git会将冲突内容标记在文件内,主动确认修改readme.txt文件后,再次add,commit即可
  • git log可查看分支合并信息
  • git log --graph分支合并图

合并策略

  • git merge <分支>合并记录为一条直线
  • git merge --no-ff -m "" <分支>合并记录有分支,保留分支

stash

  • 注:测试中发现,分支中缓存区的文件在其他分支可见;分支中修改,未添加进缓存区,则无法切换分支
    • git stash清空工作区,备份一份数据
    • git stash list可查看备份
    • git stash apply 'stash@{ }'恢复指定备份
    • git stash pop 'stash@{ }'恢复并删除指定备份,有冲突则保留
    • git stash drop 'stash@{ }'删除指定备份
    • git cherry-pick <提交>合并指定提交到当前分支
  • 多人协作

  • git push <别名> <分支>推送分支到远程库
  • git checkout -b <本地分支> <别名>/<分支>创建并切换远程库的分支到本地
    • 分支会与远程库分支关联
    • git push <别名> <本地分支> 即可推送到远程库分支
  • git pull拉取最新的提交,在远程库的版本要新于本地分支,需要这么做
  • git branch --set-upstream-to=<别名/分支> <本地分支>建立本地分支于远程库分支的关联,在没有关联时使用
  • 注:pull有冲突的可能,在处理冲突后,push即可
  • rebase

  • git branch -vv可查看分支的上游分支
  • git rebase变基当前分支,会使用默认的上游分支
    • git checkout <当前分支>
    • git rebase <目标分支>将提交重新提交到目标分支
  • 标签管理

  • git tag查看标签
  • git show <标签名>查看指定标签的提交
  • git tag <标签名>为当前分支的最新修改打上标签
  • git tag <标签名> <哈希值>为指定commit打上标签
  • git tag -a <标签名> -m "" <哈希值>
    • -a创建一个带注释的标签
    • -m注释信息
  • git push <别名> <标签名>推送指定标签到远程
  • git push <别名> --tags推送全部尚未推送远程的本地标签
  • git tag -d <标签名>删除指定标签
  • git push <别名> :refs/tags/<标签名>删除远程库中指定标签注:refs/tags存在于.git目录中
  • 参与github开源项目指南

  • fork项目,会克隆一个远程库
  • 在github上发起pull request,将修改发向官方库
  • gitee使用参考github

    http://www.hskmm.com/?act=detail&tid=29033

    相关文章:

  • 实验1 现代C++编程初体验
  • 10.11总结
  • 2025年10月门窗十大品牌最新推荐榜单,十大品牌测评排名与选择指南
  • CF60E Mushroom Gnomes
  • CF691E Xor-sequences
  • LCPC12E - Johnnys Empire 题解
  • 中微笔记-cp.1 技术
  • P1896 [SCOI2005] 互不侵犯小总结
  • 美国能源部《生成式人工智能参考指南》解读
  • 分析InfluxDB中读取时CPU飙升
  • win10系统访问smb服务时提示密码错误
  • 《小说课》读书笔记
  • 2025-10-11?
  • 高二停课周记(信息学竞赛) Week1
  • AtCoder Beginner Contest 427 ABCDEF 题目解析
  • zju博士资格考试考前复习(微分方程方向)ode 部分
  • 测试一下博客功能
  • AI如何改变芯片设计
  • NOIP 2024
  • 2025/10/11
  • 好玩热门的switch游戏推荐【PC+安卓】塞尔达传说:王国之泪|v1.4.2整合版|官方中文| 附switch模拟器
  • 十年运维工程师总结
  • 运动控制教学——5分钟学会Dijkstra与A*搜索算法!(附仿真视频及代码) - 教程
  • ffplay数据结构解析
  • CNN 发展历程
  • FileX和ThreadX精简版
  • ue4素材场景 - MKT
  • 阅读《构建之法》的思考与问题
  • 实验报告5(链栈基本操作,数制转换,匹配算法,伴舞问题)
  • 阅读和提问作业1:《构建之法》提问