• Git最佳实践:git常用命令和原理


    Git 是一个开源的分布式版本控制系统。

    Git 工作区、暂存区和版本库

    • 工作区:就是你在电脑里能看到的目录。
    • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
    • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

    Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

    命令

    基础命令

    git init
    	初始化 当前所在的文件夹可以被管理且以后版本相关的数据会存储到.git文件中
    git status
    	查看当前文件夹中是否变化 内容修改 新增文件 删除文件
    git add .
    	将有工作区变化的文件加载到暂存区
    git commit -m "备注"
    	将暂存区的修改全部提交到版本库
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    撤回修改和删除

    git checkout -- data.txt
    	撤销修改,丢弃工作区的修改,分两种情况,-- 很重要,必须要加上
    	1、data.txt没有add到暂存区,撤销就是回退到和版本库一样
    	2、data.txt如果已经加到暂存区,撤销就是回退到和暂存区一样
    
    git reset HEAD data.txt
      把暂存区的修改撤销掉,重新放回工作区
    
    git reset --hard HEAD
    	回退版本,HEAD当前版本
    git reset --hard afe5aa
    	回退到版本号所指的版本  afe5aa版本号的前几位
    
    使用场景:
    1、当修改错了工作区的文件,想直接丢掉时,使用git checkout -- data.txt
    2、当修改错了工作区的文件,并且已经add到暂存区了,想丢弃的话,
    先使用git reset HEAD data.txt ,回到1的情况,再处理
    3、修改的文件已经提交到版本库时,直接回退版本即可
    
    手动删除data.txt后
    1、确实要删除的话,就git rm data.txt 再commit,这样就彻底删除了
    2、误删的情况,git checkout -- data.txt 就将版本库的文件恢复到工作区
    3、第1中情况已经执行了 git rm data.txt,后悔了,可以执行git reset --hard HEAD回退版本
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    远程管理

    当本地目录关联到远端的lifei库
    git remote add origin git@github.com:lifei/lifei.git
    将 本地的所有版本库推送到远端库
    git push -u origin master
    
    查看远端库信息
    git remote -v
    
    下载一份远端库
    git clone git@github.com:lifei/lifei.git
    从远端拉取最新的文件
    git pull 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    分支

    查看分支信息,当前分支前面会标一个*号
    git branch
    创建dev分支并且切换到
    git checkout -b dev
    
    分解成两个命令
    git branch dev # 创建dev分支
    git checkout dev # 切换到dev分支
    
    切换分支用switch命令意思更明显
    git switch master
    
    创建并切换 tempdev
    git switch -c tempdev
    
    将dev合并到master
    git merge dev
    
    删除dev分支
    git branch -d dev
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    冲突

    如果dev 修改了data.txt,master分支也修改了data.txt,当切换到master后执行
    git merge dev 就会冲突
    Auto-merging selectp-dev-branch.py
    CONFLICT (content): Merge conflict in selectp-dev-branch.py
    Automatic merge failed; fix conflicts and then commit the result.
    
    出现冲突后,查看冲突的文件
    <<<<<<< HEAD
    
    主分支
    =======
    dev 分支
    >>>>>>> dev
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    日志

    查看所有版本提交记录,版本号等
    git log 
    
    查看分支的合并 时间图
    git log --graph --pretty=oneline --abbrev-commit
    
    查看详细的 合并图
    git log --graph
    
    git reflog 回退之前的版本后,又想撤销,查看之前的版本号
    git stash 将当前工作区所修改的内容暂存到某个地方,将工作区还原到当前版本未修改过的状态
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    AMD CPU 虚拟机安装 macos 系统的各虚拟机系统对比
    macOS Tor 在启动期间退出
    Iis7.0-7.5 fast-cgi解析漏洞
    java【毕业设计】项目-第112期基于ssm的企业工资管理系统-计算机毕业设计
    【Go语言】Go语言中的流程控制
    Java面试题(每天10题)-------连载(36)
    MySQL——八、MySQL索引视图
    华为OD机试 - 跳格子游戏 - 深度优先搜索dfs算法(Java 2023 B卷 200分)
    相机标定计算内参数:每次拍照,相机和标定板都可以变换位置吗?
    从这几个关键功能,带您认真了解低代码的世界~
  • 原文地址:https://blog.csdn.net/u010442378/article/details/133977375