有识

个人网 | 追寻一切真知灼见

用户工具

站点工具


侧边栏

博主公告

想读书,想旅游,想运动,但是没有时间?其实我们不是没有时间,只是没有真正把想做的事情,放在重要的位置上,或者干脆没时间搞清楚到底那件事情对你来说更重要。^_^ 欢迎大家收看《程序员带你学打羽毛球》 和博主一起加入运动的行列。 ease 11:53 - 08月02日




最新博文》更多博文

分类索引

博主简介
吕某某 Leo
河北人,网名:ease
资深IT菜鸟,创业者
兴趣爱好:
人工智能,运动,读书,coding
人生格言:
命由己造 相由心生 有容乃大 无欲则刚 》博主管理》关于博主


blog:ease:index

这是本文档旧的修订版!


2024年五月有0篇文章

02:17 - 11月14日

XNTA5NDkxODg0

08:35 - 09月23日

git 工具 储藏与清理

储藏

git stash
暂时保存 非提交。也不是git add.

  • git stash 会保存 工作目录的当前状态。
  • 更新HEAD到最近提交。
  • 工作目录变为“干净状态”(也就是同步于最近提交)
  • 因此我们可以进行分支切换(干净的变换工作目录)

(否则就必须要提交未完成的“脏内容”,额外增加一个无意义的提交) 比如你正在开发你的代码,代码尚处于错误或者未完成状态。这时同事想让你看一下他的代码。

git stash list 查看 stash 列表

stash apply 恢复暂存的修改

另外注意:stash apply 默认恢复工作目录之前的修改。但是不会应用 “暂存” 也就是之前保存时那些暂存状态的文件,将会变为修改未暂存。 如果想回复暂存区 需要加上 index 参数,如下:
git stash apply –index

git stash drop 用来删除一个存储。

git stash pop 最常用 应用 stash 并且立即 删除他。

stash 条件 && 冲突

注意:恢复暂存的条件应该是:当前分支为,暂存匹配的分支 切 当前分支为干净状态。。但这并不是必要条件。 如果在 非 匹配分支应用暂存。依然可以,但类似合并文件,可能造成文件的冲突。

清理

不是储存,而是移除某些不需要的文件。比如:

  1. 从其他地方拷贝过来的文件,(未跟踪的文件)
  2. 移除程序运行所产生的临时文件。否则 git add . 会暂存 随后可能加入版本库。
  3. 为了进行一次重新的构建。比如react ,或者c语言重新编译。
git clean          清理未跟踪的文件
git clean -d     清理未跟踪的文件包含目录
git clean -f      强制清理
git clean -n      -n 尝试清理  
git clean -x     未跟踪,且.gitignore 中有忽略的 比如 react 执行 npm install 的时候,要删除 node_moudules
03:16 - 09月16日

变基

概念:

代码整合:merge 和 rebase 一个是合并,一个叫“变基”
通过图片来看什么是变基:

1 基础例子

两个分支合并的提交历史。 通过变基。变成线性的提交历史。 (上图例子)

变基的原理:临时保存一个分支的提交差异。 然后调整当前分支,最后再逐个应用差异。 参考: https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA

2 变基的目的:保持提交历史的整洁。

变基的应用场景: 像别人维护的项目贡献代码时

  1. 自己首先在自己本地进行各种分支操作开发。
  2. 开发完毕,变基到origin/master 然后提交。

否则你的 ease 分支将会是很多分支合并的结果。包含了很多枝节。通过变基,则你只会推送上去一个线性的记录。管理者也方便进行查看应用你的修改。

3 一个更有(tou)趣(tong)的例子

(限于篇幅,还是考虑省掉了这个例子) git rebase –onto master server client 选中 在 client 分支上的修改,并且不在 server 做处的修改(c3) 基于master 变基。 注意这里的关键是 选中的修改 是 server 和 client 的差异。 参考:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA

4 变基冲突解决

案例 :两个分支都修改了同一行代码。 然后进行变基操作。

....
冲突(内容):合并冲突于 f1.py
error: 无法合并变更。
打补丁失败于 0001 f1 444
失败的补丁文件副本位于:.git/rebase-apply/patch

当您解决了此问题后,执行 "git rebase --continue"。 注意之前先 git add .
如果您想跳过此补丁,则执行 "git rebase --skip"。
要恢复原分支并停止变基,执行 "git rebase --abort"。

5 变基的原则 && 风险

变基应用领域,通常是为了给比人贡献代码的时候,整理代码用的。

原则:

变基的仓库只此一份,如果这个仓库有其他副本。比如有和其他人分享代码。那么不要进行变基操作。总的原则是,只对尚未推送或分享给别人的本地修改执行变基操作清理历史,从不对已推送至别处的提交执行变基操作,这样,你才能享受到两种方式带来的便利。(多人协作时将会造成混乱) 除非所有人都:git pull –rebase 如果已经有问题,这是缓解之道。但不能彻底解决问题。(不建议!)

10:24 - 09月15日

打标签

为了给某一个提交版本打上标签 以示重要,明确记录位置。

列出标签

git tag
git tag -l "v1.5*" # 列出特定模式的标签

创建标签:

附注标签: 包含创建者的相关信息,日期,电子邮件,备注信息等。是个完整的对象。 永久性的标签,建议使用附注标签

git tag -a v1.4 -m 'my version 1.4'

轻量标签: 只是一个 名称引用一个提交。

git tag v1.4.0909

后期打标签:

git log --pretty=oneline 查看历史 以及 hash
$ git tag -a v1.2 9fceb02 补打标签

共享标签:

git push origin v1.5 推送特定标签
git push origin --tags 推送所有标签

检出标签:

标签不像分支,不能移动。因此:

git checkout -b version2 v2.0.0 检出标签 到建新分支上
13:44 - 09月09日

更早的文章 >>

博文列表

03:42 - 09月02日
03:42 - 09月02日
03:42 - 09月02日
03:42 - 09月02日
03:42 - 09月02日
03:42 - 09月02日
14:30 - 07月20日
04:17 - 06月04日
06:16 - 01月01日
07:16 - 11月23日
12:15 - 10月28日
15:01 - 09月17日
10:04 - 09月16日
09:31 - 09月16日
07:09 - 09月16日
13:00 - 09月12日
13:31 - 09月09日
13:31 - 09月09日
13:31 - 09月09日
13:30 - 09月09日
08:26 - 09月09日
03:47 - 09月09日
07:58 - 03月13日
09:06 - 02月25日
07:20 - 01月17日
06:33 - 01月11日
06:33 - 01月11日
06:31 - 01月11日
04:44 - 11月17日
15:19 - 10月05日
04:57 - 03月26日
02:42 - 03月21日
15:07 - 10月31日
13:42 - 10月29日
16:56 - 08月12日
09:16 - 08月10日
14:12 - 08月06日
08:45 - 08月06日
08:44 - 08月06日
08:44 - 08月06日
08:44 - 08月06日
08:44 - 08月06日
08:44 - 08月06日
08:44 - 08月06日
08:44 - 08月06日
08:43 - 08月06日
08:40 - 08月06日
15:47 - 08月05日
11:06 - 08月02日
11:06 - 08月02日
03:41 - 08月02日
03:00 - 07月21日
11:56 - 07月19日
11:56 - 07月19日
11:56 - 07月19日
11:56 - 07月19日
11:56 - 07月19日
11:56 - 07月19日
11:56 - 07月19日
blog/ease/index.1468985063.txt.gz · 最后更改: 03:41 - 09月02日 (外部编辑)