github操作, 解决坑点的总结(持续更新...)_could not get a repository handle for submodule-程序员宅基地

技术标签: github  git  


本地新建一个仓库要push到github上

  1. github上创建一个同名空仓库
  2. 在本地仓库中执行 :
$: git init
$: git add
$: git commit
$: git remote add origin "本地分支名:远程分支名"
$: git push -u origin master

一般本地分支名和远程分支名一样

git pull拒绝合并无关历史

执行 git pull 报错:

fatal: refusing to merge unrelated histories  // 拒绝合并无关历史

执行 :

git pull origin master --allow-unrelated-histories 
//更新:温馨提示,暴力手法,我记得这个命令应该是和线上保持一致

git pull: 当前分之没有跟踪信息

  1. 可以指定为: git pull origin master
  2. 或者可以设置它, 使你的本地主分之跟踪 github 主分支作为上游:
git branch --set-upstream-to=origin/master master
git pull

想要统计github仓库代码

  1. 查看github仓库代码量 :
    在本地仓库中运行: git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -

username为你的用户名

  1. 统计每个人增删行数
    git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done

  2. 查看仓库提交者排名前五的人
    git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5

  3. 添加或修改的代码行数:
    git log --stat|perl -ne 'END { print $c } $c += $1 if /(\d+) insertions/'

每次git clone过慢

加参数--depth=1,

$: github clone --depth=1 仓库地址

只拉取最近一次的 commit

每次提交都要输用户名和密码

原因是, clone 时为 HTTPS 方式, 更改 clone 方式为 SSH

$: git remote -v  //查看远程连接的方式
$: git remote rm origin //删除原先HTTPS的连接方式
$: git remote add origin github仓库的SSH地址
$: git push origin master  //完成

git 的撤销操作

commit 了不需要 commit 的文件, 还没有进行 push, 可以进行撤销

  • 使用git log查看 commit 日志
  • 找到需要撤销的那次的 commit 的哈希值
  • 使用git reset --hard commit_id来撤回

进行了一个错误push, 希望进行版本回退

  • 方法一 : 使用git reset直接回退到之前的版本x, 丢弃x之后的所有版本
$: git log (查看记录, 寻找到想要回退到的目标版本号(也可以直接在github网站上看))
$: git reset --hard 目标版本号 (进行版本回退)
$: git push -f (强行提交, 因为本地HEAD指向的版本比远程库旧,不加 -f 会报错)

或者直接git reset --soft HEAD^, HEAD^ 的意思是上一个版本, 也可以写成 HEAD~1, 或者撤销两次: HEAD~2, soft参数表示不改动工作空间代码,

  • 方法二 : 使用git revert, 创建一个新版本, 该新版本内容和想要回退到的目标版本x一致, 而不丢弃x之后的所有版本
$: git log (寻找到目标版本之后的一次提交的版本号)
$: git revert -n 版本号

  • 如果是commit注释写错了, 只想改注释, 只需要
$: git commit --amend

git的分支管理

  • 查看分支 : git branch
  • 创建分支 : git branch <name>
  • 切换分支 : git checkout <name>

直接创建一个分支并切换到该分支 : git checkout -b <name>

  • 合并某分支到当前分支 : git merge <name>

合并分支只需要将当前分支的指针指向指定分支的的当前提交, 所以速度非常快
合并时遇到冲突想取消合并操作, 使用 : git merge --abort
想回退可以使用git resetgit .revert

  • 删除分支 : git branch -d <name>

由于没有公钥,无法验证下列签名

新装的系统换了个源, 然后执行sudo apt-get update时报错:

 由于没有公钥,无法验证下列签名: NO_PUBKEY A074F0583066C9C9

解决办法 :

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A074F0583066C9C9 (换成你自己提示的)

其实第一次执行莫名不行, 第二天还是这个方法又好了…

删除远程仓库文件

git rm -r --cached 文件名
git commit -m "..."
git push

git切换到指定远程分支

查看远程所有分支
git branch -a

git branch不带参数,列出本地已经存在的分支,并且在当前分支的前面用*标记,加上-a参数可以查看所有分支列表,包括本地和远程,远程分支一般会用红色字体标记出来

* dev
 master
 remotes/origin/HEAD -> origin/master
 remotes/origin/master
 remotes/origin/release/caigou_v1.0

新建分支并切换到指定分支
git checkout -b dev origin/release/caigou_v1.0

git checkout -b 本地分支名 origin/远程分支名

该命令可以将远程git仓库里的指定分支拉取到本地,这样就在本地新建了一个dev分支,并和指定的远程分支release/caigou_v1.0关联了起来。

git branch -vv命令可以显示本地所有分支

