PyCharm环境下Git与Gitee联动:本地与远程仓库操作实战及常见问题解决方案

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除!


文章目录

  • 前言
  • 下载及安装Git
  • Git的使用
    • 设置用户签名
    • 设置用户安全目录
    • Git基本操作
    • Git实操操作
  • Pycharm与Git、Gitee
    • Pycharm配置Git
    • Pycharm配置Gitee
    • Pycharm之Git基本操作
  • 常见问题
    • 无法创建分支
    • Github push 失败
  • 总结
  • 致谢
  • 参考


前言

在软件开发中,版本控制是一个不可或缺的工具。随着项目的增长和团队的扩大,管理源代码的变更、协作和跟踪变得愈发重要。Git正是为了满足这些需求而诞生的。

以下是Git的特点:

  • 分布式版本控制:

分布式设计,使得每个开发者都能拥有完整的代码库副本以便开发者能够在没有网络连接的情况下进行工作,提高了开发的灵活性和效率。

  • 强大的分支与合并:

分支管理功能,开发者可以创建新分支进行新功能开发或错误修复,有助于保持代码库的整洁和有序。通过分支和合并,团队可以并行工作,提高开发速度,同时保持代码质量。

  • 高效的提交管理:

Git将每次提交视为一个完整的代码库快照,使得Git能够高效地处理大型项目的版本管理,即使面对数百万个文件的变更,也能保持出色的性能。开发者可以轻松查看历史提交记录,了解项目的演变过程,并快速回滚到之前的版本。

  • 与代码托管平台无缝集成:

Git与Gitee、GitHub等代码托管平台紧密结合,为开发者提供了便捷的代码托管、分享和协作体验。开发者可以浏览和搜索开源项目,参与开源贡献,与全球开发者社区进行交流与合作。

  • 易于学习和使用:

Git提供了直观且强大的命令行界面,同时也支持各种图形化工具,使得不同水平的开发者都能轻松上手。丰富的文档和社区资源为学习者提供了良好的支持,帮助开发者快速掌握Git的使用技巧。

综上所述,Git以其分布式设计、强大的分支与合并功能、高效的提交管理、与代码托管平台的无缝集成以及易于学习和使用的特点,成为了现代软件开发中不可或缺的版本控制工具。


下载及安装Git

Git的下载及安装过程因操作系统而异。以下是针对不同操作系统的Git下载及安装步骤:

对于Windows系统:

  • 打开Git官网
  • 在Git下载地址中找到Git的最新版本和下载链接,选择适合操作系统的下载链接。

在这里插入图片描述

  • 下载完成后,运行安装程序。根据提示,选择合适的安装选项和安装路径。
  • 安装完成后,在最近添加中可看到Git。

在这里插入图片描述

对于Mac系统:

  • 打开Mac App Store或访问Git官网。
  • 在官网首页或App Store中找到Git的Mac版本并下载安装。
  • 安装完成后,打开终端(Terminal)即可使用Git。

对于Linux系统:

  • 通过以下命令来安装Git:sudo apt-get install git
  • 安装完成后,可以通过输入命令git --version来验证Git是否成功安装。
  • 另外,除了直接下载安装包进行安装,Mac用户还可以利用brew工具包管理器进行。

Git的使用

设置用户签名

设置Git用户签名是一个必要的步骤,用于标识提交代码时的身份。以下是设置Git用户签名的步骤:

  • 设置全局的用户签名:
git config --global user.name NAME #设置用户名
git congig --global  user.mail NAME@git.com #设置用户邮箱

其中--global适用于全部仓库,若只针对单一仓库可去掉--global或者替换为--local

设置完成后,Git会使用你提供的用户名和邮箱地址来标识你的提交。这些信息会保存在Git配置文件中,对于全局配置,通常保存在用户主目录下的 .gitconfig 文件中;对于单个仓库配置,则保存在仓库目录下的 .git/config 文件中。

C:\Users\用户名\.gitconfig

此外,虽然Git不会验证你设置的邮箱地址是否真实存在,但是建议使用一个有效的邮箱地址,以便在需要时接收来自Git的通知或与其他开发者进行联系。

设置用户安全目录

从Git 2.30开始,Git引入了一个新的安全特性,即safe.directory。为了防止某些Git操作在不受信任的路径上执行,从而避免潜在的安全风险。特别是使用Git进行克隆、检出或执行其他涉及文件系统的操作时,Git会检查这些操作是否发生在已知的安全目录中。如果在不属于安全目录的位置执行这些操作,Git可能会拒绝执行,或者给出警告信息,提示可能面临安全风险。

  • 以下是设置Git用户安全目录的代码:
