0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开源的分布式版本控制系统Git配置

Q4MP_gh_c472c21 来源:老九学堂 作者:老九学堂 2021-03-09 13:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天带着大家来学习Git,这是一个开源的分布式版本控制系统,帮助我们进行项目的管理更迭。

其实关于Git的命令也不是一定需要记忆,但毕竟是效率型工具,对于一些常见的命令掌握清楚,对于开发的进展会更有帮助。

一新建

创建一个新的 git 版本库。这个版本库的配置、存储等信息会被保存到.git 文件夹中。

# 初始化当前项目$ git init

# 新建一个目录,将其初始化为Git代码库$ git init [project-name]

# 在指定目录创建一个空的 Git 仓库。运行这个命令会创建一个名为 directory,只包含 .git 子目录的空目录。

$ git init --bare 《directory》

# 下载一个项目和它的整个代码历史# 这个命令就是将一个版本库拷贝到另一个目录中,同时也将分支都拷贝到新的版本库中。这样就可以在新的版本库中提交到远程分支$ git clone [url]

二配置

更改设置。可以是版本库的设置,也可以是系统的或全局的。

# 显示当前的Git配置$ git config --list

# 编辑Git配置文件$ git config -e [--global]

# 输出、设置基本的全局变量$ git config --global user.email$ git config --global user.name

$ git config --global user.email “MyEmail@gmail.com”$ git config --global user.name “My Name”

# 定义当前用户所有提交使用的作者邮箱。$ git config --global alias.《alias-name》 《git-command》

# 为Git命令创建一个快捷方式(别名)。$ git config --system core.editor 《editor》

三帮助

git 内置了对命令非常详细的解释,可以供我们快速查阅

# 查找可用命令$ git help

# 查找所有可用命令$ git help -a

# 在文档当中查找特定的命令# git help 《命令》$ git help add$ git help commit$ git help init

四状态

显示索引文件(也就是当前工作空间)和当前的头指针指向的提交的不同

# 显示分支,未跟踪文件,更改和其他不同$ git status

# 查看其他的git status的用法$ git help status

五信息

获取某些文件,某些分支,某次提交等 git 信息

# 显示commit历史,以及每次commit发生变更的文件$ git log --stat

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

# 显示某个commit之后的所有变动,每个commit占据一行$ git log [tag] HEAD --pretty=format:%s

# 显示某个commit之后的所有变动,其“提交说明”必须符合搜索条件$ git log [tag] HEAD --grep feature

# 显示某个文件的版本历史,包括文件改名$ git log --follow [file]$ git whatchanged [file]

# 显示指定文件相关的每一次diff$ git log -p [file]

# 显示过去5次提交$ git log -5 --pretty --oneline

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

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

# 显示暂存区和工作区的差异$ git diff

# 显示暂存区和上一个commit的差异$ git diff --cached [file]

# 显示工作区与当前分支最新commit之间的差异$ git diff HEAD

# 显示两次提交之间的差异$ git diff [first-branch]。..[second-branch]

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

# 比较暂存区和版本库差异$ git diff --staged

# 比较暂存区和版本库差异$ git diff --cached

# 仅仅比较统计信息$ git diff --stat

# 显示某次提交的元数据和内容变化$ git show [commit]

# 显示某次提交发生变化的文件$ git show --name-only [commit]

# 显示某次提交时,某个文件的内容$ git show [commit]:[filename]

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

# 查看远程分支$ git br -r

# 创建新的分支$ git br 《new_branch》

# 查看各个分支最后提交信息$ git br -v

# 查看已经被合并到当前分支的分支$ git br --merged

# 查看尚未被合并到当前分支的分支$ git br --no-merged

六添加

添加文件到当前工作空间中。如果你不使用 git add 将文件添加进去,那么这些文件也不会添加到之后的提交之中。

# 添加一个文件$ git add test.js

# 添加一个子目录中的文件$ git add /path/to/file/test.js

# 支持正则表达式$ git add 。/*.js

# 添加指定文件到暂存区$ git add [file1] [file2] 。..

# 添加指定目录到暂存区,包括子目录$ git add [dir]

# 添加当前目录的所有文件到暂存区$ git add 。

# 添加每个变化前,都会要求确认# 对于同一个文件的多处变化,可以实现分次提交$ git add -p

七删除

rm 和上面的 add 命令相反,从工作空间中去掉某个文件

# 移除 HelloWorld.js$ git rm HelloWorld.js

# 移除子目录中的文件$ git rm /pather/to/the/file/HelloWorld.js

# 删除工作区文件,并且将这次删除放入暂存区$ git rm [file1] [file2] 。..

# 停止追踪指定文件,但该文件会保留在工作区$ git rm --cached [file]

八分支

