git clone .. cd 到项目目录 git branch 查看当前的所有分支 git branch shanshan 创建一个属于自己的分支 git checkout shanshan 转到自己的分支...git add * git commit -m ‘init’ 提交代码 并填写提交信息 git push origin shanshan 推送到服务器上 在网页上进行合并 git pull origin
如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支。...(推荐) Git reset 原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,如下图所示,假设我们要回退到版本一: 适用场景: 如果想恢复到之前某个提交的版本...查看版本号: 使用命令“git log”查看: 也可以在github网站上查看: 在Idea上,点击项目右键git->Show Histroy ->选择需要回滚的版本,右键Copy Revision...在github图形化界面上看,远程库的HEAD也已经指向目标版本: 4.IDEA上Git Reset 选项说明 提交版本2的修改后,想回退到版本1,选择版本右键Reset Current Branch...已经add到index(暂存区)的文件不会回滚,任然保留 4.2 Mixed Mixed模式:在选择的回退点之后的所有更改将会保留但不会被git追踪下来。
四、重置本地的修改 场景:在本地提交了一些东西(还没有push),希望撤销前面的三次提交。...l 如果下网准确恢复项目的历史到某个时间点,用gitreset—hard l 如果希望重建工作目录里的一个或多个文件,让它们恢复到某个时间点的状态,用git checkout ...Ø 然后它reset当前check out的分支到那个共同祖先,在一个临时保存区存放所有之前的提交。...八、大量的撤销/恢复 场景:进行了很多次提交,但是发现只需要其中一部分,其他提交需要舍弃。 方法:git rebase–i 原理:-i 参数让rebase进入“交互模式”。...方法:git rm –cachedapplication.log 原理:虽然.gitignore会阻止git追踪文件的修改,甚至不关心文件是否存在,但这只是针对于那些以前从来没有追踪过得文件。
一个简单的git log命令,显示你最近的提交信息,以及上一次,再上一次的提交信息,以此类推。 而git reflog显示的是所有head移动的信息。...你进行了一些修改,而在下一次审核中,又会被要求进行另外的修改。你不知道还有多少次修改等着你,在你知道以前,你进行了多次额外的提交。理想的状态是,你可以使用rebase命令,把他们都合并成一次提交。...git rebase -i HEAD~[number_of_commits] 如果你希望合并最后两次提交,您需要以下命令 git rebase -i HEAD~2 使用该命令,你会进入一个交互式的界面,...你当前的工作还没有完成到进行提交的地步,而且你在这个阶段也没办法展示你的工作(如果不回退所有变化的话)。在这种情况下,git stash可以拯救你。...如果你在并行的开发某两个或多个分支,你可能会注意到有一个bug存在于所有的分支中。
记住:你用这种方法“撤销”的任何修改真的会完全消失。因为它们从来没有被提交过,所以之后 Git 也无法帮助我们恢复它们。你要确保自己了解你在这个操作里扔掉的东西是什么!...(也许可以先利用 git diff 确认一下) 重置“本地的”修改 场景: 你在本地提交了一些东西(还没有 push),但是所有这些东西都很糟糕,你希望撤销前面的三次提交 — 就像它们从来没有发生过一样...在撤销“本地修改”之后再恢复 场景: 你提交了几个 commit,然后用 git reset --hard 撤销了这些修改(见上一段),接着你又意识到:你希望还原这些修改!...它取决于你想做到的到底是什么: 如果你希望准确地恢复项目的历史到某个时间点,用 git reset --hard 如果你希望重建工作目录里的一个或多个文件,让它们恢复到某个时间点的状态,用...方法: git rm --cached application.log 原理: 虽然 .gitignore 会阻止 Git 追踪文件的修改,甚至不关注文件是否存在,但这只是针对那些以前从来没有追踪过的文件
git rebase 将当前分支的提交应用到目标分支上,将当前分支的提交添加到目标分支的顶部。...git rebase -i 启动交互式 rebase,可以修改提交历史。 git rebase --continue 在解决合并冲突后继续 rebase 过程。...git rebase --abort 中止当前的 rebase 过程,恢复到 rebase 开始之前的状态。 git rebase --skip 跳过当前的提交,继续 rebase 过程。...git rebase --onto 将 上从 到当前分支的提交应用到 上,创建一个新的分支...Git 的 rebase 操作是用于将一个分支的提交移动到另一个分支上的操作。它可以改变提交历史、合并代码以及整理分支结构。
git add -i # 进入交互界面模式,按需添加文件到缓存区 3、将暂存区文件提交到本地仓库 git commit -m "提交说明" # 将暂存区内容提交到本地仓库 git commit -a...(和grep同时使用要加一个--all--match参数) git log --grep=过滤信息 # 列出提交信息中包含过滤信息的提交记录 git log -S查询内容 # 和--grep类似,S和查询内容间没有空格...git log fileName # 查看某文件的修改记录,找背锅专用 7、代码回滚 git reset HEAD^ # 恢复成上次提交的版本 git reset HEAD^^ # 恢复成上上次提交的版本...,暂存区内容丢失,工作区不变; --hard:修改HEAD指针指向,暂存区内容丢失,工作区恢复以前状态; 8、同步远程仓库 git push -u origin master 9、删除版本库文件 git...23、同步远程仓库更新 git fetch origin master //从远程获取最新的到本地,首先从远程的origin的master主分支下载最新的版本到origin/master分支上,然后比较本地的
git add . # 将当前工作区的所有文件都加入暂存区 git add -i # 进入交互界面模式,按需添加文件到缓存区 3、将暂存区文件提交到本地仓库 git commit -m "提交说明" #...git log -S查询内容 # 和--grep类似,S和查询内容间没有空格 git log fileName # 查看某文件的修改记录,找背锅专用 7、代码回滚 git reset HEAD^ #...恢复成上次提交的版本 git reset HEAD^^ # 恢复成上上次提交的版本,就是多个^,以此类推或用~次数 git reflog git reset --hard 版本号 --soft:只是改变...HEAD指针指向,缓存区和工作区不变; --mixed:修改HEAD指针指向,暂存区内容丢失,工作区不变; --hard:修改HEAD指针指向,暂存区内容丢失,工作区恢复以前状态; 8、同步远程仓库 git...从远程获取最新的到本地,首先从远程的origin的master主分支下载最新的版本到origin/master分支上,然后比较本地的master分支和origin/master分支的差别,最后进行合并。
git rebase --abort 中止当前的 rebase 过程,恢复到 rebase 开始之前的状态。...git rebase --onto 将 上从 到当前分支的提交应用到 上,创建一个新的分支...Git 的 rebase 操作是用于将一个分支的提交移动到另一个分支上的操作。它可以改变提交历史、合并代码以及整理分支结构。...下面是对 Git rebase 操作的详细解释:基本语法:git rebase 是你想要将当前所在分支中的提交应用到其上的目标分支。...注意事项:Rebase 改写了 Git 的提交历史,请确保在操作之前备份重要数据,并且只对尚未推送到远程仓库的本地分支执行 rebase 操作。
恢复工作进度到工作区,此命令的 stash@{num} 是可选项,在多个工作进度中可以选择恢复,不带此项则默认恢复最近的一次进度相当于 git stash pop stash@{0} $ git stash...首先,它消除了 git merge 所需的不必要的合并提交;其次,正如你在上图中所看到的,rebase 会产生完美线性的项目历史记录,你可以在 feature 分支上没有任何分叉的情况下一直追寻到项目的初始提交...【2】场景重现 two:当你在功能分支上开发新 feature 时,多次提交了记录,这时,想要在在合并 feature 分支到 master 之前清理其杂乱的历史记录。...当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用 git cherry-pick 了。...git revert 之后你再 git push 既可以把线上的代码更新。git revert 是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在。 ?
从这里的输出可知,我们位于分支master上(见1)。你 每次查看项目的状态时,输出都将指出你位于分支master上。接下来的输出表明,我们将进行初 始提交。提交是项目在特定时间点的快照。...Git指出了项目中未被跟踪的文件(见2),因为我们还没有告诉它要跟踪哪些文件。接下来, 我们被告知没有将任何东西添加到当前提交中,但我们可能需要将未跟踪的文件加入到仓库中 (见3)。...标志-a让Git将仓 库中所有修改了的文件都加入到当前提交中(如果你在两次提交之间创建了新文件,可再次执行 命令git add .将这些新文件加入到仓库中)。...命令git checkout让你能够恢复到以前的任何提交。...就这个项目而言,恢复到前一个状态微不足道,但如果我们开发的是大型项目,其中数十个 文件都被修改了,那么恢复到前一个状态,将撤销自最后一次提交后对这些文件所做的所有修改。
Git、Gerrit、Repo使用 三者各自功能 gii,版本管理库,在git库中没有中心服务器的概念,真正的分布式。 repo,repo就是多个git库的管理工具。...没有的提交的,都返回到原来的状态 git branch 命令会列出所有分支,并在当前分支上标* git merge 合并指定分支到当前分支 eg: git merge dev 把dev分支合并到master...分支上 git log --graph可以看到分支合并图,如果git无法合并,必须先解决冲突才能提交。...新建分支 解决完,并提交后 git checkout dev 切回到以前工作分支 git stash list 查看隐藏工作区 git stash pop 恢复当前储藏的工作区 添加新功能最好新建feature...如果代码有冲突,需要手动处理再重新上传 从 gerrit 上面下载一个正在 review 的 change 有时候,需要将一个还没有merge 的 change 下载下来,这时,可以到一个 change
使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。...许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。...绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。...是版本号,是一个用SHA1计算出的序列 撤销修改 丢弃工作区的修改 $ git checkout -- 该命令是指将文件在工作区的修改全部撤销,这里有两种情况: 一种是file自修改后还没有被放到暂存区...已经提交了不合适的修改到版本库时,想要撤销本次提交,进行版本回退,前提是没有推送到远程库。
在本文中,我们将与您分享一些可以改善您的git体验和工作流程的技巧。 git log - 不合并 这个git命令显示整个提交历史记录,但是会跳过合并两个分支的提交或解决合并冲突。...如果你想恢复命名的提交,并避免自动提交,你可以使用标志 - 无提交或简写-n。 git diff -w Git diff 显示两个提交,两个工作树或磁盘上的两个文件之间的变化。...在这个提交之后所做的所有更改都将移至“提交阶段”。之后,你只需要运行git commit 添加到本地分支上。...-amend 随着git commit --amend你可以改变你以前的提交,而不是做一个新的。...git pull --rebase Git pull --rebase强制git先拉出更改,然后重新绑定最新版本的远程分支上的unpushed提交。
一、撤销提交 一种常见的场景是,提交代码以后,你突然意识到这个提交有问题,应该撤销掉,这时执行下面的命令就可以了。...$ git revert HEAD 上面命令的原理是,在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险。...二、丢弃提交 如果希望以前的提交在历史中彻底消失,而不是被抵消掉,可以使用git reset命令,丢弃掉某个提交之后的所有提交。...四、撤销工作区的文件修改 如果工作区的某个文件被改乱了,但还没有提交,可以用git checkout命令找回本次修改之前的文件。...$ git checkout -- [filename] 它的原理是先找暂存区,如果该文件有暂存的版本,则恢复该版本,否则恢复上一次提交的版本。 注意,工作区的文件变化一旦被撤销,就无法找回了。
会有这样的信息nothing to commit, working tree clean 提交到GitHub 以前不熟悉git命令的时候,我提交项目到github上都是直接在网页上直接拉取文件提交上去的...(最后一步)在你的远程仓库上刷新一下就可以看到你提交的文件了。 最后提到的是,在git commit -m ""之前,可以重复git add到暂存区。...你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。...git push -u origin other 推送other到origin远程仓库。 抓取分支 ? 产生上图的冲突时, git pull 把最新的提交从远程仓库中抓取下来,在本地合并,解决冲突。...如果想要打标签在以前的commit上,要git log找到历史提交的commit id.
在屏幕截图下,你会看到这个命令就像一个巨大的源: 04 审核源的历史 我们已经在以前的教程中了解过 git log 的运用了,但是这里仍然有你需要知道的三个选项。...后面,你意识到这个过程丢失了一些其他的信息并想返回去,或者至少可以再次看下。这就是 git reflog 作用。 一个简单的 git log 命令可以显示最新的提交,上一次的提交,上上次的提交等等。...在运行这条指令时,会带你来到一个交互的界面中,列出提交的信息,并要求你压缩哪一个。理想地,你会选择最新的提交并压缩上一次的。 要求你为新提交的准备提交信息。这个处理基本上会覆盖你的提交历史。...为了保存这些变化,你需要运行以下命令: 为了核对保存的列表,你需要执行下面的命令: 如果你想不保存和恢复未提交的变化,你可以应用下面的保存: 在最后一个截图中,你可以看到每次保存都有个标识符,一个唯一的数字...用最简单的术语来说,cherry-pick 是从不同的分支中选择单个提交和将它和当前分支的合并。如果你在两个或更多的分支中工作,你可能会注意到 bug 会出现所有的分支。
领取专属 10元无门槛券
手把手带您无忧上云