• 实际开发中常用的Git操作


    前言

    git是用C语言开发的,以追求最高的性能。git自动完成垃圾回收,也可以用命令git gc --prune直接调用。

    基础知识

    集中式版本控制 - SVN

    所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。

    所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。

    分布式版本控制 - Git

    每个人都拥有全部的代码。

    所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

    不会因为服务器损坏或者网络问题,造成不能工作的情况!

    Git下载:https://git-scm.com/

    Git Bash应用:Unix与Linux风格的命令行,使用最多,推荐最多;

    Git GUI应用:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令;

    GitK命令:内建的图形化 git,打开Git Bash进入相应的git仓库输入gitk即可。

    常用的Linux命令

    cd		进入目录
    cd ..	回退上一个目录
    pwd		显示当前所在目录路径
    ls(ll)	列出当前目录中所有文件,后者更为详细(加-al查看隐藏文件)
    touch	新建一个文件如touch test.txt就会在当前目录下新建test.txt文件
    rm		删除一个文件如rm test.txt就会删除当前目录下的test.txt文件(加-rf删除文件夹无需确认)
    mkdir	新建一个文件夹
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Git工作区域

    Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、本地仓库、远程仓库(Remote Directory)

    Workspace:工作区,就是你平时存放项目代码的地方;
    Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息;
    Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本;
    Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

    日常使用要记住上图6个命令 + review操作:

    git clone - 克隆
    git checkout - 检出
    git add - 增加
    git commit - 提交
    git push - 推送
    git pull --rebase - 拉取
    git review branch_name - review
    团队内会有一位Code reviewer,负责代码管理的,团队成员一般执行完git commit之后,不会自己手动执行git push,而是执行git review,而后有reviewer检验完代码后,进行git push。

    Git 常用命令

    获取Git仓库

    当前目录新建一个Git代码库
    $ git init


    从远程克隆
    $ git clone 远程Git仓库地址
    $ git clone -b 分支名 远程Git仓库地址


    显示所有远程仓库
    $ git remote -v

    添加远程仓库
    $ git remote add 名称 url地址
    $ git remote add origin git@github.com:XXX/XXX.git


    移除远程仓库 - 只是在本地移除记录,并不会影响远程仓库
    $ git remote rm 名称 (一般是origin)

    从远程拉取代码
    $ git pull 名称 (一般是origin) 分支名 (master分支)
    $ git pull 名称 分支名 --allow-unrelated-histories

    git pull = git fetch + git merge FETCH_HEAD
    ​git pull --rebase = git fetch + git rebase FETCH_HEAD

    ​**
    解决连接远程仓库出现ssl认证问题
    $ git config --global http.sslVerify “false”


    测试一下通不通
    $ ssh -T git@github.com

    添加/提交/推送/删除/回退文件

    添加指定文件到暂存区,如果是多个文件,使用空格分隔
    $ git add 文件 文件 …
    当前目录及其子目录的文件都加入到暂存区
    $ git add .


    代码从暂存区提交到本地仓库
    $ git commit -m “描述信息”

    **本地推送到远程仓库
    $ git push 名称 (一般是origin) 分支名 (master分支)
    第一次提交
    $ git push -u origin 分支名
    需要输入用户名和密码

    删除文件
    $ git rm 文件

    将暂存区文件取消暂存
    $ git restore --staged 文件


    将本地仓库文件回退到上个版本
    $ git reset --hard HEAD^


    回退到前3次提交之前,以此类推,回退到n次提交之前
    $ git reset --hard HEAD~3

    退到/进到 指定commit的sha码,提交ID可使用git log查看
    $ git reset --hard 提交ID

    查看信息

    查看文件状态
    $ git status


    查看文件修改哪些内容
    $ git diff


    查看日志记录
    $ git log


    查看当前分支的版本历史
    $ git log

    搜索提交历史,根据关键词
    $ git log -S 关键词

    显示指定文件是什么人在什么时间修改过
    $ git blame 文件

    显示今天你写了多少行代码
    $ git diff --shortstat “@{0 day ago}”

    显示当前分支的最近几次提交
    $ git reflog


    显示所有提交过的用户,按提交次数排序
    $ git shortlog -sn

    Git分支

    查看本地分支
    $ git branch
    查看远程分支
    $ git branch -r
    查看远程全部分支
    $ git branch -a


    创建分支
    $ git branch 分支名

    切换分支
    $ git checkout 分支名

    将本地分支推送到远程仓库
    $ git push orighn 分支名

    合并分支
    $ git merge 分支名
    例子:将b分支合并到a分支下
    $ git checkout a
    $ git push orighn b

    删除分支
    $ git branch -b 分支名
    强制删除
    $ git branch -D 分支名
    删除远程仓库分支
    $ git push orighn -b 分支名

    代码冲突解决
    打开冲突文件并修复冲突内容,最后执行git add命令

    Git标签

    创建标签
    $ git tag 标签名

    查看标签
    $ git tag

    查看信息
    $ git show 标签名

    将当前标签推送远程仓库
    $ git push origin 标签名

    检出标签 - 在新的基础上创建新的分支再进行开发
    $ git checkout -b 新的分支名 标签名

    删除本地标签
    $ git tag -d 标签名
    删除远程仓库标签
    $ git push origin :refs/tags/远程仓库标签名

    Gitk:一个排查Git问题的工具

    gitk是一个非常强大的图形化工具,现在安装git会自带gitk的应用程序,在代码库的根目录下直接输入gitk会打开这个界面:
    在这里插入图片描述
    gitk的主界面主要包含5个部分:

    1. 主菜单栏显示区
    2. 提交信息显示区,显示提交的基本信息,包括节点树、message、提交人和提交时间
    3. 查询条件检索区,根据检索条件查找的窗口
    4. 具体内容显示区,显示 commit 的变更记录或两个 commit 的 diff 内容
    5. 文件列表显示区,显示的commit的文件列表或两个commit的diff文件列表

    每个点代表一次提交,线代表父子关系,而彩色的方块则用来标示一个个引用。 黄点表示 HEAD,红点表示尚未提交的本地变动。

  • 相关阅读:
    Centos7 重置 Root 密码
    gRPC之grpc resolver
    【k8s资源调度-StatefulSet】
    艾美捷测序级 II,纯化胰蛋白酶化验程序&文献参考
    sort(快速排列)的使用方法
    【每日一题】2304. 网格中的最小路径代价-2023.11.22
    flutter plugins插件【三】【Flutter Intl】
    深入浅出Nginx实战与架构
    linux服务器基本操作
    CHRONY - 时钟同步
  • 原文地址:https://blog.csdn.net/qq_43357394/article/details/132823351