管理分支,可以通过下列命令对分支进行增删改查切换等

# 查看所有的分支和远程分支$ git branch -a

# 创建一个新的分支$ git branch [branch-name]

# 重命名分支# git branch -m 《旧名称》 《新名称》$ git branch -m [branch-name] [new-branch-name]

# 编辑分支的介绍$ git branch [branch-name] --edit-description

# 列出所有本地分支$ git branch

# 列出所有远程分支$ git branch -r

# 新建一个分支,但依然停留在当前分支$ git branch [branch-name]

# 新建一个分支,并切换到该分支$ git checkout -b [branch]

# 新建一个分支,指向指定commit$ git branch [branch] [commit]

# 新建一个分支,与指定的远程分支建立追踪关系$ git branch --track [branch] [remote-branch]

# 切换到指定分支,并更新工作区$ git checkout [branch-name]

# 切换到上一个分支$ git checkout -

# 建立追踪关系,在现有分支与指定的远程分支之间$ git branch --set-upstream [branch] [remote-branch]

# 合并指定分支到当前分支$ git merge [branch]

# 选择一个commit,合并进当前分支$ git cherry-pick [commit]

# 删除分支$ git branch -d [branch-name]

# 删除远程分支$ git push origin --delete [branch-name]$ git branch -dr [remote/branch]

# 切换到某个分支$ git co 《branch》

# 创建新的分支,并且切换过去$ git co -b 《new_branch》

# 基于branch创建新的new_branch$ git co -b 《new_branch》 《branch》

# 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除$ git co $id

# 把某次历史提交记录checkout出来,创建成一个分支$ git co $id -b 《new_branch》

# 删除某个分支$ git br -d 《branch》

# 强制删除某个分支 (未被合并的分支被删除的时候需要强制)$ git br -D 《branch》

九检出

将当前工作空间更新到索引所标识的或者某一特定的工作空间

# 检出一个版本库,默认将更新到master分支$ git checkout# 检出到一个特定的分支$ git checkout branchName# 新建一个分支,并且切换过去,相当于“git branch 《名字》; git checkout 《名字》”

$ git checkout -b newBranch

十远程同步

远程同步的远端分支

# 下载远程仓库的所有变动$ git fetch [remote]

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

# 显示某个远程仓库的信息$ git remote show [remote]

# 增加一个新的远程仓库,并命名$ git remote add [shortname] [url]

# 查看远程服务器地址和仓库名称$ git remote -v

# 添加远程仓库地址$ git remote add origin git@ github:xxx/xxx.git

# 设置远程仓库地址(用于修改远程仓库地址)$ git remote set-url origin git@ github.com:xxx/xxx.git

# 删除远程仓库$ git remote rm 《repository》

# 上传本地指定分支到远程仓库# 把本地的分支更新到远端origin的master分支上# git push 《远端》 《分支》# git push 相当于 git push origin master$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突$ git push [remote] --force

# 推送所有分支到远程仓库$ git push [remote] --all

11撤销

# 恢复暂存区的指定文件到工作区$ git checkout [file]

# 恢复某个commit的指定文件到暂存区和工作区$ git checkout [commit] [file]

# 恢复暂存区的所有文件到工作区$ git checkout 。

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变$ git reset [file]

# 重置暂存区与工作区,与上一次commit保持一致$ git reset --hard

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变$ git reset [commit]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致$ git reset --hard [commit]

# 重置当前HEAD为指定commit,但保持暂存区和工作区不变$ git reset --keep [commit]

# 新建一个commit,用来撤销指定commit# 后者的所有变化都将被前者抵消,并且应用到当前分支$ git revert [commit]

# 恢复最后一次提交的状态$ git revert HEAD

# 暂时将未提交的变化移除,稍后再移入$ git stash$ git stash pop

# 列所有stash$ git stash list

# 恢复暂存的内容$ git stash apply

# 删除暂存区$ git stash drop

12commit

将当前索引的更改保存为一个新的提交,这个提交包括用户做出的更改与信息

# 提交暂存区到仓库区附带提交信息$ git commit -m [message]

# 提交暂存区的指定文件到仓库区$ git commit [file1] [file2] 。.. -m [message]

# 提交工作区自上次commit之后的变化,直接到仓库区$ git commit -a

# 提交时显示所有diff信息$ git commit -v

# 使用一次新的commit,替代上一次提交# 如果代码没有任何新变化,则用来改写上一次commit的提交信息$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化$ git commit --amend [file1] [file2] 。..

13diff

显示当前工作空间和提交的不同

# 显示工作目录和索引的不同$ git diff

# 显示索引和最近一次提交的不同$ git diff --cached

# 显示工作目录和最近一次提交的不同$ git diff HEAD

14grep

可以在版本库中快速查找

