大家好,又见面了,我是你们的朋友全栈君 git log 查看 当前分支的 提交历史 在提交了若干更新之后,想回顾下提交历史,可以使用 git log 命令查看 默认不用任何参数的话,git log 会按提交时间列出所有的更新...git log 有许多选项可以帮助你搜寻感兴趣的提交,接下来我们介绍些最常用的。...我们常用 -p 选项 展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新: $ git log -p -2 此外,还有许多摘要选项可以用,比如 --stat,仅简要的显示 文件 增改行数统计,...$ git log –stat –author 仅显示指定作者相关的提交。...$ git log –author=作者 查找 作者 提交的 版本; 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171988.html原文链接:https
当我第一次在mac系统下使用git的时候,发现一个问题,git默认是不显示当前所在的分支名称,然后网上查找资料,找到了解决办法,终于可以显示本地当前分支,现在分享如下。...1 进入你的home目录 cd ~ 2 编辑.bashrc文件 vi .bashrc 3 将下面的代码加入到文件的最后处 function git_branch { branch="`git branch...= "" ];then if [ "${branch}" = "(no branch)" ];then branch="(`git rev-parse --short HEAD...fi echo " ($branch)" fi } export PS1='\u@\h \[\033[01;36m\]\W\[\033[01;32m\]$(git_branch)\[\...033[00m\] \$ ' 4 保存退出 5 执行加载命令 source ./.bashrc 6 完成 Mac 下面启动的 shell 是 login shell,所以加载的配置文件是.bash_profile
大家好,又见面了,我是你们的朋友全栈君。 显示两个分支之间 显示当前分支与父分支的差异文件。...git checkout branch1 git diff --name-status parent_branch1 显示两个提交之间 git diff --name-status commitID1...commitID2 如果不需要显示是M还是A,用这个命令 git diff --name-only parent_branch1 git diff --name-only commitID1 commitID2
概述 使用Git时,有时候不同分支的文件是不同步的,因此如果想要把别的分支的文件改动应用到当前分支,应该怎么操作呢?如果两边都有更新,该如何选择合并呢?...这篇小文会对不同情形下的合并进行一个简单的介绍。 引入 假设我们当前在分支branch1, 需要将分支branch2上的a.py合并到当前分支。...根据之前写的这篇文章,我们可以这么操作 git checkout branch2 -- a.py 两边都存在文件 现在换一个情况,假设分支branch1和branch2都有文件a.py,且分支branch1...chekcout后面增加-p或者--patch选项,交互式地选择要合并过来的代码块: git checkout -p branch2 -- a.py 交互式地操作命令同git add -p,可以参考这里的文章...更复杂的情况是,分支branch1也有同名文件,且也有更新,如果直接使用git checkout的话,分支branch2上的文件会替代本地的文件,且没有任何提示(毕竟cheeckout的含义就是切换到某个分支
问题描述 今天遇到一个git分支切换的问题,我在分支A上做了修改,然后切换到分支B后,发现分支B上也存在着分支A上的修改。...原因 如果当前分支所做的修改没有提交就切换去其他分支的话,那么也会看到相同的修改 解决方法 解决方法有两种: 方法一: 用 git add 和 git commit 提交修改,只要用 git status...(所谓的干净就是指不显示有修改的痕迹,即git status显示没有内容被修改) 方法二: 如果我当前分支上的工作还没做完,不能提交,但又想去其他分支,这时候可以把当前分支的工作现场隐藏起来。...用 git stash 隐藏当前工作现场,这个时候用 git status 查看工作区是干净的,所以就可以放心地去其他分支了。用 git stash list 可以查看隐藏起来的工作现场。...未经允许不得转载:肥猫博客 » git切换分支(如果当前分支所做的修改没有提交此时如何切换去其他分支)
B $git cherry-pick ecd4f07cd150fab7d55cabd00993d60a6720bd44 然后就将A分支的某个commit合并到了B分支了 分离头指针 git checkout...您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以通过另外 的检出分支操作丢弃在这个状态下所做的任何提交。...(头指针分离于 b5b7d12) 修改 README.md git status 头指针分离于 b5b7d12 尚未暂存以备提交的变更: (使用 "git add ..."...丢弃工作区的改动) 修改: README.md 修改尚未加入提交(使用 "git add" 和/或 "git commit -a") 查看当前分支来源于哪个分支 git reflog...、git pull 3、git branch the_branch_backup //备份一下这个分支当前的情况 4、git reset --hard the_commit_id //把the_branch
/test (2) $ git diff HEAD^ HEAD (3) 不是使用当前分支的尖端,而与“测试”分支的尖端进行比较。...不是与“test”分支的尖端进行比较,而与当前分支的尖端进行比较,但将比较限制为文件“test”。 比较上次提交和最后一次提交之前的版本。...新提交是 HEAD 的直接子代,通常是当前分支的尖端,并且分支被更新为指向它(除非没有分支与工作树相关联,在这种情况下 HEAD 是“分离的”,如 git-checkout [1] )。...如果参数缺失它默认为HEAD(即当前分支的尖端)。 命令的第二个表单创建一个名为的新分支头。它指向当前的HEAD,或者是如果有给予的话。...省略将 HEAD 分离到当前分支的顶端。
只看当前分支的历史 git log ? 查看全部分支 git log --all ? 图形化展示 git log --all graph ?...探秘.git config文件 配置文件,存放一些配置信息。 HEAD文件 引用文件,引用当前分支 refs文件夹 heads分支文件夹, 存放各个分支,其中内容表示commit的哈希值。...分离头指针情况下的注意事项 分离头指针指的是没有基于某个分支来做修改。 好处 用于测试,如果测试结果不佳,则可以直接丢弃。...HEAD可以指代当前分支。...例如比较每次commit的差异: #比较当前commit与上一次commit的差异 #两种写法都可以 git diff HEAD HEAD^ git diff HEAD HEAD~ #比较当前commit
,可以使用 git checkout 命令 但仓库处于“分离头指针(detached HEAD)”的状态,会有些小问题存在 polo@B-J5D1MD6R-2312 watermarker % git...您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以在切换 回一个分支时,丢弃在此状态下所做的提交而不对分支造成影响。...HEAD 目前位于 7fa175d test 查看当前所处分支 polo@B-J5D1MD6R-2312 watermarker % git branch * (头指针在 1.2 分离) master...能看到执行 git checkout 之后,本地分支会自动切换到头指针分支 重点 在“分离头指针”状态下,如果做了某些更改然后提交它们,标签不会发生变化 但新提交将不属于任何分支,并且将无法访问,除非通过确切的提交哈希才能访问...现在为推送当前(分离头指针)的历史,使用 git push origin HEAD:分支名字> 需要指定远程分支的哈希(就是那串很长的乱码字符串) 因此,如果你需要进行更改,比如你要修复旧版本中的错误
能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发......,命令如下: git branch 分支名 切换分支 当切换分支后,默认情况下HEAD会指向当前分支,即HEAD间接指向当前分支指向的节点 git checkout 分支名 同时也可以创建一个分支后立即切换...,如图 命令行: git cherry-pick 节点哈希值 假设当前分支是master,执行了git cherry-pick C3(哈希值),C4(哈希值)命令后会直接将C3、C4节点抓过来放在后面...//也可以直接脱离分支指向当前节点 git checkout --detach 由于哈希值是一串很长很长的乱码,在实际操作中使用哈希值分离HEAD很麻烦,所以Git也提供了HEAD基于某一特殊位置(分支.../HEAD)直接指向前一个或前N个节点的命令,也即相对引用,如下: //HEAD分离并指向前一个节点 git checkout 分支名/HEAD^ //HEAD分离并指向前N个节点 git checkout
方式二:不使用路径的用法 会改变HEAD头指针。之所以后面的参数写作,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态。...在“分离头指针”状态下的提交不能被引用关联到而可能会丢失。...$ git checkout [] 关于 ”分离头指针“ HEAD指向的提交将作为新提交的父提交,查看当前HEAD的指向。...$ cat .git/HEAD 分离头指针,指的就是HEAD头指针指向了一个具体的提交ID,而不是一个引用(分支)。...cherry-pick $ git cherry-pick 从众多的提交中挑选出一个提交应用在当前的工作分支中。
/* $ git pull 不带参数执行git pull 相当于执行了git pull 当前分支未设置 branch..remote,则为origin 获取的远程版本库的URL地址由 remote.....之所以后面的参数写作,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态。在“分离头指针”状态下的提交不能被引用关联到而可能会丢失。...$ git checkout [] 关于 ”分离头指针“ HEAD指向的提交将作为新提交的父提交,查看当前HEAD的指向。...$ cat .git/HEAD 分离头指针,指的就是HEAD头指针指向了一个具体的提交ID,而不是一个引用(分支)。...cherry-pick $ git cherry-pick 从众多的提交中挑选出一个提交应用在当前的工作分支中。
git rebase origin/master # 把当前分支基于 origin/master 做 rebase 操作,也就相当于把当前分支的东西加到 origin/master 中 git rerere...分离头指针 分离头指针的例子如下所示,上面提到切换到某个分支的用法是 $ git checkout branch_name 那么假如把 branch_name 变成了 hash_value,那么这个就相当于...“分离头指针”(PS:个人的理解是相当于创建了一个匿名 branch,这个匿名的 branch 是从 hash_value 的地方分出来的) $ git checkout hash_value 之后的...commit 都是基于这个分离头指针的位置开始的,这些 commit 都没有基于某个 branch,相当于都是“游离”状态的。...另外分类头指针也是可以用的,比如我们先用分离头指针进行一波修改和测试,如果测试不错,那么就把这些修改的 commit 添加成 branch。
.git 目录内容 ---- 本文记录平时开发中遇到的 .git 目录下的内容及其作用,持续更新 !...git pull 首先调用 git fetch 从远程库获取分支, FETCH_HEAD 指向分支的尖端(也就是该文本内容的第一行是当前分支),然后调用 git merge 合并 FETCH_HEAD...到当前分支 .git/HEAD ---- .git/HEAD 该文件中记录了当前指针指向的是哪个分支 # 当前在 master 分支 ref: refs/heads/master # 当前在 liang...分支 ref: refs/heads/liang .git/ORIG_HEAD ---- 使用 git merge 合并分支,会产生这个文件 因为合并分支是个比较危险的操作,所以 git.../* 记录本地分支的指针指向的是哪一个 commit id git/refs/remotes/* 记录远程分支的指针指向的是哪一个 commit id git/refs/tag/* 记录本地标签对应的哪一个
1、列出标签 首先先列出当前项目的已有标签。 git tag 你也可以按照特定的模式查找标签。例如,Git 自身的源代码仓库包含标签的数量超过 500 个。...这个过程就像共享远程分支一样——你可以运行 git push origin 。...(不建议这么做) 如果你想查看某个标签所指向的文件版本,可以使用 git checkout 命令, 虽然这会使你的仓库处于分离头指针(detached HEAD)的状态——这个状态有些不好的副作用...: 在分离头指针状态下,如果你做了某些更改然后提交它们,标签不会发生变化, 但你的新提交将不属于任何分支,并且将无法访问,除非通过确切的提交哈希才能访问。...因此,如果你需要进行更改,比如你要修复旧版本中的错误,那么通常需要创建一个新分支: 敬请期待下一篇 git分支
# 核心 Git 工具 DAG # 有向无环图 dangling object # 摇摆对象 detached HEAD # 分离头指针...,亦即当前分支) head # 头、分支 head ref # 分支 header # 头信息 hook # 钩子 hunk...点击“Commit”按钮,已经暂存的文件将被提交到版本库——特别说明,这里的版本库是指本地库,而非远程库。点击“Push”按钮,才可以将本地库的当前分支提交到远程库。关于分支,将在后面详细说明。...创建分支 假定在 FY-2 项目中创建以 master 分支当前代码为起点的 demo 分支,点击 Git GUI 菜单 Branch --> Create…,在弹出窗口中照下图操作即可。... # 合并指定分支到当前分支 $ git rebase # 衍合指定分支到当前分支 远程操作: $ git remote -v # 查看远程版本库信息
HEAD关键字指的是当前分支最末梢最新的一个提交,也就是版本库中该分支上的最新版本. ?...12.git stash把当前的改动压入一个栈: git stash将会把当前目录和index中的所有改动(但不包括未track的文件)压入一个栈,然后留给你一个clean的工作状态,即处于上一次最新提交处...(2)Git 分支管理 几乎所有版本控制系统都支持分支。使用分支可以从开发主线上分离开来,在不影响主线的同时继续工作。 1.创建分支: ?...② git merge 从远端仓库提取数据并尝试合并到当前分支 ?...git rebase不会产生合并的提交,它会将本地的所有提交临时保存为补丁(patch)放在”.git/rebase”目录中,然后将当前分支更新到最新的分支尖端、最后把保存的补丁应用到分支上。 ?
安装powerline的方式依然简单,也只需要一条命令: pip install powerline-status --user 安装PowerFonts 安装字体库需要首先将项目git clone至本地...,然后执行源码中的install.sh。...在此文件夹下执行git clone命令: # git clone git clone https://github.com/powerline/fonts.git --depth=1 # cd to folder...echo "⮀ ± ⭠ ➦ ✔ ✘ ⚡"测试用的字体 如果前一个命令失败(✘) 用户@主机名(如果用户不是DEFAULT_USER,则可以在您的个人资料中设置) 工作目录 Git状态 工作目录肮脏(橙色.../绿色) 分支(⭠)或分离头(➦) 当前分支/ SHA1处于分离头状态 远程分支名称(如果要跟踪远程分支) 在HEAD之前和在远程跟踪分支之后的提交次数(如果需要合并/重新设置,则远程跟踪段将为洋红色)
,命令如下: git branch 分支名 切换分支 当切换分支后,默认情况下HEAD会指向当前分支,即HEAD间接指向当前分支指向的节点 git checkout 分支名 同时也可以创建一个分支后立即切换...具体命令如下: git merge 分支名/节点哈希值 如果需要合并的分支完全领先于当前分支,如图3-1所示 ?...假设当前分支是master,执行了git cherry-pick C3(哈希值),C4(哈希值)命令后会直接将C3、C4节点抓过来放在后面,对应C3'和C4' 3.4 回退相关 分离HEAD 在默认情况下...HEAD是指向分支的,但也可以将HEAD从分支上取下来直接指向某个节点,此过程就是分离HEAD,具体命令如下: git checkout 节点哈希值 //也可以直接脱离分支指向当前节点 git checkout...,如下: //HEAD分离并指向前一个节点 git checkout 分支名/HEAD^ //HEAD分离并指向前N个节点 git checkout 分支名~N 将HEAD分离出来指向节点有什么用呢
no-fast-forward(--no-ff) 上面的场景很少遇到,基本是:在当前分支分离出子分支后,做了一些修改;而分离出的子分支也做了修改。...如图,dev 分支是从主分支上分离出去的(在 i8fe5 处),之后主分支与 dev 分支上都有相应的修改。...检出提交(git cherry-pick) 如果某个分支上的某次提交的修改正是当前分支需要的,那我们可以使用 cherry-pick 命令检出某次的提交更改作为新的提交添加到当前分支上面。...译注:这里的图画的是有问题的——当前主分支并没有新的提交,因此 git merge 的结果是直接将远程分支上的提交添加到当前分支之后,而不是如图所示的产生一个合并提交。...执行 git reflog 命令,我们看到合并之前的仓库状态位于 HEAD@{1} 这个地方,我们使用 git reset 指令将 HEAD 头指向 HEAD@{1}。 ?
领取专属 10元无门槛券
手把手带您无忧上云