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

标签应用和版本管理

当一个代码仓库进过长时间的迭代,针对不同的时期和需求,必定会有不同的版本。而借助 Git 提供的标签功能,可以快捷方便地记录代码版本。...无论什么时候,想取回某个版本,不再需要查找冗长的commit_id,只需要取出打标签的历史版本即可。 可以这么理解:标签是版本库的一个快照。...如你所见,这是一个全新仓库:>>> Star now 执行git clone git@github.com:dongyuanxin/git-demos.git, 将代码库 clone 到本地后。...标签的远程推送和拉取 在本地打好标签后,需要将标签推送到 Git 平台(比如 GitHub)上,才能留下版本快照,供别人下载使用。 除此之外,还有可能删除已经发布的标签(比如标签命名不合规范)。...这就是为什么很多放弃维护的大型开源项目只有master分支的原因。

82630

Git+Gerrit如何永久删除历史文件(大文件私密文件)

开始时以为是Git网络出问题了,检查了其它仓库却都可以正常的推送和拉取,后面发现经过很长时间后,这个仓库竟然拉下来了,但是拉取的文件大小竟然有700M多,整个.git文件也随即增大到1G多。...Git这么强大,肯定是存在可以永久删除历史记录的命令,找了一圈,发现确实有“后悔药”命令,那就是git filter-branch,通过以下命令,就可以永久删除你想要删除的任何文件: git filter-branch...删除命令 如果所有分支都是unchanged说明要么是该分支没有要删除的文件,要么是删除文件的路径不对。 执行以后命令以后,你会发现本地目录中的.git文件并不会马上就变小,而是与原来是一样的!...别急,接下来就告诉你为什么。 2)原来Git仓库历史有个缓存期,如果不主动回收、清理仓库历史,一般的这些记录还会保存一段时间,以备你突然后悔了,没办法找回删掉的文件。那么怎么样才能主动回收资源能?...-aggressive --prune=now 执行以上命令,就会发现.git目录变小了。

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

白瞎了你的 MackBook,这俩工具赶紧安排!

程序员玩Mac,不可能不接触到黑漆漆的命令行。为了消除对命令行的恐惧,苹果贴心的把默认的命令行窗口搞成了白色的,但字又极小,需要瞪大自己的狗眼才能够看清楚,长时间如此定会喜获眼疾。...Terminal是系统默认的,而iTerm需要我们手动安装。...http://www.iterm2.com/ 当我在浏览器上输入这个网址,我貌似发现了为什么很多人下载不下来美丽的iTerm,我们伟大的长城防火墙,又立了一个大功。 姑且认为这个过程非常的顺畅吧。...命令行提示符里面的信息够多,甚至有git的信息,辅助你快速操作。 Oh My Zsh 但是,要达到这样的效果,还需要另外一个工具的配合才行。那就是oh-my-zsh。...反过来再说插件,其中,autojump、git、z、tmux、gitignore、vi-mode是常用的,非常神奇。

27120

Ubuntu的一些高(sao)效(cao)率(zuo)工具

~$ sudo apt-get install tmux 就这么一行命令就安装好了,然后在终端输入tmux就可以用啦!...bash也有一些方便的操作,比如tab键可以补全输入命令或者文件,↑/↓键可以找到往前或者往后输入的命令。 但多多少少还是不够方便,比如历史命令比较多,得不停地往前翻才能找到。...当然如果习惯cd操作这个倒也无可厚非,比如我下面的cd build && make -j4命令,现在都已经形成肌肉记忆了,要改的话还需要时间。 关键是,输入指令不用这么准确也能补全了!...如此这般就能很快定位到自己想要的历史命令啦0.0 但有些命令比较久远了,这么上下翻一次只能看一条还是嫌不够方便怎么办?还有一个小工具可以帮上忙!...不知道为什么,我在实验室长时间使用鼠标的话右肩颈会酸痛,而上面4个工具居然成功解决了这个问题0.0 习惯了键盘操作之后,现在每次切换到Windows系统都会很不习惯,相信你用上一段时间也会有这种感觉!

8910

【Linux】Ubuntu的一些高效率工具

~$ sudo apt-get install tmux 就这么一行命令就安装好了,然后在终端输入tmux就可以用啦!...bash也有一些方便的操作,比如tab键可以补全输入命令或者文件,↑/↓键可以找到往前或者往后输入的命令。 但多多少少还是不够方便,比如历史命令比较多,得不停地往前翻才能找到。...当然如果习惯cd操作这个倒也无可厚非,比如我下面的cd build && make -j4命令,现在都已经形成肌肉记忆了,要改的话还需要时间。 关键是,输入指令不用这么准确也能补全了!...就连命令的参数也是可以补全的,上图的git commit -就是对命令参数的补全选择。是不是已经忍不住要安装zsh了,心动不如行动! 你又发现了,为什么你的界面和我的还是不一样?...不知道为什么,我在实验室长时间使用鼠标的话右肩颈会酸痛,而上面4个工具居然成功解决了这个问题0.0 习惯了键盘操作之后,现在每次切换到Windows系统都会很不习惯,相信你用上一段时间也会有这种感觉!