可选配置:

# 感谢Travis Jeffery提供的以下用法:# 在搜索结果中显示行号$ git config --global grep.lineNumber true

# 是搜索结果可读性更好$ git config --global alias.g “grep --break --heading --line-number”

# 在所有的java中查找variableName$ git grep ‘variableName’ -- ‘*.java’

# 搜索包含 “arrayListName” 和, “add” 或 “remove” 的所有行$ git grep -e ‘arrayListName’ --and ( -e add -e remove )

15log

显示这个版本库的所有提交

# 显示所有提交$ git log

# 显示某几条提交信息$ git log -n 10

# 仅显示合并提交$ git log --merges

# 查看该文件每次提交记录$ git log 《file》

# 查看每次详细修改内容的diff$ git log -p 《file》

# 查看最近两次详细修改内容的diff$ git log -p -2

#查看提交统计信息$ git log --stat

16merge

合并就是将外部的提交合并到自己的分支中

# 将其他分支合并到当前分支$ git merge branchName

# 在合并时创建一个新的合并后的提交# 不要 Fast-Foward 合并,这样可以生成 merge 提交$ git merge --no-ff branchName

17mv

重命名或移动一个文件

# 重命名$ git mv test.js test2.js

# 移动$ git mv test.js 。/new/path/test.js

# 改名文件,并且将这个改名放入暂存区$ git mv [file-original] [file-renamed]

# 强制重命名或移动# 这个文件已经存在,将要覆盖掉$ git mv -f myFile existingFile

18tag

# 列出所有tag$ git tag# 新建一个tag在当前commit$ git tag [tag]

# 新建一个tag在指定commit$ git tag [tag] [commit]

# 删除本地tag$ git tag -d [tag]

# 删除远程tag$ git push origin :refs/tags/[tagName]

# 查看tag信息$ git show [tag]

# 提交指定tag$ git push [remote] [tag]

# 提交所有tag$ git push [remote] --tags

# 新建一个分支,指向某个tag$ git checkout -b [branch] [tag]

19pull

从远端版本库合并到当前分支

# 从远端origin的master分支更新版本库# git pull 《远端》 《分支》$ git pull origin master

# 抓取远程仓库所有分支更新并合并到本地,不要快进合并$ git pull --no-ff

20ci

$ git ci 《file》$ git ci .# 将git add, git rm和git ci等操作都合并在一起做$ git ci -a$ git ci -am “some comments”# 修改最后一次提交记录$ git ci --amend

21rebase (谨慎使用)

将一个分支上所有的提交历史都应用到另一个分支上不要在一个已经公开的远端分支上使用 rebase

# 将experimentBranch应用到master上面# git rebase 《basebranch》 《topicbranch》$ git rebase master experimentBranch

22reset (谨慎使用)

将当前的头指针复位到一个特定的状态。这样可以使你撤销 merge、pull、commits、add 等 这是个很强大的命令,但是在使用时一定要清楚其所产生的后果

# 使 staging 区域恢复到上次提交时的状态,不改变现在的工作目录$ git reset

# 使 staging 区域恢复到上次提交时的状态,覆盖现在的工作目录$ git reset --hard

# 将当前分支恢复到某次提交,不改变现在的工作目录# 在工作目录中所有的改变仍然存在$ git reset dha78as

# 将当前分支恢复到某次提交,覆盖现在的工作目录# 并且删除所有未提交的改变和指定提交之后的所有提交$ git reset --hard dha78as

24其他

# 生成一个可供发布的压缩包$ git archive

# 打补丁$ git apply 。./sync.patch

# 测试补丁能否成功$ git apply --check 。./sync.patch

# 查看Git的版本$ git --version

原文标题:没用过GIT?你要小心了。..。..

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制系统
    +关注

    关注

    41

    文章

    6893

    浏览量

    113563
  • Git
    Git
    +关注

    关注

    0

    文章

    205

    浏览量

    16780

