你应该知道的git高级技巧

1.cherry-pick,把某个分支已经提交的commit放到另一个分支上

git cherry-pick <commit_id>

该命令可以将某个分支的提交记录合并到当前分支,如在maser有一个提交,需要合并到dev分支,那么先找到该提交的commit id,再切换到dev分支执行该命令。如果有冲突则解决冲突后手动commit,没冲突则程序会自动产生一个新的commit

1
git cherry-pick  -x <commit id>

同上,不同点:保留原提交者信息。

Git从1.7.2版本开始支持批量cherry-pick,就是一次可以cherry-pick一个区间的commit。

git cherry-pick <start-commit-id>..<end-commit-id>

git cherry-pick <start-commit-id>^..<end-commit-id>

前者表示把<start-commit-id>到<end-commit-id>之间(左开右闭,不包含start-commit-id)的提交cherry-pick到当前分支;

后者表示把<start-commit-id>到<end-commit-id>之间(闭区间,包含start-commit-id)的提交cherry-pick到当前分支。

其中,<start-commit-id>到<end-commit-id>只需要commit-id的前6位即可,并且<start-commit-id>在时间上必须早于<end-commit-id>

2.从另一分支获取文件内容而不用切换分支

设想你正在进行重构,你创建了好几个分支并在各分支下进行改动。这时,你想把另一个分支里某一个文件的改动引入到当前工作的分支里,为了达到目的你可能需要好几步:git stash你的改动;切换到那个分支;获取文件的改动;切回工作分支(当然是使用git checkout -);继续进行编辑(译者注:别忘了git stash pop)。但是,你也可以直接检出另一分支的文件,并且合并到你当前所在的工作分支,使用命令(括号部分替换为对应的分支和文件):

1
git checkout (branch) -- (path/file)

该命令类似于cherry-pick,都是把一个分支改变的内容copy到另一个分支,不同点在于cherry-pick会在目标分支上自动产生一个新的commit,而checkout则仅做内容的改变,不会自动提交

3.删除已经缓存进git库的文件

git rm -r --cached  msite-api/.factorypath tomtop-msite/logs/access.log 

该命令用于删除已经提交到版本库,而后期要添加到.ignore文件中忽略的文件(日志等)

4.基于某个commitID或tag创建新的分支

git checkout -b newbranchName commitId 或  tagName

例:git checkout -b fixbug v1.2.3

 

当远程仓库有人执行了revert操作还原了代码,此时本地再拉代码拉不下来,可以使用以下操作

git fetch --all
git reset --hard origin/v1_34   
git pull

posted @   until-u  阅读(1331)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示