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

Git基本使用

Git简介

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。是现代软件开发中不可或缺的工具之一,它通过其强大的分支管理、快速的操作和高效的协作能力,极大地促进了团队的开发效率和代码管理的便利性。

Git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存域和多个工作流分支等特性。由Linus Torvalds为了管理Linux内核开发而创建。

Git下载安装地址:https://git-scm.com/

版本控制

版本控制是一种记录文件内容变化的系统,它允许用户查阅特定版本的修订历史。通过记录文件修改的详细历史,版本控制使得用户能够轻松查看和管理项目的不同版本,便于需要时进行版本切换和比较。

版本控制系统中的客户端并非简单地提取最新版本的文件快照,而是将整个代码仓库完整地镜像到本地。因此,每次文件的提取操作实际上都是对整个文件仓库的完整备份。这种方式使得即使发生了文件损坏或其他问题,也可以通过其他客户端的本地仓库进行快速恢复,确保项目数据的安全和稳定性。

分支概述

在 Git 中,分支是指向 Git 仓库中特定提交对象(commit)的可变指针。每个分支代表项目开发过程中的一个独立路径,允许开发人员并行进行不同的工作,而无需影响主线(主分支)的稳定性和开发进度。

在版本控制过程中,当需要同时推进多个任务时,可以为每个任务单独创建分支。这样一来,开发人员可以将各自的工作与主任务分隔开来,而在开发自己的分支时不会影响到主分支的稳定性和进度。

分支的主要优势在于能够并行推进多个功能的开发,从而提升整体开发效率。每个分支在开发过程中是独立的实体,如果某个分支的开发失败或不符合预期,可以直接删除而不会对其他分支造成任何影响。

Git常用命令

设置用户签名

git config --global user.name 用户名
git config --global user.email 邮箱

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。

这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。

了解所有Git配置

git config --list

初始化本地库

git init

查看当前所在分支(Windows PowerShell不显示,git bash则会出现在文件路径后面)

git branch --show

查看本地库状态

git status

添加文件到暂存区

git add 文件名

添加所有文件到暂存区

git add .

提交到本地库

git commit -m "日志信息"

查看历史记录

git reflog

版本穿梭

git reset --hard 版本号

显示提交历史

git log

创建分支

git branch 分支名

切换分支

git checkout 分支名

创建并切换分支

git checkout -b 分支名

删除本地分支(如果该分支还未合并到当前分支会出现警告)

git checkout -d 分支名

强制删除本地分支(直接删除)

git branch -D 分支名

查看所有分支(包括本地分支和远程分支)

git branch -a

查看本地分支最新提交信息

git branch -v

查看远端分支

git branch -r

合并其他分支

git merge 分支名

拉取远端代码

git clone 地址

本地分支获取远端最新更改

git pull

获取所有最新的分支和数据

git fetch

遇到冲突中止合并

git merge --abort

本地分支推送远端并建立连接

push -u origin 分支名

本地分支与远端分支建立连接

git push --set-upstream origin 分支名

本地分支推送远端连接的分支

git push

本地分支推送远端目标分支

git rebase 分支名

删除远端分支

git push -- delete origin 分支名

查看帮助

git --help

查看指定命令帮助

git 命令 --help
# 或者
git help 命令

如:git checkout --help 和 git help checkout

输入命令会打开网页端查看帮助信息。

查找一段时间内的提交记录

git log --since="开始时间" --until="结束时间"

查找一段时间内指定账号的提交记录

git log --since="开始时间" --until="结束时间" --author="账号名"

查找一段时间内指定账号的每次提交的变更行数

git log --since="开始时间" --until="结束时间" --author="账号名" --oneline --shortstat

查找一段时间内指定账号提交的变更行数总数

git log --since="开始时间" --until="结束时间" --author="账号名" --numstat --pretty="%H" | awk 'NF==3 {plus+=$1; minus+=$2} END {printf "Total lines added: %s, Total lines deleted: %s\n", plus, minus}'

查找一段时间内指定账号提交的次数

git log --since="开始时间" --until="结束时间" --author="账号名" --pretty='%ae' |sort |uniq -c

查找一段时间内分支合并次数

git log --since="开始时间" --until="结束时间" --merges --grep="Merge branch '分支名'" --pretty='%aN' | wc -l

Git上传代码基本流程

场景一:新建分支首次上传代码

# 新建文件夹
# 克隆远程仓库到文件夹里
git clone 地址
# 进入克隆下来的文件目录# 建立分支
# 创建并切换到本地分支
git checkout -b 分支名
# 如果远端没有同名分支,则推送本地分支到远程并建立跟踪关系
git push -u origin 分支名
# 如果远端有同名分支,则本地分支与远端分支建立连接
git push --set-upstream origin 分支名# 提交代码
# 修改代码后添加到暂存区
git add .
# 提交到本地仓库
git commit -m "日志信息"
# 送本地修改到远程同名分支
git push# 之后在页面申请合并主分支

场景二:已有项目与人合作协作上传代码

# 获取最新代码
# 切换主分支(一般是dev分支或者master分支)
git checkout 主分支名 
# 获取最新主分支代码
git pull
# 切换本地个人开发分支
git checkout 分支名
# 合并最新主分支代码
git merge 主分支名 # 提交代码
# 修改代码后添加到暂存区
git add .
# 提交到本地仓库
git commit -m "日志信息"
# 送本地修改到远程同名分支
git push# 之后在页面申请合并主分支

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 3D建模软件--犀牛Rhino for Mac
  • Python应用—浅谈利用opencv去除水印
  • 创建最佳实践创建 XML 站点地图--SEO
  • 谷粒商城实战笔记-42-前端基础-Vue-生命周期和钩子函数
  • 深入浅出WebRTC—ULPFEC
  • 挖掘基于边缘无线协同感知的低功耗物联网 (LPIOT) 的巨大潜力
  • 《梦醒蝶飞:释放Excel函数与公式的力量》18.2 数据可视化技术
  • Lianwei 安全周报|2024.07.22
  • go语言UTC时间转换为中国时间
  • 技术文档总结----思维导图
  • C#基础:数据库分表的好处和实现方式
  • gradle 构建项目添加版本信息
  • npm create-react-app 项目名报错
  • java题目之数字加密以及如何解密
  • 第一弹:基于ABAP OLE技术实现对服务器文件进行读写操作
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Bootstrap JS插件Alert源码分析
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • css属性的继承、初识值、计算值、当前值、应用值
  • DOM的那些事
  • ECS应用管理最佳实践
  • ES6核心特性
  • JavaScript的使用你知道几种?(上)
  • windows下使用nginx调试简介
  • 测试开发系类之接口自动化测试
  • 仿天猫超市收藏抛物线动画工具库
  • 好的网址,关于.net 4.0 ,vs 2010
  • 漂亮刷新控件-iOS
  • 前端设计模式
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用Gradle第一次构建Java程序
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微信小程序--------语音识别(前端自己也能玩)
  • 我的业余项目总结
  • 学习笔记TF060:图像语音结合,看图说话
  • 一些css基础学习笔记
  • ​批处理文件中的errorlevel用法
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # Java NIO(一)FileChannel
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (003)SlickEdit Unity的补全
  • (152)时序收敛--->(02)时序收敛二
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (第30天)二叉树阶段总结
  • (翻译)terry crowley: 写给程序员
  • (十六)Flask之蓝图
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)为C# Windows服务添加安装程序
  • .gitignore文件忽略的内容不生效问题解决
  • .NET : 在VS2008中计算代码度量值