git config --global --add safe.directory file_path #向全局配置中添加一个安全目录
git config --local --add safe.directory file_path #向局部配置中添加一个安全目录

需要注意的是,safe.directory是全局设置的,所以添加的目录对所有Git仓库都有效。如果你只想为特定的仓库添加安全的目录,可以使用--local选项。

Git基本操作

Git的基本操作涵盖了版本控制的各个方面,从初始化仓库到提交更改,再到分支和合并等操作。

以下是Git的一些基本操作和指令:

  • 初始化本地仓库:

git init:在当前目录下初始化一个新的Git仓库,创建一个名为.git的子目录,用于存储版本控制所需的所有信息。

  • 添加文件到暂存区:

git add filename:将工作区中的文件添加到暂存区。
git add .:则会添加当前目录下的所有文件。

  • 提交暂存区的更改到本地仓库:

git commit -m "commit message":将暂存区的更改提交到本地仓库。

  • 查看仓库的当前状态:

git status:查看当前工作区和暂存区的状态,包括哪些文件已经被修改、哪些文件还未添加到暂存区等。

  • 查看提交历史记录:

git log:查看仓库的提交历史记录。
git reflog:查看本地仓库的所有操作记录。

  • 版本回退:

git reset --hard [commit]:将HEAD指针回退到之前的某个提交。意味着版本更迭的底层实现是依赖于指针实现的。

  • 分支操作:

git branch:查看当前仓库的所有分支。
git branch new_branch:创建新的分支。
git checkout branch_name:切换到指定的分支。
git merge branch_name:将指定分支合并到当前分支。
git branch -d branch_name:删除指定的分支。

  • 远程仓库操作:

git clone url:命令克隆远程仓库到本地。
git remote -v:查看远程仓库的信息。
git push origin branch_name:将本地分支推送到远程仓库。
git pull origin branch_name:从远程仓库拉取指定分支的更新。

以上只是Git的一些基本操作,实际上Git的功能远不止于此。通过学习和实践,你可以掌握更多高级的Git操作,如标签管理、冲突解决等,以更好地管理代码和项目。

Git实操操作

  • 历史记录查看:git refloggit log:
    在这里插入图片描述
    在这里插入图片描述

  • 版本切换:git reset --hard 版本号,版本号为git reflog输出最前面的橙色一串号码。
    在这里插入图片描述
    在这里插入图片描述
    再次使用git reflog可以发现HEAD指针指向了对应的版本。并记录在.gitHEAD文件中。
    在这里插入图片描述

  • 版本控制:依赖于head指针的移动。此处以master和qxd_edit分支为例。
    git branch -v的结果是存在两个分支
    在这里插入图片描述
    git merge qxd_edit合并分支qxd_edit到master
    在这里插入图片描述

  • 删除 Git 分支主要分为删除本地分支和删除远程分支两种操作。

git branch -d branch_name删除本地分支
git branch -D branch_name强制删除分支会丢失该分支上的所有未合并的更改

删除远程分支:先在本地执行删除操作,然后再推送到远程仓库。删除远程分支通常需要相应的权限。
以下是一般的步骤:确认当前不在要删除的分支上。使用 git status 来检查当前所在的分支。

git branch -r -d origin/branch_name:删除本地对远程分支的引用
git branch -dr origin/branch_name:同时删除本地和远程的引用

将删除操作推送到远程仓库,从而真正删除远程分支。使用 git push命令,并带上 :branch_name 语法来删除远程分支:

git push origin :branch_name:冒号表示删除操作。

  • 远程仓库

推送到远程库:以分支为单位

git remote -v :查看当前所有远程库地址别名
git remote add别名 远程地址:添加远程地址并取别名
git remote remove 别名:删除远程库的别名。不会影响远程仓库本身,只是从本地仓库中移除了对该远程仓库的引用。

git push 远程库别名 分支名:向远程库中推送本地分支,可能需要对应的登录或者,对应的口令(token)才能上传
git pull 远程库别名 分支名:从远程库中拉取分支
git clone 远程仓库网址:从远程库中克隆分支,为用户自动拉取代码、初始化本地库、创建别名(默认origin)

Pycharm与Git、Gitee