* dev    e67e3ef [origin/release/caigou_v1.0] 供应商详情页面
 master 11160c2 [origin/master: behind 5] Merge branch 'master' of https://git.jointforce.com/scm/join/yj-stat

*表示当前所在分支,[远程分支]表示当前本地分支追踪的远程分支,最后一个是最近一次提交的注释。

将本地分支推送到远程

$ git push -u origin dev:release/caigou_v1.0

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

github仓库迁移

可以将提交历史一并迁移到新仓库

git clone --mirror https://github.com/xxxxxxx/oldProject.git
cd oldProject.git
git remote set-url –-push origin https://github.com/xxxxxxx/newProject.git
git push –-mirror

子模块增删

  • 添加子模块
    git submodule add <url> <path>
    git commit 提交完成子模块的添加

  • 删除子模块

  1. rm -rf 子模块目录 删除子模块目录及源码
  2. vim .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目
  3. vim .git/config 删除配置项中子模块相关条目
  4. rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可

执行完成后,再执行添加子模块命令即可,如果仍然报错,执行如下:
git rm --cached 子模块名称
完成删除后,提交到仓库即可。
执行git rm --cached 子模块名称可能会报错: fatal: please stage your changes to .gitmodules or stash them to proceed
需要先暂存下.gitmodule,即先git add 一下.gitmodule

成功删除后重新 git submodule init报错:could not get a repository handle for submodule
直接删掉所有子模块目录,重新init和update

子模块更新报错Server does not allow request for unadvertised object

你的记录是落后于master的,同步后可以正常工作

git submodule sync --recursive
git submodule update

子模块更新到最新

git submodule update --remote

忽略本地更新git pull

  1. 首先,将所有代码添加至暂存区:
    git add .
  2. 然后,将代码临时保存:
    git stash
  3. 此时代码会重置到修改前的状态,可以同步远程仓库区,完事儿。
    git pull
  4. 同步后,如果还想继续修改原来的代码,可将临时代码恢复至工作区:
    git stash pop
版权声明:本文为CSDN博主「逸尘️」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/haoaiqian/article/details/78284337

将当前修改的内容提交到新的分支上

在某一个分支的修改要合并到一个新建分支上

//步骤1:在当前的分支上的修改暂存起来
git stash
//步骤2:暂存修改后,在本地新建分支(new_branch为新分支的名字)
git checkout -b new_branch
//步骤3:将暂存的修改放到新建分支中
git stash pop

合并后查看哪些文件有冲突

git diff --name-only --diff-filter=U

Cherry-pick

引用

将一个feature合并到一个release,并只保留一次提交记录

要将一个 feature 分支合并到一个 release 分支,并只保留一次提交记录,你可以按照以下步骤操作:
首先,确保你的 feature 分支和 release 分支都是最新的,并且已经从远程仓库拉取了最新的更改:

git checkout feature-branch
git pull origin feature-branch

git checkout release-branch
git pull origin release-branch

然后,在 release 分支上使用以下命令将 feature 分支合并,并只保留一个提交记录:
git merge --squash feature-branch

这将会将 feature 分支上的所有更改合并到 release 分支,但是并不会自动创建提交。它会将这些更改放在暂存区中,等待你执行下一步操作。
接下来,创建一个新的提交来包含这些更改:
git commit -m "Your new combined commit message"

最后,如果需要,将这个新的 release 分支推送到远程仓库:
git push origin release-branch

这样就会将 feature 分支合并到 release 分支,并只保留一次提交记录。请记住,在执行这些操作时,你正在改变提交历史,因此请确保你知道自己在做什么,并且不要在公共分支上执行这些操作,以免影响其他人的工作。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36888577/article/details/89973477

智能推荐

C#压缩指定的文件并生成zip文件-程序员宅基地

文章浏览阅读417次。程序集需要添加的引用是:ICSharpCode.SharpZipLib.dll使用实例: //执行压缩 ClsZip.Zip(downZipPath, sourceTopPath, 1, "", allFilePath); //执行下载 ctrlDcAllGrxx.download(downZi...

Apache学习(一):centos系统安装配置APACHE通解-程序员宅基地

文章浏览阅读85次。为什么80%的码农都做不了架构师?>>> ...

【mysql】MySQL性能优化建议整理_组长说考虑性能让我加索引-程序员宅基地

文章浏览阅读558次。【前言】 组长前段时间给了个任务让研究下如何优化Mysql性能, 于是我就在网上搜索了些资料,整合了一下分享给大家。【正文】1.减少不使用查询缓存的查询语句 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续_组长说考虑性能让我加索引

【闲谈】如何统计字符串中出现最多的字母与个数-程序员宅基地

