首页 > 其他分享 >Sublime Merge

Sublime Merge

时间:2023-03-24 10:01:32浏览次数:31  
标签:git rebase 指定 stash Merge commit Sublime 分支


Sublime Merge目录

  • 初始应用
  • 目录
  • Git - 暂存列表(stashes)
  • 常用命令
  • 存储当前的修改,但不提交commit
  • 存储当前的修改,但不提交commit, 并指定标识信息
  • 查看stash内容
  • 回到某个stash的状态, 如果没有指定参数,将回到最近stash的状态
  • 从指定的stash创建一个新分支,如果没有指定stash,默认为最近的stash
  • 删除指定的stash, 如果没有指定stash,默认为最近的stash
  • 执行 rebase 之前自动 stash
  • 什么是 rebase?
  • git rebase 和 git merge 有啥区别?
  • 注意:
  • Git Submodules 子模块
  • Git常用命令
  • 把远程分支拉到本地
  • 查看本地分支
  • 查看远程分支
  • 查看所有分支
  • pull下所有分支
  • git fetch & pull详解

初始应用

Sublime Merge_常用命令


Local Repositories 本地存储库

Open Repository 打开存储库

New Repository 新建存储库

Clone Repository 克隆存储库

Source URL 源URL

Repository Name 存储库名称

Destination Path 目标路径

目录

Sublime Merge_远程分支_02


BRANCHES 分支

REMOTES 远程仓库

TAGS 标签

STASHES 暂存列表

SUBMODULES 子模块

Git - 暂存列表(stashes)

通过Stashes(暂存列表)可以临时地保存一些还没有提交的工作,以便在分支上不需要提交未完成工作,就可以清理工作目录。

换而言之, 就是将当前的更改临时搁置起来,在需要的时候,可以返回先前的工作目录状态。
默认情况下,仅储藏当前跟踪文件中的更改,新文件将被忽略。

可以独立地创建和应用多个stash。

常用命令

  • 执行git stash可以将手当前工作目录状态临时保存,可以执行git stash applygit stash pop可以恢复保存的工作目录状态。

  • 执行git stash后,git status将显示无任何改动,但可以通过git stash list查看保存的stash。
git stash  # Temporarily stores all modified tracked files
git stash list  # Lists all stashed changesets

git stash pop <stash> # Restores the stashed files, and delete the stashed files
git stash apply <stash> # Restores the stashed files, and reserve the stashed files
git stash clear  # Remove all the stashed states

存储当前的修改,但不提交commit

git stash

  • -u或者--include-untracked参数,可以stash untracked文件
  • -a或者--all参数,可以stash当前目录下的所有修改
  • -p或者--patch参数,可以交互式stash当前目录下的指定修改
  • 无参数,默认存储当前已跟踪的修改

存储当前的修改,但不提交commit, 并指定标识信息

git stash save <message>

查看stash内容

git stash show

  • 无参数, 默认查看最新的stash和最新提交的diff结果
  • <stash@{n}>参数, 查看指定stash和最新提交的diff结果
  • -p <stash@{n}>参数, 查看指定stash和最新提交的diff结果, 已git diff方式显示

回到某个stash的状态, 如果没有指定参数,将回到最近stash的状态