原文标题:没用过GIT?你要小心了......

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    讯维如何推动分布式可视化控制系统全国产化

    在数字化转型深入推进的今天,分布式可视化控制系统已成为指挥调度、远程医疗、能源管控等关键领域的 "神经中枢",其技术自主性直接关系到国家关键基础设施安全与产业发展主动权。
    的头像 发表于 11-05 09:43 326次阅读

    从 “单一控制” 到 “智能可视”:分布式系统与传统音视频控制系统的关键区别

    分布式可视化控制系统与传统的音视频控制系统的区别主要体现在以下几个方面: 1.系统架构:分布式可视化控制
    的头像 发表于 10-21 10:52 234次阅读

    分布式智能展厅控制系统:打造AI互动展示新模式!

    近日,某江西某历史博物馆成功应用讯维全新分布式智能展厅控制系统,为数字展厅的音视频交互和环境控制带来了革新。讯维全新分布式智能展厅控制系统
    的头像 发表于 09-24 16:23 598次阅读
    <b class='flag-5'>分布式</b>智能展厅<b class='flag-5'>控制系统</b>:打造AI互动展示新模式!

    【节能学院】Acrel-1000DP分布式光伏监控系统在奉贤平高食品 4.4MW 分布式光伏中应用

    摘要:在“双碳”和新型电力系统建设背景下,分布式光伏接入比例不断提高,对配电网电压、调度运行及调峰等环节造成强烈冲击。本文设计包含平台层、设备层二层架构体系的分布式光伏管控平台,以及小容量工商业
    的头像 发表于 08-23 08:04 3306次阅读
    【节能学院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏监控<b class='flag-5'>系统</b>在奉贤平高食品 4.4MW <b class='flag-5'>分布式</b>光伏中应用

    分布式光伏发电监测系统技术方案

    分布式光伏发电监测系统技术方案 柏峰【BF-GFQX】一、系统目标 :分布式光伏发电监测系统旨在通过智能化的监测手段,实现对
    的头像 发表于 08-22 10:51 2888次阅读
    <b class='flag-5'>分布式</b>光伏发电监测<b class='flag-5'>系统</b>技术方案

    Ceph分布式存储系统解析

    在当今数据爆炸的时代,企业对存储系统的需求日益增长,传统的集中式存储已经无法满足大规模数据处理的要求。分布式存储系统应运而生,而Ceph作为开源分布
    的头像 发表于 07-14 11:15 715次阅读

    EtherCAT科普系列(15):EtherCAT技术在分布式测控系统领域应用

    分布式测控系统即集散控制系统,是一种以控制器和现场设备为基础,将相关工艺信号汇集到系统中,并由操作站进行监视或其他
    的头像 发表于 07-08 11:17 916次阅读
    EtherCAT科普系列(15):EtherCAT技术在<b class='flag-5'>分布式</b>测控<b class='flag-5'>系统</b>领域应用

    分布式光伏发电监控系统

    对高、低压并网分布式光伏电站的升压系统、光伏逆变器等设备进行全面监控,采集微机保护装置、自动控制设备、电能质量监测装置、光伏逆变器、一体化电源等设备数据,并提供有功功率控制(AGC)、
    的头像 发表于 06-25 13:41 593次阅读
    <b class='flag-5'>分布式</b>光伏发电监控<b class='flag-5'>系统</b>

    双电机分布式驱动汽车高速稳定性机电耦合控制

    摘要:为了利用所设计的双电机防滑差速驱动系统来提高分布式驱动汽车的动力学性能,在前期同轴耦合驱动控制理论研究的基础上,开展该车的高速稳定性机电耦合控制研究。建立并验证包含所设计驱动
    发表于 06-18 16:37

    讯维AI分布式控制系统的核心优势和应用场景

    在数字化转型的浪潮中,音视频技术正从传统的信号传输工具进化为智能交互的核心载体。讯维AI分布式可视化控制系统通过深度融合AI技术与分布式架构,构建了"去中心化节点+AI智能引擎"
    的头像 发表于 05-26 15:12 902次阅读

    国产超高精度AFE替换AD7124应用于分布式控制系统

    国产超高精度AFE替换AD7124应用于分布式控制系统
    的头像 发表于 03-12 10:15 704次阅读
    国产超高精度AFE替换AD7124应用于<b class='flag-5'>分布式控制系统</b>

    飞凌嵌入ElfBoard ELF 1板卡-git管理源码之git安装和使用

    git是什么?git是一个开源分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目
    发表于 01-14 09:08

    基于ptp的分布式系统设计

    在现代分布式系统中,精确的时间同步对于确保数据一致性、系统稳定性和性能至关重要。PTP(Precision Time Protocol)是一种网络协议,用于在分布式
    的头像 发表于 12-29 10:09 975次阅读

    DCS控制系统配置与实施流程

    DCS(分布式控制系统控制系统配置与实施流程是一个复杂但有序的过程,涉及多个步骤和环节。以下是一个典型的DCS控制系统配置与实施流程: 一、筹备工作 确定需求 :明确
    的头像 发表于 12-27 16:47 2725次阅读

    大型工商业分布式光伏如何配置防逆流方案?

    主体应通过配置防逆流装置实现发电量全部自发自用”,此项规定将对分布式光伏投资建设产生重要影响。在配电系统中,当本地负载无法消纳完光伏发出的电量时,多余的电能会由光伏
    的头像 发表于 12-19 18:04 1565次阅读
    大型工商业<b class='flag-5'>分布式</b>光伏如何<b class='flag-5'>配置</b>防逆流方案?