Pycharm配置Git

  • 打开PyCharm IDE。
  • 转到 File -> Settings。
  • 在设置窗口中,导航到 Version Control -> Git。
  • 配置Git的路径,找到Git的git.exe文件所在的位置,通常是Git安装目录/bin/git.exe
    如下图:
    在这里插入图片描述

Pycharm配置Gitee

  • 安装Gitee插件
    在PyCharm的 Settings -> Plugins 中搜索 “Gitee”,安装并重启PyCharm以激活插件。如下图:
    在这里插入图片描述
  • 登录Gitee账户
    在File -> Settings -> Version Control -> Gitee ->Add account登录账号,如下:
    在这里插入图片描述

Pycharm之Git基本操作

  • 创建本地库,顶端功能区选择版本控制器,创建Git库,如下图:
    在这里插入图片描述

  • 创建分支,点击右小角master图标,创建分支,如下图:
    在这里插入图片描述

  • 切换分支,点击右小角master图标, 如下图:
    在这里插入图片描述

  • 提交暂存区/本地库,选择文件/项目->Git->add/commit, 如下图:在这里插入图片描述

  • 推送远程库,顶端功能区VSC,分享到Gitee仓库, 如下图:
    在这里插入图片描述

  • 查看远程库,Gitee仓库,推送成功, 如下图:
    在这里插入图片描述


常见问题

无法创建分支

为保护主分支的稳定性,主分支应该在创建新分支前进行提交,是因为主分支通常用来存放的是稳定且可发布的代码版本。在有新的提交后创建分支,意味着新分支是从一个已知的良好状态开始,这样开发者可以在新分支上安全地开发新功能或修复问题,而不直接影响主分支的代码。

Github push 失败

GitHub push失败可能由多种原因引起,以下是几种常见情况及其解决方案:

  • 身份验证问题

    • 可能没有正确设置SSH密钥或HTTPS凭据。对于SSH,确保已经在GitHub上添加了本地生成的公钥;对于HTTPS,需要输入正确的用户名和密码,或者使用Personal Access Token替代密码。
  • 非快进(non-fast-forward)提交

    • 当远程仓库的HEAD比您本地的提交更“新”,直接push会导致冲突。此时,您需要先pull远程仓库的最新改动,合并后再push。可以运行以下命令:
      git pull origin <branch-name>
      git push origin <branch-name>
      
  • 推送权限不足

    • 检查是否有对目标仓库的push权限。如果是私有仓库,确保是仓库成员,并且具有适当的权限。
  • 网络问题

    • Github 由于部署在国外,国内连接不稳定,建议多次尝试,或者尝试科学上网以提高push成功概率。。

总结

本文主要从Git与Gitee的关系进行说明,进一步的以Pycharm中,本地和远程仓库的基本操作进行进行说明,最后列举常见问题的解决办法。


致谢

欲尽善本文,因所视短浅,怎奈所书皆是瞽言蒭议。行文至此,诚向予助与余者致以谢意。


参考

  • Git官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/286555.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python高阶函数库之functools使用详解

概要 functools是Python标准库中的一个模块,它提供了一系列用于高阶函数:即那些作用于或返回其他函数的函数。这些工具主要用于函数式编程风格,其中包括用于创建函数包装器的装饰器。 functools简介 functools库的目的是为了高阶函数,特别是那些涉及到函数转换的操作提供…

数据仓库的魅力及其在企业中的应用实践

数据仓库&#xff0c;这一创新性的概念来自于比尔恩门&#xff0c;从1980年代末提出以来&#xff0c;便凭借其独特的架构设计和强大的数据处理能力&#xff0c;在全球商业领域中掀起了一场革命。它不仅是解决企业海量数据存储和查询需求的关键技术&#xff0c;更是推动企业实现…

【Java】哈希表

文章目录 一、概念二、哈希冲突2.1概念2.2设计合理的哈希函数-避免冲突2.3调节负载因子-避免冲突2.4闭散列-冲突解决&#xff08;了解&#xff09;2.5开散列/哈希桶-冲突解决&#xff08;重点掌握&#xff09; 三、代码实现3.1成员变量及方法的设定3.2插入3.3重新哈希3.4 获取到…

免费客服系统大揭秘!有什么好用的免费客服系统推荐?

贵的不一定是好的&#xff0c;合不合适才最重要&#xff01;有什么好用的免费客服系统吗&#xff1f;现下服务经济的发展的风潮已经席卷到了各行各业。 企业不仅要提供好的产品&#xff0c;还需要好的服务。客服系统作为企业与客户重要的沟通渠道&#xff0c;越来越多的企业正在…