git stash apply/pop <stash@{n}>

  • apply方式,将指定的stash应用到当前工作目录,对应的stash仍保留在stashes(暂存列表
  • pop方式,将指定的stash应用到当前工作目录,并删除对应的stash

从指定的stash创建一个新分支,如果没有指定stash,默认为最近的stash

git stash branch <branch-name> <stash@{n}>

删除指定的stash, 如果没有指定stash,默认为最近的stash

git stash drop <stash@{n}>

执行 rebase 之前自动 stash

git rebase --autostash

什么是 rebase?

git rebase 你其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点。这个时候才能知道你当前分支于你需要比较的分支之间的差异。

原理很简单:rebase需要基于一个分支来设置你当前的分支的基线,这基线就是当前分支的开始时间轴向后移动到最新的跟踪分支的最后面,这样你的当前分支就是最新的跟踪分支。

这里的操作是基于文件事务处理的,所以你不用怕中间失败会影响文件的一致性。在中间的过程中你可以随时取消rebase 事务。

git rebase 和 git merge 有啥区别?

rebase会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。

就好像你从公共分支又重新拉出来这个分支一样。

举例:如果你从 master 拉了个feature分支出来,然后你提交了几个 commit,

这个时候刚好有人把他开发的东西合并到 master 了,这个时候 master 就比你拉分支的时候多了几个 commit,

如果这个时候你 rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面。

Sublime Merge_远程分支_03


merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交

Sublime Merge_远程分支_04

注意:

不要在公共分支使用rebase
本地和远端对应同一条分支,优先使用rebase,而不是merge

为什么不要再公共分支使用rebase?

因为往后放的这些 commit 都是新的,这样其他从这个公共分支拉出去的人,都需要再 rebase,相当于你 rebase 东西进来,就都是新的 commit 了。

Git Submodules 子模块

参考文献:http://www.ayqy.net/blog/%E7%90%86%E8%A7%A3git-submodules/

Git常用命令

把远程分支拉到本地

git fetch origin dev(dev为远程仓库的分支名)

把某个分支上的内容都拉取到本地

git pull origin dev(远程分支名称)

查看本地分支

git branch

查看远程分支

git branch -r

查看所有分支

git branch -a

pull下所有分支

git pull -a

git fetch & pull详解

先用一张图来理一下git fetchgit pull的概念:

Sublime Merge_远程分支_05


可以简单的概括为:

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。

git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。


标签:git,rebase,指定,stash,Merge,commit,Sublime,分支
From: https://blog.51cto.com/u_13571520/6146824

相关文章

  • Sublime Text 备忘清单_开发速查表分享
    SublimeText备忘清单这个SublimeText快速参考速查备忘单显示了它的键盘快捷键和命令。为开发人员分享快速参考备忘单。开发速查表大纲快捷键文本编辑初学者......
  • 鼠标右键添加使用sublime text打开
    WindowsRegistryEditorVersion5.00[HKEY_CLASSES_ROOT\*\shell\SublimeText]@="sublimetextopen""Icon"="C:\\ProgramFiles\\SublimeText\\sublime_text.exe"[H......
  • git 冲突: Please, commit your changes or stash them before you can merge. git sta
    场景:其实这种冲突是甲乙两个人或多人进行开发同一个组件,但是某个人提前提交了代码,当另一个人进行提交代码的时候去gitpull的时候,就会报如下。主题上述描述的场景,俩人开发同......
  • Linux开机提示“welcome to emergency mode! ”进入救援模式解决办法
    一、centos开机启动进入救援模式:welcometoemergencymode! 根据系统提示:journalctl-xb查看系统报错、journalctl-p4查看报错级别为4警报没有找到相关文件,检查开......
  • [GIT] 如何处理GIT分支合并(GIT MERGE)
    1概述2分支合并如果你有两个分支main和dev,main存放稳定版本,dev是开发版本,一个阶段后,你需要把dev代码更新到main分支中。dev--(mergeupdatecontentto)-->main......
  • SublimeREPL设置详解——实现代码传递(Eval in REPL)
    1.安装前题:安装packagecontrol,过程省略。windows10,python3.10(自定义的build),Sublimebuild4126。安装:packagecontrol安装sublimeREPL。2.测试2.1运行方......
  • Vue——mergeOptions【四】
    前言前面我们简单的了解了vue初始化时的一些大概的流程,这里我们详细的了解下具体的内容;这块建议搭建可以根据demo进行debugger来观察;内容这一块主要围绕init.ts......
  • mysql merge update_SQL中批量更新 merge into用法
     从备份表中更新字段到正式表中,使用UPDATE批量更新大量的数据,会出现效率低下,有时候甚至卡死的情况,后面通过使用MERGEINTO代替UPDATE执行批量更新,会提升执行效率。......
  • SublimeText3 Python代码补全
    1.首先安装packagecontrol插件下载插件:  https://sublime.wbond.net/Package%20Control.sublime-packagePreferences->BrowsePackages打开一个文件夹,上一层......
  • SublimeText实现Markdown快速预览
    SublimeText是什么?SublimeText是一个文本编辑器,同时也是一个先进的代码编辑器。SublimeText具有漂亮的用户界面和强大的功能,它的主要功能包括:拼写检查,书签,完整的PythonAPI......