git:常用指令

1 git版本管理软件

  1.1 git和gitee

    git是代码版本管理软件,用于记录代码版本的更新迭代;可用于服务器上管理linux内核代码,也可用于windows上管理sdk版本;

    gitee是托管代码的平台,只支持git的格式,给个人管理自己的代码;相当于只安装了git并且存储空间超大的免费服务器(远程仓库区);

    git相当于sdk代码的档案库,那么git是如何实现代码的版本管理的呢?

    为了让铁铁实现sdk的软件版本管理,铁铁修改了sdk后将当前版本的sdk代码提交到他的git本地仓库,

    git会将当前的修改通过压缩算法存储起来并生成唯一hash值,该hash值后续可以用来将sdk代码还原到当前状态;

    为了让多名铁铁实现sdk的共同软件版本管理和开发,在服务器上创建一个远程仓库,

    每名铁铁通过把自己的本地仓库的修改推送到远程仓库进行合并,就实现了sdk代码的共同开发;

    理解了上面的这两个需求,我们就容易理解为什么git将自己的框架分为了4个区域;

  1.2 git框架

    为了便于管理代码,git将存储代码的结构分为了4个区域进行代码操作;

    1.2.1 工作区:就是本地磁盘区,使用sourceinsight进行修改的单片机源码就是工作区代码;

    1.2.2 暂存区:可以先将工作区修改的代码提交到暂存区作为缓冲区,我几乎没咋用暂存区缓冲代码;

    1.2.3 本地仓库区:将暂存区修改的代码提交到本地仓库区后,git会生成唯一hash值,用来后续还原代码到当前版本;

    1.2.4 远程仓库区:指公司服务器上的仓库或者gitee上给别人下载的公共仓库,方便代码的维护和追溯;

    

2 使用举例

  2.1 代码提交到仓库

    2.1.1 远程仓库为空时,如何提交本地仓库到远程仓库

#1 gitee:新建远程仓库
#2 本地工作区:first commit
git init # .git版本管理,包含了HEAD,index,版本管理的所有信息和配置;
#...coding ... # 本地工作区 coding...
git add . # 本地工作区 >>> 暂存区
git commit -m ".." # 暂存区 >>> 本地仓库区
git remote add origin url # connect 本地仓库区 to 远程仓库
# 给远程仓库标识为origin;默认都使用origin来命令远程仓库;
git push -u origin master # 本地仓库区 >>> 远程仓库区origin master
#3 本地工作区:continue commit
#...coding ... # 本地工作区 coding...
git add .
git commit -m "注释" # "注释"是必须的,如果没有注释怎么来区分不同版本呢?
git push # 本地仓库区 >>> 远程仓库区

     2.1.2 远程仓库非空时,如何提交本地仓库到远程仓库

git pull origin master --allow-unrelated-histories # 远程仓库区 >>> 本地工作区 && 暂存区
# --allow-unrelated-histories # 允许不同提交历史的分支强制合并,允许远程仓库和本地仓库没有关联性;
git add . # 本地工作区 >>> 暂存区
git commit -m "注释" # 暂存区 >>> 本地仓库区
git push # 本地仓库区 >>> 远程仓库区
git push --force origin master # 远程仓库与本地仓库有冲突时,对其进行强制提交,改天试试;

3 常用指令

