想象这样的场景,有客户给你发机密文件。那你怎么确定你收到的文件就是客户发你的,而没有被第三方恶意篡改过呢? 摘要算法可以解决这个问题。 通过摘要算法,可以将文件生成一个摘要的字符串。...内容不一样的文件,生成相同的摘要字符串的概率极低。因此,比较两个文件是否一样只需比较摘要字符串是否一样即可。上面的问题,我们可以这么解决 客户用摘要算法生成机密文件的摘要字符串。...客户将机密文件发给你。 客户用另一种渠道将摘要字符串发你。 你将收到的文件用和客户一样的摘要算法生成摘要字符串。 对比客户发你的摘要字符串和你生成摘要字符串。如果相等,则文件没有被篡改。...常见的摘要算法有 CRC8,MD5,SHA1,SHA512 等。 常见应用场景 1 验证软件是否被篡改 大多数大型软件公司或开源组织用摘要算法来校验下载的软件是否被篡改。...这些软件的下载页面,会有下载软件的 MD5 或类似的摘要值。 2 对敏感加密 一般从网页向服务器端,发送的用户密码会用 MD5 加密。服务器的数据库里也会存加密后的密码。
git 不再追踪文件改动 git update-index --assume-unchanged filePath git 恢复追踪文件改动 git update-index —no-assume-unchanged...filePath git 删除被管理的文件 #不会删除本地文件 git rm —-cached filePath git 删除被管理的文件夹 git rm -r -f —-cached filePath
Git 是一个很好的版本控制工具,当然驾驭起来相比 SVN 要稍微复杂一些。初入 Git,难免有一些问题。比如我们不小心将某个文件加入了版本控制,但是突然又不想继续跟踪控制这个文件了,怎么办呢?...其实方法也是很简单的。使用git update-index即可。...不想继续追踪某个文件 1 git update-index --assume-unchanged your_file_path 如果想再次继续跟踪某个文件 1 git update-index --no-assume-unchanged
我们经常会在配置文件里留下一些敏感信息 比如数据库链接字符串的用户名和密码 如果不提交配置文件到github或者其他源码管理网站 那么你的粉丝很可能就无法正确运行你的项目,就达不到开源的目的了 那么,怎么让...git在提交一次配置文件之后就不再跟踪配置文件的变化了呢 (一般第一次提交的配置文件是脱敏的) 只要这样做: git update-index --skip-worktree [文件绝对路径] 即可
git update-index --assume-unchanged 的真正用法是这样的: 你正在修改一个巨大的文件,你先对其 git update-index --assume-unchanged,...这样 Git 暂时不会理睬你对文件做的修改; 当你的工作告一段落决定可以提交的时候,重置改标识:git update-index --no-assume-unchanged,于是 Git 只需要做一次更新...,这是完全可以接受的了; 提交+推送。
git 不再追踪文件改动 git update-index –assume-unchanged filePath git 恢复追踪文件改动 git update-index —no-assume-unchanged...filePath git 删除被管理的文件 git rm —cached filePath git 删除被管理的文件夹 git rm -r -f —cached filePath Git 是一个很好的版本控制工具...初入 Git,难免有一些问题。比如我们不小心将某个文件加入了版本控制,但是突然又不想继续跟踪控制这个文件了,怎么办呢? 其实方法也是很简单的。使用git update-index 即可。...不想继续追踪某个文件 git update-index --assume-unchanged your_file_path 如果想再次继续跟踪某个文件 git update-index --no-assume-unchanged
有时候我们需要在项目之外创建一些临时文件或一些实验性代码,创建在项目中可能一不小心 Git 误提交,不创建项目里又需要切换到其他应用上来回拷贝,对于专注 coding 的我们来说,总显得不够流畅 IDEA...创建好的这个文件并不存储在我们的项目目录中(避免了意外 git push 的尴尬),甚至在 IDEA 中切换到其他项目中也可以看到你刚刚创建的这个文件,进一步说白一点,这是凌驾在项目之上的一个全局功能,...在这里和你正常在项目中写 java 代码没什么区别,你可以使用 git status 命令来验证,结果是 Git 完全不 track 的,放心的创建临时文件就好了 其实我很常用的是创建一个 scratch.sql...files 和 Scratch buffers 不会被 Git 跟踪,但是同样可以通过鼠标右键查看 Local History 来查看过往所有改动 ?...总结 这是一个很小的功能,但是在日常开发中真的可以带来很大的帮助: 跨越项目的访问 不被 Git 所跟踪,防止误提交 可以临时测试各种语言的代码 可查看改动历史 最后配合预览模式的使用,减少应用之间的切换
缺点:一旦删除分支或者分支指针往前走,会丢掉分支信息(原来这个分支的做了什么在log中体现不出来) 触发时机:合并 bugfix分支到master分支时,如果master分支的状态没有被更改过,这样的合并被称为...,这个部分这篇文章小姐姐用动画图解Git讲的相对好一些 4.1 软重置 最大的特点:撤回到特定提交之后,已有的修改会保留 以下图为例:9e78i 提交添加了 style.css 文件,035cc 提交添加了...使用软重置,我们可以撤销提交记录,但是保留新建的 style.css 和 index.js 文件。 ?...4.2 硬重置 最大的特点:无需保留提交已有的修改,直接将当前分支的状态恢复到某个特定提交下,,硬重置还会将当前工作目录(working directory)中的文件、已暂存文件(staged files...包括合并、重置、还原:基本上记录了对分支的任何更 使用场景:假设你不小心使用 git reset 命令硬重置仓库到某个提交。后面突然想到,重置导致了一些已有的正常代码的误删 ?
,所以你可以放心的修Bug,等到修完Bug,提交到服务器上后,再使用git stash apply将以前一半的工作应用回来。...解决这个问题的办法就是git stash命令。储藏(stash)可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。...如果尝试应用的变更是针对一个你那之后修改过的文件,你会碰到一个归并冲突并且必须去化解它。...暂存未跟踪或忽略的文件 默认情况下,git stash会缓存下列文件: 添加到暂存区的修改(staged changes) Git跟踪的但并未添加到暂存区的修改(unstaged changes) 但不会缓存一下文件...: 在工作目录中新的文件(untracked files) 被忽略的文件(ignored files) git stash命令提供了参数用于缓存上面两种类型的文件。
无论学习什么技术,都需要了解该技术的本质。若是靠死记硬背该技术提供的方法或者语法,终归是知其然而不知其所以然,当发现错误时,你根本不知道是什么原因导致的。...然而,这并不足以说明一个文件在不同的工作区域所展现的状态。我认为两种状态足以表达Git中的文件,即:未跟踪(Untracked)和已跟踪(Tracked)。...后来发现其中一个文件并不需要在Git中管理,希望能够取消暂存。由于此时的文件处于Staged状态,我们只需要删掉Stage中对此文件的跟踪即可。...这时需要执行的命令是: git rm --cached README.txt 注意:此时取消暂存的文件从来就不曾提交过,也即是说没有在Git Repository留下过它的身影。...由于Git的提交记录是由HEAD指针指向当前分支。重置就是搬动这个指针到指定的snapshot。如果说revert是一种安全的撤销方式,则reset就是一种危险的撤销方式。
] [commit] # 创建一个新分支,并与指定的远程分支建立跟踪关系 git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区...git checkout [branch-name] # 切换到上一个分支 git checkout - # 将本地分支与指定的远程分支建立跟踪关心 git branch --set-upstream...已提交数目多少排名 git shortlog -sn # 显示指定文件何时被何人修改过 git blame [file] # 显示暂存区和工作区文件差别 git diff # 显示暂存区和上一次提交的差别...# 重置暂存区中的指定文件,与先前的提交保持一致,但保持工作空间的变动不变 git reset [file] # 重置暂存区和工作区中的指定文件,并与最近一次提交保持一致,工作空间文件变动不会保留...git reset --hard # 重置暂存区,指向指定的某次提交,工作区的内容不会被覆盖 git reset [commit] # 重置暂存区和工作区中的指定文件,并与指定的某次提交保持一致,
希望在团队中处理代码时有效协作并跟踪更改的程序员来说,版本控制至关重要。Git 是一个版本控制系统,允许您跟踪修订、识别文件版本并在必要时恢复旧版本。...使用该命令的示例如下 $ git diff 9.git 状态 ' git status '命令可以帮助显示索引中文件和工作目录中文件的状态。该命令将轻松列出未跟踪、修改和暂存的文件。...$ git log 14. git 重置 使用 git reset 来“取消跟踪”一个文件,不再有任何指向 Git 存储库的链接。...checkout -b 20. git 存储 该命令用于将所有修改过的文件暂时存放在工作目录中。...用法:暂时保存所有修改过的跟踪文件: $ git stash 用法:列出所有的藏品: $ git stash list 用法:删除最新的存储: $ git stash drop 概括 我们已经到了这篇文章的结尾
小结 任何对象都是在工作区诞生和被修改; 任何修改都是从进入index区才开始被版本控制; 只有把修改提交到本地仓库,该修改才能在仓库留下足迹; 与协作者分享本地的更改,需要将更改push到远程仓库 常用的...添加已经被add的文件且存在更改的文件(Git根路径以下所有文件)到暂存区 (提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)) $ git add -u 添加所有变化...--oneline 显示所有提交过的用户,按提交次数排序 $ git shortlog -sn 显示指定文件是什么人在什么时间修改过 $ git blame [file] 显示暂存区和工作区的代码差异...重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset [file] 重置暂存区和工作区,与上次commit保持一致 $ git reset --hard 重置当前分支的指针为指定...总结 路漫漫其修远兮,希望Git及GitHub可以帮我们记录每一个脚印,每一步成长。与诸君共勉。 祝大家2019更上一层楼!
不会重置引用,更不会改变工作区,而是用指定提交状态()下的文件()替换掉暂存区中的文件。...revert revert 命令十分直观易用,相当于做一次被 revert 的提交的「反操作」并形成一个新的 commit。...因此重置一般用于重置暂存区(除非使用--hard参数,否则不重置工作区),而检出命令主要是覆盖工作区(如果不省略,也会替换暂存区中相应的文件)。 方式二:不使用路径的用法 会改变HEAD头指针。...之所以后面的参数写作,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态。在“分离头指针”状态下的提交不能被引用关联到而可能会丢失。...,如果接下来你还要拉取并整合他们修改过的提交,事情就会变得一团糟。
不会重置引用,更不会改变工作区,而是用指定提交状态()下的文件()替换掉暂存区中的文件。...revert revert 命令十分直观易用,相当于做一次被 revert 的提交的「反操作」并形成一个新的 commit。...因此重置一般用于重置暂存区(除非使用--hard参数,否则不重置工作区),而检出命令主要是覆盖工作区(如果不省略,也会替换暂存区中相应的文件)。...在“分离头指针”状态下的提交不能被引用关联到而可能会丢失。...,如果接下来你还要拉取并整合他们修改过的提交,事情就会变得一团糟。
我意外的做了一次硬重置(hard reset),我想找回我的内容 如果你意外的做了 git reset --hard, 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天...no-ff 会为特性分支(feature branch)的存在过留下证据, 保持项目历史一致(更多Git资料,参见IDEA 中如何完成 Git 版本回退?)。...跟踪文件(Tracking Files) 我只想改变一个文件名字的大小写,而不修改内容 (main)$ git mv --force myfile MyFile 我想从Git删除一个文件,但保留该文件...基本上, 每次HEAD的改变, 一条新的记录就会增加到reflog。遗憾的是,这只对本地分支起作用,且它只跟踪动作 (例如,不会跟踪一个没有被记录的文件的任何改变)。...那里,还有一个硬重置(hard reset)到一个较旧的提交。最新的动作出现在最上面以 HEAD@{0}标识.
我意外的做了一次硬重置(hard reset),我想找回我的内容 如果你意外的做了 git reset --hard, 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天...no-ff 会为特性分支(feature branch)的存在过留下证据, 保持项目历史一致。...跟踪文件(Tracking Files) 我只想改变一个文件名字的大小写,而不修改内容 (main)$ git mv --force myfile MyFile 我想从Git删除一个文件,但保留该文件...基本上, 每次HEAD的改变, 一条新的记录就会增加到reflog。遗憾的是,这只对本地分支起作用,且它只跟踪动作 (例如,不会跟踪一个没有被记录的文件的任何改变)。...那里,还有一个硬重置(hard reset)到一个较旧的提交。最新的动作出现在最上面以 HEAD@{0}标识.
我意外的做了一次硬重置(hard reset),我想找回我的内容 如果你意外的做了 git reset --hard, 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天...# or (main) $ git checkout -f 重置某个特殊的文件, 你可以用文件名做为参数: $ git reset filename 我想丢弃某些未暂存的内容 如果你想丢弃工作拷贝中的一部分内容...跟踪文件(Tracking Files) -------------------- 我只想改变一个文件名字的大小写,而不修改内容 (main)$ git mv --force myfile MyFile...基本上, 每次HEAD的改变, 一条新的记录就会增加到reflog。遗憾的是,这只对本地分支起作用,且它只跟踪动作 (例如,不会跟踪一个没有被记录的文件的任何改变)。...那里,还有一个硬重置(hard reset)到一个较旧的提交。最新的动作出现在最上面以 HEAD@{0}标识.
领取专属 10元无门槛券
手把手带您无忧上云