4K50

【译】求你不要再写没用的提交信息了

所以你打开了终端,输入了下面这些命令,完成了一次远端分支的更新。...问题不大,你很轻松的就解决掉了这个 bug,现在你需要把新的代码再次提交到远程分支,于是你很熟练的使用起 Git 命令。...由于软件开发是一个协作的过程中,所以人们总是会使用 git blame 操作来查看是谁对代码做了修改,并且会问你一些关于代码的问题。但是距离你写这段代码已经过去很长时间了,你的印象也比较模糊。...当你查看你的提交时,你发现自己很难说出当时为什么这么写,以及其中的一些逻辑细节。 你给同事发送了一个悲伤的表情,并且告诉他们,你没有办法给他们提供更多的信息。...书写优秀的提交信息 希望通过上面的故事,你已经知道了为什么要编写良好的、信息丰富的 Git 提交信息: 在软件工程这样需要协作的领域中,它可以帮助我们快速理解上下文。

42020

Git 高级合并工具 Merge 和 Rebase 简单介绍(一)

如果我们长时间都是通过GUI界面进行操作的话,那么这两者之间的关系并不太容易把握。...但是其实它执行也是执行了相关的命令,示例如下图: 2. 高级合并 这两个操作,其实主要就是为了解决代码同步合并的问题。不管多复杂,它们两个核心述求就是为了针对不同的分支合并需求而创建的。...相较于Merge的分支合并,Rebase会改变提交的历史,这也是为什么它是会在更新基础上重置当前分支。 3. 后记 本篇只是简单介绍一下Merge和Rebase。...介绍的比较短,我们很多时候其实并不太需要了解这两种的区别,但是如果由你来负责一个项目的代码维护,review其他同事提交的代码时。那么这两种提交逻辑就必须要弄明白。...(ps:之后通过实际场景进行介绍,才能让大家更明白merge和rebase的区别。

83110

为什么 husky 放弃了传统的 JS 配置

在当时 husky 有过这样的设想:有没有可能让husky只添加我们需要git hook呢?作者尝试过解决这个问题,但是失败了。...因为husky需要在两个地方进行配置才能完成一个完整的git hook功能。...一个是在package.json中配置git hook所要执行的真正命令,一个是在.git/hooks/中配置相对应的git hook。...的目录指定为.husky/ 使用husky add命令向.husky/中添加hook 通过这种方式我们就可以只添加我们需要git hook,而且所有的脚本都保存在了一个地方(.husky/目录下)因此也就不存在同步文件的问题了...ok,了解了这么多,我想你也大概理解作者为什么要做这种破坏性更新的原因了吧。那么我们接着上面的按照新版husky的配置规则对我们的项目进行配置。

2.1K30

10分钟带你入门git到github

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?...的,当我们执行git add - demo.txt后 ? 那如果这个目录下面有几百个文件都要加到暂存区怎么办?此时可以使用git add . 这个命令可以把当前目录下所有文件加入暂存区。...已使用 git commit 未push git reset --hard HEAD^ 回退到上一次commit的状态(这个命令需谨慎执行)。...> 实际项目中如果我们需要开发一个功能完整的流程是什么样的呢?...切换到主干分支执行git merge 功能分支。(这一步实际工作中一般人是不能这么操作的),代码必须要先发起一个merge request 经过代码review才能进行合并到主干分支的。

36710

你必须要知道的git rebase

为什么这么乱啊? 大多数的软件公司,不太会在意commit信息是否混乱(命名不规范、分叉),当然,并不是所有公司都像Google一样,对于commit的命名都辣么严格。...image 使用git rebase -i 修改历史提交的过程主要包含三步: 列出一个提交记录的范围,并指出你在这个范围内需要怼那些记录进行什么样的修改 执行上述修改,如果遇到冲突需要解决 完成rebase...image 执行完上述命令后,会以vim的方式打开一个文件(我设置成了vs code,习惯了图形化操作,不习惯vim编辑) 文件中显示了最近6次的提交信息,从上到下,由远到近。...在说为什么不能对线上提交执行交互式变基之前,先说一下如果要对线上功能执行这个操作要怎么做 首先,你需要在自己本地变基成功,然后使用git push -f强行push并覆盖远程对应分支,之所以需要执行覆盖式...总的原则是,只对尚未推送或分享给别人的本地修改执行变基操作清理历史,从不对已推送至别处的提交执行变基操作,这样,你才能享受到两种方式(rebase和merge)带来的便利。

1.4K20

一套初创公司的基础自动化部署搭建流程

,首次启动时间有点长 docker-compose exec --user=laradock workspace bash 像laravel等项目肯定少不了composer,执行这个命令进入工作区,就可以执行...composer了 docker-compose exec nginx nginx -s reload 肯定有人会问我更改了nginx配置是不是每次都要进入nginx容器去重启,或者把整个容器都重启了呀,不用的,执行这个命令就可以重启...使用git源码工具,输入git地址、添加git用户 ?..../* 这里为什么要把项目打包呢,因为下面要配置的ssh不支持文件夹传输,所以需要先将内容进行打包然后去服务器进行解包 ? 全部保存好就可以去构建了。...耶~ 结语 长时间没写文章了,这个篇幅较长,谢谢耐心观看,希望对您有所帮助,也希望大家提供下不同的意见,找到更有效的方式来完成,谢谢!

1.3K30

10分钟带你入门git到github

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?...的,当我们执行git add - demo.txt后 那如果这个目录下面有几百个文件都要加到暂存区怎么办? 此时可以使用git add . 这个命令可以把当前目录下所有文件加入暂存区。...已使用 git commit 未push git reset --hard HEAD^ 回退到上一次commit的状态(这个命令需谨慎执行)。...实际项目中如果我们需要开发一个功能完整的流程是什么样的呢?...切换到主干分支执行git merge 功能分支。(这一步实际工作中一般人是不能这么操作的),代码必须要先发起一个merge request 经过代码review才能进行合并到主干分支的。

99200

【消失的代码】Git 合并分支导致代码消失

比如说,团队在代码上线前,是有 CR 流程的,为什么这个代码消失的 commit 会逃过这么多高工的法眼?...--stat 生成差异统计 git log 默认情况下不会生成文件差异: 加了 --stat 参数,即可生成文件差异的统计,执行以下命令git log --stat -- A/index.js...执行以下命令git log --full-history -- A/index.js 对比 2.2.1,可以看到加了 --full-history 参数的输出结果没有进行简化,所有处理过该代码的...执行以下命令git log --full-history --simplify-merges -- A/index.js 对比 2.2.3 中的输出结果,可以看到已经没有 Merge branch...预防措施 目前发现代码被删除是被动的,也就是需要去找这些代码时,才能发现代码不见了,这也是代码被删了 8 个月才被发现的原因之一。

3.5K21

GIT命令操作全攻略,请收下我的膝盖!

为什么不用它们来托管Linux操作系统代码? 因为 Linus 本人坚定地反对 CVS 和 SVN,原因是这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。...既然git这么受欢迎,下面我们就开始git的学习之旅吧!...git branch develop 当执行这个命令之后,GIT的develop分支指针会指向到当前分支当前位置! 怎么切换到分支呢?我们可以通过git checkout命令,实现分支的切换!...#查看当前分支 git branch 如果分支切换失败,可以通过git status命令查询一下为什么会失败,分支切换失败多半是当前工作区的代码没有提交到版本库里面导致,可以检测一下是不是代码都提交到本地版本库...然后打开冲突的文件,进行修改,修改完毕之后,执行如下命令进行提交!

60940

时间去哪儿了? – Rust编译速度问题研究

编译时间的禅意 Oxide首席技术官Bryan Cantrill对长时间的编译并不陌生。 他回忆起在Sun Microsystems的某个时候,编译一个操作系统内核需要超过24小时才能完成。...“最令人沮丧的一件事情之一是,当你作为程序员真的觉得Rust正在做一些它不需要做的工作时,” Cantrill说道。 因此,公司让工程师们努力找出为什么Rust应用程序需要这么长时间的问题。...如果没有工具揭示它们最初构建时为什么需要这么长时间,构建时间就无法缩短。...执行cargo build命令,生成的构建时间可能会达到48秒、三分钟或更长时间。但在打破他们的流程之前,程序员只会等待一段时间,Cantrill观察到。...那么,为什么你的 Rust 编译时间这么慢呢?Magic 8球说:稍后再来检查。 完整的讨论可以在这里阅读。

9810

我是如何做到的:不切换 Git 分支,同时在多个分支上工作的?

checkout git history/log 是重复的,当项目历史非常长,.git 文件夹下的内容是非常占用磁盘空间的 同一个项目,多个 repo,不易管理 那如何做才能满足这些特殊场景,又不出现这些上述这些问题呢...,就像 git checkout -b 一样 执行命令git worktree add -b "hotfix/JIRA234-fix-naming" .....repo 都建立了哪些 worktree git worktree list 所有的worktree 都在共用一个 repo,所以在任意一个 worktree 目录下,都可以执行如下命令来查看 worktree...列表 git worktree list 执行命令后,可以查看到我们上面创建的所有 worktree 信息, main worktree 也会显示在此处 /Users/rgyb/Documents/...为什么 反复创建和删除worktree, repo/.git/wortree 目录的变化你能理解吗? 留言区说出你的答案,看看你对Git掌握的程度吧~

1.3K20
领券