首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在 Git 中重置、恢复,返回到以前的状态

reset 命令(默认)是在链中向后移动分支的指针去“撤销”更改,revert 命令是在链中添加一个新的提交去“取消”更改。再次查看图 1 可以非常轻松地看到这种影响。...为什么要优先选择 revert 而不是 reset 操作?如果你已经将你的提交链推送到远程仓库(其它人可以已经拉取了你的代码并开始工作),一个 revert 操作是让他们去获得更改的非常友好的方式。...新提交被创建,有关的指针被移动到一个新的链,但是老的提交链仍然存在。 变基 现在我们来看一个分支变基。假设我们有两个分支:master 和 feature,提交链如下图 4 所示。...从本质上来说,Git 将一个分支中的每个不同提交尝试“重放”到另一个分支中。...C5 64f2047 C3 6a92e7a C4 259bf36 C2 f33ae68 C1 5043e79 C0 注意那个 C3' 和 C5'— 在 master 分支上已处于提交链的“顶部”,由于产生了更改而创建了新提交

4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何优雅的使用 git pull ?

    这两个命令都旨在将更改从一个分支合并到另一个分支,但二者的合并方式却有很大的不同。...当你在专用分支上开发新 feature 时,然后另一个团队成员在 master 分支提交了新的 commits,这会发生什么?...merge 是一个安全的方式,可以保留存 git repository 的整个历史记录,而 rebase 则是通过将 feature 分支移动到 master 顶端来创建线性历史记录。...其他开发人员的任何更改都需要合并 git merge 而不是 git rebase。 因此,在提交拉取请求之前,通常使用交互式 rebase 清理代码通常是个好的办法。...同时你应该会使用 git rebase 而不是 git merge 集成来自另一个分支的更改。 另一方面,如果你想保留项目的完整历史记录并避免重写公共提交的风险,你可以坚持下去git merge。

    1.5K30

    开发工具Tools·Git 从入门到精通1

    实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。...最好是创建和推(push)一个新的提交(commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源历史中产生冲突。...-b my-branch 我想把未暂存的内容移动到另一个已存在的分支 git stash git checkout my-branch git stash pop 我想丢弃本地未提交的变化(uncommitted...这会告诉你在一个分支里有而另一个分支没有的所有提交(commit), 和分支之间不共享的提交(commit)的列表。...你可能有一个仓库需要授权,这时你可以缓存用户名和密码,而不用每次推/拉(push/pull)的时候都输入,Credential helper 能帮你。

    1.2K30

    Git 从入门到精通,这篇包教包会!

    实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。...最好是创建和推(push)一个新的提交(commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源历史中产生冲突。...git checkout -b my-branch 我想把未暂存的内容移动到另一个已存在的分支 $ git stash $ git checkout my-branch $ git stash pop...这会告诉你在一个分支里有而另一个分支没有的所有提交(commit), 和分支之间不共享的提交(commit)的列表。...你可能有一个仓库需要授权,这时你可以缓存用户名和密码,而不用每次推/拉(push/pull)的时候都输入,Credential helper 能帮你。

    2.6K20

    git 入门教程之协同开发 原

    一般来说,本地仓库的分支推送到远程仓库指的就是推送到远程仓库同名的分支上,例如 git push origin master 意思是: 推将本地仓库的 master 分支推送到远程仓库的 master分支...按照之前约定的分支管理策略来说,master 分支用于生产环境部署,dev 分支用于收集开发成果,feature 分支用于开发具体功能分支,既然如此,那这些本地分支哪些需要同步推送到远程仓库就比较清晰了...远程仓库下载到本地分支 : git fetch 远程仓库的操作可以简单归纳为两部分: 上传和下载. 本地仓库推送到远程仓库是上传,而远程仓库拉取到本地仓库就是下载....现在模拟其他伙伴正在往 master 分支上推送更改,最好在另一个电脑另一个账户,当然模拟的话也可以是同一个电脑下其他目录,或者最简单的方式,直接登录 github 更改 master 分支上某个文件内容...你将本地仓库更改内容推送到远程仓库 # 推送到远程仓库 $ git push origin master Counting objects: 5, done.

    83120

    Git 帮助手册

    你可能有一个仓库需要授权,这时你可以缓存用户名和密码,而不用每次推 / 拉 (push/pull) 的时候都输入,Credential helper 能帮你。...最好是创建和推 (push) 一个新的提交 (commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源历史中产生冲突。...> # 发布标签 git push --tags # 未暂存 未暂存 (Unstaged) 的内容 # 把未暂存的内容移动到一个新分支 git checkout -b my-branch # 我想把未暂存的内容移动到另一个已存在的分支...这就是许多人使用 merge 工作流,而不是 rebasing 工作流的主要原因之一, 开发者的强推 (force push) 会使大的团队陷入麻烦。...-on-scroll 这会告诉你在一个分支里有而另一个分支没有的所有提交 (commit), 和分支之间不共享的提交 (commit) 的列表。

    4.3K30

    Git 工作流

    Git 分支被设计为故障安全的机制,用来在仓库之间整合代码和共享更改。 如何工作 中心化的工作将中央仓库作为项目中所有修改的唯一入口。默认的开发分支叫做 master,所有的更改都被提交到这个分支。...重点是:pull request 使得团队在评论其他人的工作时,变得非常简单。 如何工作 Feature 分支工作流同样使用中央仓库,master 同样代码官方的项目历史。...Git 在技术上无法区别 master 和功能分支,所以开发者可以在 feature 分支上编辑、缓存、提交,就和中心化工作流中一样。 此外,feature 分支可以被推送到中央仓库。...如何工作 GitFlow 工作流仍然使用中央仓库作为开发者沟通的中心。和其它工作流一样,开发者在本地工作,将分支推送到中央仓库。唯一的区别在于项目的分支结构。...且他们的分支都是基于 develop 而不是 master: git checkout -b some-feature develop 他们都使用“编辑、缓存、提交”的一般约定来向功能分支添加提交

    71310

    Git入门学习到进阶2

    [TOC] 0x00 三步骤四个区五状态 描述:下面所有讨论我们都假设只使用一个分支,也就是主分支master的情况,虽然这种作法并不符合git规范,但是现实情况中绝大部分用户是直接在master分支上进行工作的...) git diff master origin/master #master就是你的本地仓库,而origin/master就是你的远程仓库,master是主分支的意思,而后者代表了远程仓库主分支 ?...(1) 一开始的时候 master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支以及当前分支的提交点,每次提交,master分支都会向前移动一步,这样,...WeiyiGeek.创建分支 (3) 不过从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变: (4) 假如我们在dev上的工作完成了...#3.这时在master分支上把readme.txt文件的最后一行改为下面,即master与feature1分支都更改readme.txt文件 $ echo "Creating a new branch

    93210

    Git学习-04

    )从 feature 功能分支创建,用于预发布环境进行测试及产品验证,完成后要合并回 develop 和 master 分支4 修复分支(hotfix)从 master 分支创建,用于预发布 / 生产环境上的...分支(Branching):Git 支持快速创建和合并分支。分支是指向代码库中特定提交的可移动指针。合并(Merging):合并是将两个或多个开发历史合并在一起的过程。...拉取(Pull):从远程仓库拉取最新的代码并合并到本地。推送(Push):将本地的提交推送到远程仓库。拉取请求(Pull Requests):在分布式开发环境中,用于请求将你的更改合并到主分支。...子模块(Submodules):允许将一个 Git 仓库作为另一个 Git 仓库的子目录。工作流:Git 支持多种工作流,如集中式工作流、功能分支工作流等。...Git 的命令行工具非常强大,但同时也有图形用户界面(GUI)客户端,如 GitHub Desktop、SourceTree、GitKraken 等,使得非技术用户也能轻松使用 Git。

    8810

    Git入门学习到进阶2

    [TOC] 0x00 三步骤四个区五状态 描述:下面所有讨论我们都假设只使用一个分支,也就是主分支master的情况,虽然这种作法并不符合git规范,但是现实情况中绝大部分用户是直接在master分支上进行工作的...(1) 一开始的时候 master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支以及当前分支的提交点,每次提交,master分支都会向前移动一步,这样,...WeiyiGeek.创建分支 (3) 不过从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变: (4) 假如我们在dev上的工作完成了...#3.这时在master分支上把readme.txt文件的最后一行改为下面,即master与feature1分支都更改readme.txt文件 $ echo "Creating a new branch...现在,master分支和feature1分支变成了下图所示: WeiyiGeek.主从分支更改同一文件合并冲突解决 用带参数的git log也可以看到分支的合并情况: $ git log --graph

    1.1K20

    【GIT版本控制】--分支管理

    git commit -m "Merge feature-branch into master" 这将创建一个新的提交,将特性分支的更改合并到主分支中。...推送更改(如果需要):如果你的GIT仓库与远程仓库连接,并且你想将合并后的更改推送到远程仓库,执行 git push 命令: git push 这将更新远程仓库中的主分支。...分支的更改, ======= 分隔了两个分支的更改,而 >>>>>>> branch-name 标记了要合并的其他分支的更改。...根据你的工作流程,可能需要将更改推送到远程仓库以与团队共享。 现在,你已经成功解决了冲突并完成了分支合并。...这使你能够在新分支上进行独立的工作。 分支的创建和切换后,你可以在新分支上进行更改,而不会影响主分支或其他分支。一旦完成工作,你可以使用git merge将新分支的更改合并回主分支或目标分支。

    28820

    Git 进阶使用1

    Git rebase 我们要知道的第一件事是,git rebase 和git merge 做的事其实是一样的;它们都被设计来将一个分支的更改并入另一个分支,只不过方式有些不同 想象一下,你刚创建了一个专门的分支开发新功能...,然后团队中另一个成员在 master 分支上添加了新的提交。...Merge 将 master 分支合并到 feature 分支最简单的办法就是用下面这些命令: git checkout feature git merge master 或者,你也可以把它们压缩在一行里...git merge master feature 最终创建出这样的 workflow: Rebase 作为 merge 的替代选择,你可以像下面这样将 feature 分支并入 master 分支...: git checkout feature git rebase master 它会把整个 feature 分支移动到 master 分支的后面,有效地把所有 master 分支上新的提交并入过来。

    75041

    同事偷偷改了git目录让我跑不起项目

    /components/common', true, /\.vue$/) 准备工作 模拟多用户 user1 分支:feature/user1 user2 分支:feature/user2 此时分别有两个用户...09_git大小写不敏感引发的问题 merge master 到 feature/user2 分支 git merge master ? 10_git大小写不敏感引发的问题 ?...11_git大小写不敏感引发的问题 推送 push git push # 推送到远端master [user2]更新变更 user2 的分支:feature/user2 1....更改文件名、切换分支、merge master 先更改文件名 common => COMMON 再切换分支: git checkout feature/user2 COMMON文件夹变成空的了 ?...), 都开启了敏感模式 这种情况 user2 在同步更新 master 分支代码的时候会遇到 error,根据提示删除或移动文件位置即可!

    1.1K30

    Git 分支管理与多人协作实战指南

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习 C++的时候,另一个你正在另一个平行宇宙里努力学习 JAVA。 如果两个平行宇宙互不干扰,那对现在的你也没啥影响。...再来理解一下HEAD,HEAD 严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD 指向的就是当前分支。...每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长,而HEAD只要一直指向master分支即可指向当前分支。...因为我们是在dev分支上提交的,而master分支此刻的提交点并没有变,此时的状态如图如下所示。 当切换到 master 分支之时,HEAD 就指向了 master,当然看不到提交了!...如果当前分支有数据没有提交的话,是切换不了分支的。 你的工作区有未提交的更改。

    12110

    Git分支合并选择

    下面将深入两者的用法以及对两者的适用场景作个总结。 前置知识点 Master分支:首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。...场景 现在在develop开发分支上,然后你创建了一个feature分支开发新功能,现在团队中另一个成员在develop分支上添加了新的提交。如下图所示 ?...但是这同样意味着每次合并上游更改时feature分支都会引入一个外来的合并提交。如果master非常活跃的话,这或多或少会污染你的分支历史。...作为merge的替代选择,你可以像下面这样将feature分支并入master分支: git checkout feature git rebase develop 它会把整个feature分支移动到develop...总结 如果你想要一个干净的、线性的提交历史,没有不必要的合并提交,你应该使用git rebase 而不是git merge 来并入其他分支上的更改。

    1.1K50

    Merging vs. Rebasing

    另一方面,这也意味着每次合并会在目标分支上产生一个多余无用的merge commit。如果master 需要经常更改,那就会很大程度的污染目标分支的提交历史。...交互式rebase提供了对已移动到新分支的commit进行更改的机会。因为可以完全控制分支的提交历史,所以比自动rebase更加强大。...merge可以保护整个仓库的提交历史,因而很安全;而rebase则是通过移动分支到master开头端来创建一个线性的历史。...可以采用从master整合逆向改变的相同方法来处理这个分岔:要么将本地更改和远端的更改merge,要么把本地更改rebase到远端分支的开头端。 ? ?...这并未违反“rebase黄金法则”,因为只有本地分支的新提交被移动了,而之前发生的任何事情都为被改变。这相当于说:“把我的改变添加到已经完成那部分的后面去”,通常,这比merge后的并行更直观。

    50620
    领券