收藏官网首页
查看: 4261|回复: 0

Git 的实用便捷操作

77

主题

89

帖子

1938

积分

金牌会员

Rank: 6Rank: 6

积分
1938
跳转到指定楼层
楼主
 楼主| 发表于 2022-9-27 11:12:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
校园创客福利
虽然现在有很多图形化的 Git 工具,但是命令行依然 yyds。本文记录了工作中很有用的一些 Git 操作。

目录
  • 1.Fork出来的Git仓库同步代码
  • 2.合并多个提交
  • 3.代码回退
  • 4.使用worktree
  • 5.其它


1.Fork出来的Git仓库同步代码
背景:有的时候从原仓库fork出了一个新仓库,这个新仓库做了自己的修改。可是原仓库也进行了更新,比如修复了bug,增加了新特性之类的。这个时候想要把原仓库代码同步过来。
原理:把原仓库的代码拉到本地,然后通过git merge把原仓库分支代码合到自己的分支代码。
  • 先拉取原仓库代码到本地
git remote add upstream (填写你仓库git地址)git fetch upstream
这样就把原仓库代码拉到本地了,而且 upstream 跟原仓库进行了绑定。(类似origin的绑定,upstream 也可以命名为其它的名称)
此时执行git remote,会看到有两个:
originremote
  • 合并分支
切换到fork仓库的分支,可以新建一个合并分支。然后执行命令:
# 分支名不一定得是master,也可以是其它的原仓库分支。git merge upstream/master
如果有冲突就要解决冲突,解决完执行下命令即可:
git merge --continue
最后,如果完成了,可以执行命令移除这个绑定。
git remote remove upstream2.合并多个提交
完成一小部分功能进行提交是一个良好的习惯,有利于我们随时回溯代码。然而整体功能没完成是不能提交到主干的,而且也倾向于整体功能完成合并为一个提交。因此本地的多个小提交合并成一个提交就很有必要了。下面举个栗子演示合并操作。
执行git log,查看历史提交:
commit 03c72b6dfc24c6bf6f60e2c922552249cc3e5376git test 3commit 24276fbd0495c4b337f4058726a48e68118eac0agit test 2commit 9f92d8624a3adf7cd6fb69268f99d864390838c4git test 1
假设要将前两笔提交合并,则记录下第三笔的commitId:9f92d8624a3adf7cd6fb69268f99d864390838c4。(第三笔提交不参与合并)
执行以下命令:
git rebase -i 9f92d8624a3adf7cd6fb69268f99d864390838c4
执行后会弹出以下:
pick 24276fbd git test 2pick 03c72b6d git test 3# 省略以下内容
此时要将除第一个外的pick改为squash或者s。即改完后为:
pick 24276fbd git test 2s 03c72b6d git test 3# 省略以下内容
改完保存退出,会弹出commit message修改界面,修改保存即可。
再执行git log发现提交已经合并了。
commit 980d318f91f2faa1d748ae5a963b692162dd521cgit test mergecommit 9f92d8624a3adf7cd6fb69268f99d864390838c4git test 13.代码回退
1、在工作区的代码
# 丢弃某个文件git checkout -- 文件名# 丢弃全部git checkout -- .
2、git add到了索引区
# 回退索引区所有文件git reset HEAD .# 回退索引区指定文件夹git reset HEAD 文件夹名
3、commit 到本地分支的代码
# 回退最新一笔提交git reset --hard HEAD^# 回退到指定的版本git reset --hard 版本号
这里说下reset时,指定--hard、--soft、--mixed的区别:
  • hard: 回退时HEAD指针被回退,索引区、工作目录都被重置了。
  • soft: 只改变了历史提交(HEAD指针),索引区和工作目录没有更改。
  • mixed: 不指定时默认为mixed,改变了历史提交(HEAD指针),重置了索引区。

4.使用worktree
当你的项目很大,而有多个特性需要开发时,为了避免频繁切换分支,可以使用git worktree。
git worktree非常适合大型项目又需要维护多个分支,想要避免来回切换的场景。其有以下几个优点:
  • 单独 clone 项目相比,节省了硬盘空间,又因为 git worktree 使用 hard link 实现,要远远快于 clone
  • 提交可以在同一个项目**享
  • 可以快速进行并行开发,同一个项目多个分支同时并行演进

git worktree使用非常简单,掌握3个命令即可:
# 添加一个 worktree。git worktree add filePath# 移除一个 worktreegit worktree remove filePath# 查看目前所有的 worktreegit worktree list
创建了worktree后,只需要用IDE打开添加到filePath的项目即可。
5.其它#本地分支与远程进行关联git branch --set-upstream-to=origin/(要关联的分支名)#推送本地新建分支到远端分支(远端会自动创建分支)git push origin newbranchriginbranch#删除远端分支git push origin --delete (branch_name)#查看本地分支关联的远程分支git branch -vv#分支重命名git branch -m oldName newName#修改当前项目的用户名和邮箱git config --local user.name “userName"git config --local user.email email@example.com#删除本地版本库上那些失效的远程追踪分支:git remote prune origin --dry-run
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表