#1 如何创建和切换分支
git branch branch_name #创建分支,分支名为branch_name
git checkout branch_name #切换分支,切换到branch_name分支
#... 此处省略在分支上的操作;add commit 提交;如果不合并的话,分支就可以单独存在而不影响master了;
git checkout master #切换分支,再切换回branch_name分支
#2 如何修改仓库的远程仓库
git remote -v #查看远程仓库的信息
git remote rm origin #删除本地仓库和名为origin的远程仓库的连接
git remote add origin url #给本地仓库新建一个远程仓库的连接,远程仓库取名为origin;
#3 如何进行本地仓库的版本回退
git reset --hard HEAD #将本地仓库区的文件同步到暂存区和工作区;HEAD就是前面的哈希值复制过来;
git reset --hard HEAD^ #将本地仓库上一次提交的文件同步到工作区;
git reset --hard hash #将本地仓库hash值的提交文件同步到工作区;
#只要有hash值就可以回退到hash值版本,可以反复横跳回退,非常好用;
git reset --soft HEAD #将本地仓库指向HEAD提交,工作区和暂存区保留不变,然后再git commit可用于将多个提交合并为一个提交;
git restore --staged . #将暂存区的文件恢复到HEAD指针状态;这样的话,就可以把整个.git文件拷贝走作为一个新仓库;
git reset --mixed HEAD #将本地仓库和暂存区都指向HEAD版本,保留工作区不变;
# 下载和推送指令
git clone url #从url所在远程仓库下载代码到本地工作区,默认自动将远程仓库设置标识名为origin
git clone --recursive url # 远程仓库区 >>> 本地仓库区;可以递归下载子目录文档;
git pull origin master #将远程仓库拉到暂存区和本地工作区,远程仓库和本地仓库需要是相关的分支;
git pull origin master --allow-unrelated-histories #将远程仓库拉到暂存区和本地工作区,允许远程仓库和本地仓库没有关联性;
git push -u origin master #将本地仓库提交到远程仓库;-u表示upstream,将远程仓库设置为本地仓库的上游,之后再push,pull就不用配置远程仓库是哪个了;                 
#默认远程分支都叫origin,-u origin表示指定("指定"划重点)上传到远程分支origin;之后再上传,就可以省略origin了                 
#默认本地分支都叫master;如果本地只有master分支,之后push也可以省略master了;
# 查看日志指令
clear # 清空cmd窗口指令
git log --graph # 查看本地仓库的提交日志
git reflog # 查看本地仓库("本地仓库"划重点)的操作日志; 可以查看到对应版本的哈希值,可以用来版本回滚;
# 查看代码区别 >> 查看代码区别可以使用小乌龟查看,在win上操作的话这些指令没啥用;
git status #查看工作区和暂存区的文件状态
git diff #比较工作区和暂存区的代码,看的是文件内容区别,下面几排都是;
git diff head #比较工作区与本地仓库head的代码
git diff head^ #比较工作区与本地仓库上一次提交的代码
git diff head^^ #比较工作区与本地仓库上上次提交的内容
git diff --cached #比较暂存区与本地仓库的内容
git diff --cached head^ #比较暂存区与本地仓库上一次提交的内容
git diff --cached head^^ #比较暂存区与本地仓库上上次提交的内容
git rm -r fie_name # 删除 本地工作区、暂存区、本地仓库区文件
git rm -r --cached . # 删除 暂存区文件

4 git终端配置

  4.1 如何修改默认换行符处理

git config --global core.autocrlf false #提交时对文本文件的换行符不做转换处理;
#window下的换行符为crlf("\r\n"),unix下的换行符为lf("\n");
git config --global core.quotepath false #提交是对utf-8编码0x80后的字符不做转义处理,可防止中文注释乱码;
#以上两个配置在安装git的时候,可以选择设置,可以留意下;
#git本地终端右键空白处>>options>>text>>locale [zh_CN], character set [GBK];>>配置本地终端的显示为中文显示;(这个好像没起效)

  4.2 如何配置用户名和邮箱

git config --global --unset user.name #换电脑后,清除用户的id;
git config --global --unset user.email #换电脑后,清除用户的email;
git config --global user.name "caesura_k" #提交用户的id;
git config --global user.email "caesura_k@163.com" #提交用户的email;如果注册用户绑定了邮箱,那么gitee就可以知道是哪个用户提交的;
git config user.name #查看当前用户的id
git config user.email #查看当前用户的email
git config --list #查看当前用户的配置信息
#远程仓库的用户名和密码在remote push的时候输入,只会要求输入一次,输错了要去 "windows控制面板>>凭据" 里删除;
#这个凭据里输入的用户名和密码和user.name和user.email是相互独立的,只是可以设置成一样;

  4.3 ssh密钥和https秘钥

    ssh秘钥就是将用户名和密码合并成一个加密的一次性随机值,配置ssh秘钥之后就不用反复输入用户名和密码了,适用于gitee,github;

    https秘钥就是git push首次提交时会要求输入的用户邮箱和密码,https秘钥也只需要输入一次,适用于用户少的公司服务器;

  4.4 小乌龟ssh替换

    小乌龟为古早git gui应用,直接下载安装之后,git的ssh.exe替换掉小乌龟默认的xx.exe就可以使用了;

    ssh.exe替换:设置 >> 网络 >> SSH客户端 >> D:\git\Git\usr\bin\ssh.exe;

    这么说的话那我不替换ssh,直接使用小乌龟自己的ssh是不是也行呢?没试过,先放着;

5 小乌龟用法

  5.1 如何创建分支并切换到该分支

    左上角单击'master'>> 右键'heads' >> 'CreateBranch'>>填写名称,选择基于那个hash值创建分支>>右键创建的branch>>switch/checkout to this;

  5.2 如何将分支合并到matser分支

    首先需要回到master分支 >> 然后右键要合并的分支 >>  merge to 'master' >> 合并完成后会提示旧的分支删不删,直接删了也行; 

6 学习网站

帮助 - Wiki - Gitee.com

LearnGitBranching    https://learngitbranching.js.org/?locale=zh_CN

tryGit          http://try.github.io/

Pro Git         https://git-scm.com/book/en/v2

git 图解本地工作区·缓存区·本地仓库·远程仓库_.git目录本地库和工作区_Hayley-L的博客-CSDN博客

7 小结

  git GUI好用,不要再费劲巴拉打命令行了;

  版本回退还是命名行好用,看来各有优劣;

 

posted @   rls_v  阅读(200)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示