记录些LLM相关的知识

SOTA SOTA是"State-of-the-Art"的缩写&#xff0c;指的是某个技术或领域中目前最先进的技术或方法。在语音合成领域&#xff0c;SOTA语音合成效果指的是使用最新的研究和技术所达到的最佳语音合成效果。这通常包括高清晰度的语音输出&#xff0c;自然的语音流畅度&a…

面试题-Elasticsearch集群架构和调优手段(超全面)

对于Elasticsearch&#xff08;ES&#xff09;&#xff0c;我了解并有经验。在我之前的公司&#xff0c;我们有一个相对大型的ES集群&#xff0c;以下是该集群的架构和一些调优手段的概述&#xff1a; 1. 集群架构 集群规模&#xff1a;我们的ES集群由15个节点组成&#xff0c…

docker配置镜像加速后容器和镜像消失

一、问题描述 根据阿里云给docker配置镜像加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://gt6j98xi.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl rest…

框架结构模态分析/动力时程分析Matlab有限元编程 【Matlab源码+PPT讲义】|梁单元|地震时程动画|结果后处理|地震弹性时程分析| 隐式动力学

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

[NKCTF 2024]web解析

文章目录 my first cms全世界最简单的CTF解法一解法二 my first cms 打开题目在最下面发现是CMS Made Simple&#xff0c;版本为2.2.19 扫一下发现存在后台登陆界面&#xff0c;直接访问 用字典爆破下admin的密码为Admin123 然后直接登录&#xff0c;去漏洞库搜一下其实存在…

Java基于微信小程序的校园请假系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#…

python爬虫基础-----运算符(第三天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

C++ 3.25

思维导图&#xff1a;【有道云笔记】无标题脑图(1).mindmap https://note.youdao.com/s/ELJA6sJ6 定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定…

python网络爬虫实战教学——requests的使用(2)

文章目录 专栏导读1、POST请求2、响应3、Cookie设置 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN 数据分析领域优质创作者&#xff0c;专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》&#xff0c;本专栏针对大学生、初级数据分析工程…

家政服务管理平台设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

css3鼠标悬停图片特效,图片悬停效果源码

特效介绍 css3鼠标悬停图片特效,图片悬停效果源码&#xff0c;可以在网页上面作为自己的动态加载名片&#xff0c;放到侧边栏或者网站合适的位置即可 动态效果 代码下载 css3鼠标悬停图片特效,图片悬停效果源码

docker 进入容器内部命令

docker容器运行了&#xff0c;怎么进入容器内部查看内部的文件情况呢&#xff1f; 答&#xff1a;可以通过docker exec 的命令查看。 docker exec --help 可以查看命令介绍 &#xff1a; docker exec -it XXX /bin/bash XX为容器ID 进入容器内部 /bin/bash是需要添加的 不…

2.6 IDE(集成开发环境)是什么

IDE&#xff08;集成开发环境&#xff09;是什么 IDE 是 Integrated Development Environment 的缩写&#xff0c;中文称为集成开发环境&#xff0c;用来表示辅助程序员开发的应用软件&#xff0c;是它们的一个总称。 通过前面章节的学习我们知道&#xff0c;运行 C 语言&…

JavaWeb:AOP、配置优先级、Bean管理、SpringBoot原理、Maven高级

1 AOP 1.1 基本语法 面向切面编程、面向方面编程&#xff0c;面向特定方法编程 在管理bean对象的过程中&#xff0c;主要通过底层的动态代理机制&#xff0c;对特定的方法进行编程 应用&#xff1a;统计每一个业务方法的执行耗时 xml引入依赖 <!-- AOP-->&l…

2015年认证杯SPSSPRO杯数学建模A题(第一阶段)绳结全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 A题 绳结 原题再现&#xff1a; 给绳索打结是人们在日常生活中常用的技能。对登山、航海、垂钓、野外生存等专门用途&#xff0c;结绳更是必不可少的技能之一。针对不同用途&#xff0c;有多种绳结的编制方法。最简单的绳结&#xff0c;有时称…

数据结构 之 队列习题 力扣oj(附加思路版)

优先级队列 #include<queue> --队列 和 优先级队列的头文件 优先级队列&#xff1a; 堆结构 最大堆 和 最小堆 相关函数&#xff1a; front() 获取第一个元素 back() 获取最后一个元素 push() 放入元素 pop() 弹出第一个元素 size() 计算队列中元素…