文章浏览阅读291次。前言闲来无事,穷折腾。最近我朋友在找工作,遇到一些面试题,或者遇到一些问题会及时跟我讨论。我则作为他的幕后军师,为他出谋划策。接下来我分享给大家一道简单的面试题。题目统计字符串中出现最多的字母与个数?分析1、验证数据是否字符串2、字符串转换为数组3、统计字符串出现的次数例:var str = 'aaaadddddssssgdhssssbbbbbuuuwmopqlsabcfws..._统计字符串中字母个数或统计最多字母数。

生鲜农产品冷链物流配送路径优化模型构建及算法实现_配送仓库设计算法模型有哪些-程序员宅基地

文章浏览阅读5.4k次,点赞13次,收藏111次。摘要:本案例讲述的案例为生鲜农产品冷链物流配送路径优化,涉及的目标函数成本包括碳排放成本、固定成本、运输成本、货损变质成本、时间惩罚成本。目标种类:单目标模型。求解方法:基础版蚁群算法+改进版蚁群算法。整体对标层级:硕士_配送仓库设计算法模型有哪些

【EI会议征稿通知】第八届可再生能源与发展国际研讨会(IWRED 2024)_第八届可再生能源与发展国际研讨会(iwred 2024)口号和使命-程序员宅基地

文章浏览阅读579次,点赞27次,收藏23次。面向能源与环境需求,长期从事新能源材料与器件领域,重点围绕电化学能源存储与转化方向的关键材料与器件设计(包括锂/钠离子电池、超级电容器、全解水制氢、燃料电池、新型能源存储与转化器件等)。根据斯坦福大学的数据,他是2019年、2020年和2021年世界上前2%被引用最多的研究人员。他也是IEEE高级会员。会议将聚集相关领域内的专家学者和科研人员,围绕“能源中的光学材料”、“光伏发电”、“能源并网技术”等能源再生和发展研究展开讨论,共享研究成果和前沿技术,探讨发展趋势,扩宽科研思路,推进学术成果朝产业化发展。_第八届可再生能源与发展国际研讨会(iwred 2024)口号和使命

随便推点

图像缩放算法-程序员宅基地

文章浏览阅读2.1k次。怎样计算缩放比例?有四种方法:1.对角线法,以对角线长度为准,其伸长者为放大,缩短者为缩小,其底边并行线即为新尺寸。2.计算器法,先输入欲缩放宽度,按除键,再输入原稿尺寸,再按%即得。3.比例尺法,将比例尺上方设定原稿宽度,与比例尺下方新尺寸对齐,即可直接找出缩放百分比。4.公式法,套入(原稿宽度/原稿高度═新宽度/新..._图像缩放算法

word创建自动标序号的标题列表_word里1234自动生成-程序员宅基地

文章浏览阅读378次。创建如上图的四级列表:一、分别基于标题2、3、4(同时也是二三四级样式)创建每个标题的新样式。二、接下来是最后两步完成_word里1234自动生成

Tensorflow嵌入式部署、联调、C++API深度学习前向推理_c++ tensorfow-程序员宅基地

文章浏览阅读1.5k次。1、利用tensrfow的C++API进行嵌入式部署;2、加载pb模型进行前向推理;2、实现目标检测网络(YOLO V3)结果解析;_c++ tensorfow

Python AttributeError: module 'string' has no attribute 'atoi'-程序员宅基地

文章浏览阅读7.1k次。python2 中可以用string.atoi 在python3中会报错替换的方案是string.atoi(your_str)替换为int(your_str)这个代码python2和python3都可以运行._module 'string' has no attribute 'atoi

大模型内容分享(二十八):mnn-llm: 大语言模型端侧CPU推理优化_大模型 llm 推理详解 prefill decode-程序员宅基地

文章浏览阅读1.4k次,点赞23次,收藏19次。在大语言模型(LLM)端侧部署上,基于 MNN 实现的 mnn-llm 项目已经展现出业界领先的性能,特别是在 ARM 架构的 CPU 上。目前利用 mnn-llm 的推理能力,qwen-1.8b在mnn-llm的驱动下能够在移动端达到端侧实时会话的能力,能够在较低内存(_大模型 llm 推理详解 prefill decode

python panda读取excel_python pandas模块简单使用(读取excel为例)-程序员宅基地

文章浏览阅读323次。第一步:模块安装pip install pandas第二步:使用(单个工作表为例)说明:如果有多个工作表,那么只要指定sheetname=索引,(第一个工作表为0,第二个工作表为1,以此类推)pd.read_excel(io, sheetname=0,header=0,skiprows=None,index_col=None,names=None,arse_cols=None,date_parse..._webui自动化 使用panda 读取某个单元格的数据 底层封装

推荐文章

热门文章

相关标签