关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

git 日常用法

guanshanw 2023-10-07 12:06 20 浏览 0 评论

1、常用命令

git pull<远程主机名><远程分支名>:<本地分支名>

git push<远程主机名><本地分支名>:<远程分支名> , 和git pull 都是 src:dest

git fetch<远程主机名><分支名>其实就是拉去远程分支到本地版本库,然后再使用 git merge

git merge<branch> 合并分支,将<branch> 合并到当前所在的分支, 比如git merge master ,将本地master与自己的分支合并,比如git merge origin/branch ,就是将远程的origin/branch与本地的分支合并 , 比如不自动commit,可以git merge--no-commit<branch> 。 其实git merge 可以一次合并多个分支,比如git merge<branch>origin/<branch> 其实就是管你远程和本地了全部合到我的分支上。

git diff<branch1><branch2> 在两个分支之间比较

git diff--cached 比较git add.工作区之间的比较, 也就是本地暂存区与工作区之间的比较

git diff                工作区 vs 暂存区
git diff head            工作区 vs 版本库
git diff –cached        暂存区 vs 版本库

git reset--mixed 将暂存区的分支直接回到到工作区, 也就是比如git add. 你想回退到本地,直接 `git resrt --mixed

git reset--mixed HEAD~1 回退一个版本,比如你本地commit/远程已经push了,那么你本地和远程是一样的,如果你想回退一个版本,此时需要reset操作,主要是解决回退的操作,上面就是commit一次后需要回退一个版本,所以是HEAD~1, 比如commit了两次就是HEAD~2 , 此时有4种选项,一般分为--hard--mixed--soft,--hard 硬reset,回退回来你的这次修改全部没有了,也就是直接回到了上一个版本,而--mixed 回退到你没有git add. 操作的时候,--soft 是回退到你git add. 操作完后的时候。 看需求吧。一般只用--hard--mixed .

git commit--amend 主要是处理 你git commit-m'' 想要修改 commit的desc/comment了。

git rm-r--cached. 比如修改了 gitignore ,但是其实你的版本库/暂存区是没有 ignore的,所以需要直接删除 暂存区的缓存。

git rm file 也就是删除本地开发的一个文件,硬删除,直接删没了,回退也需要硬回退。

git checkout. 清空本地所有修改的代码

git checkout-b<branch> 将本地的这个分支,checkout 出一个新的分支,名字为<branch>git checkout-b<branch>origin/<branch> ,将远程的<branch> 分支上 checkout一个新的本地分支名字为`

有些场景可能需要打tag,所以一般是git pull ,拉去远程的所有代码(记得切换到master上),然后git tag 查看tag 历史,创建一个新的tag ,比如git tag v1.1.0,然后直接推送到远程git push origin v1.1.0 就好了(一般是别人给你合master了,上线可能需要打新的tag)

文件权限发生变更需要配置:git diff old mode 100644 new mode 100755 的问题 :需要设置 git config --add core.filemode false

git log-p README.md 查看文件的变更详细历史,git log<file> 查看文件的变更历史,另外有可能查看某一行的变更,这个是指你没有ide的情况下,所以需要指定

?  ebike-**** git:(master) ? cat -n  cmd/main.go
 1  package main
 2  
 3  import (
 ## ........
18  )
19  
20  func main() {
# ......
24          // 启动RocketMQ
25          rq.RocketmqInit()
## ......
53          r.Run(fmt.Sprintf(":%s", host))
54  }
55  
## .............
83  }

然后

?  ebike-op-helios git:(master) ? git log -L 25:cmd/main.go

git shortlog-sn 查看提交者

git submodel add remote_addr local_dir 子模块

# 将远程项目https://github.com/maonx/vimwiki-assets.git克隆到本地assets文件夹。
git submodule add https://github.com/maonx/vimwiki-assets.git assets    

2、子模块

有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。

文档:Git-工具-子模块

1、在父项目新建子模块

git submodule add https://github.com/chaconinc/DbConnector  ./submodule/DbConnector

2、提交子模块

  • 如果在父项目(父项目无任何变更)中提交子模块,会出现:
?  test-dir git:(master) gitpush master
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
    modified:   submodule-01 (modified content)

no changes added to commit
Everything up-to-date
  • 父项目更更提交 (可以提交变更,但是子项目并没有提交)
?  test-dir git:(master) ? gitpush master
[master f00fa83] fanhaodong 提交与2021-03-08 15:54:09
 1 file changed, 1 insertion(+)
## ......
To gitee.com:Anthony-Dong/parent-report.git
   53487e2..f00fa83  master -> master
  • 提交子项目(需要切换到子项目目录,然后切换到父项目提交)
?  submodule-01 git:(master) ? gitpush master
[master 969f9ea] fanhaodong 提交与2021-03-08 15:52:08
## ....
To gitee.com:Anthony-Dong/submodule-01.git
   6ac8e7d..969f9ea  master -> master

?  test-dir git:(master) ? gitpush master
[master 53487e2] fanhaodong 提交与2021-03-08 15:52:12
 1 file changed, 1 insertion(+), 1 deletion(-)
## ....
To gitee.com:Anthony-Dong/parent-report.git
   14e259d..53487e2  master -> maste   

问题就是,提交流程过于复杂!!

参考

  • ProGit, 最好的Git指南
  • Advanced Git
  • Git and GitHub Secrets
  • GIT子模块

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: