码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Git 和 Github 的使用


    补充内容:EasyHPC - Git入门教程【笔记】

    文章目录

    • 常用命令
      • 配置信息
      • 分支管理
      • 管理仓库
    • 概念理解
    • SSH 密钥
      • HTTPS 和 SSH 的区别
      • 在本地生成 SSH key
      • 在 Github 上添加 SSH key
    • 使用的例子
      • 实际工作开发四步曲
      • 同步本地仓库的修改到远程仓库
      • 拉取远程仓库的修改到本地仓库
      • 拉取远程仓库的分支并修改提交
      • 将本地分支提交到不同的远程分支
      • 将本地分支提交到不同的本地分支
    • 参考

    常用命令

    配置信息

    git config --global user.name "用户名"	# 配置用户名
    git config --global user.email "邮箱"	# 配置邮箱地址
    git config -l 	# 查看配置信息
    

    分支管理

    git branch		# 显示本地仓库中的分支列表,当前的分支前会有一个星号标记。
    git branch -r	# 显示远程仓库中的分支列表。
    git branch -a	# 显示本地和远程仓库中的所有分支列表。
    git branch <name>	# 创建分支
    git checkout <name> # 切换分支
    

    管理仓库

    git init			# 初始化 git 仓库
    git clone <repo>	# 从 git 仓库中克隆项目
    git status			# 查看 git 当前状态
    git status -s		# 查看简易信息
    git diff			# 查看 git status 的详细信息
    git add .			# 将添加的文件或修改的文件加入本地的缓存区
    git commit -m '注释'		# 将缓存区内容添加到仓库中
    git commit -am '注释'	# 跳过 add 过程	
    git pull			# 拉取 master 分支上的最新代码
    git pull origin A	# 拉取指定分支上的最新代码
    

    概念理解

    • 分支(branch)是用于在同一代码库中并行开发和维护不同功能的独立版本。
    • 分叉(fork)是用于在开源项目中个人修改和贡献的方式,将主仓库的代码复制到自己的仓库中进行开发。
    • 获取(fetch)用于将远程仓库的修改下载到本地,但不进行合并。
    • 合并(merge)用于将远程仓库的修改与本地分支进行合并。
    • 变基(rebase)用于将一系列提交应用于另一个分支,并整理提交历史。
    • 克隆(clone)用于从远程仓库创建本地仓库的完整复制。

    对分支(branch)和分叉(fork)的个人理解:去别人的开源仓库,把项目 fork 到自己的仓库,在自己的仓库里创建 branch 开发新的功能。

    SSH 密钥

    HTTPS 和 SSH 的区别

    1. HTTPS 可以随意克隆 Github 上的项目,而不管是谁的;而 SSH 则是,你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key,否则无法克隆。

    2. HTTPS 在 push 的时候是需要验证用户名和密码的;而 SSH 在 push 的时候,是不需要输入用户名的,如果配置 SSH key 的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。

    在本地生成 SSH key

    查看本地是否有已经生成好的 ssh key:

    cat ~/.ssh/id_rsa.pub
    

    若有,则先删除:

    cd ~
    rm -rf .ssh
    

    重新生成 ssh key:

    ssh-keygen -t rsa -C "邮箱"
    

    代码参数含义:

    • t 指定密钥类型,默认是 rsa ,可以省略。
    • C 设置注释文字,比如邮箱。
    • f 指定密钥文件存储文件名。

    接着,连续按回车。

    在.ssh目录下得到了两个文件:id_rsa(生成的私钥)和 id_rsa.pub(生成的公钥)。

    查看新生成的 ssh key:

    cat ~/.ssh/id_rsa.pub
    

    在 Github 上添加 SSH key

    登录GitHub,点头像,点Settings,点SSH and GPG keys,点New SSH key,输入Title和Key。

    Title 可以自定义,Key 就是 cat ~/.ssh/id_rsa.pub 输出的内容。

    点击 Add SSH key。

    测试是否设置成功:

    ssh -T git@github.com
    

    设置成功后,即可不需要账号密码 clone 和 push 代码。

    使用的例子

    随便找了一个开源项目,fork 一份。

    在本地 clone 一份:

    git clone git@github.com:zhulu506/demo.git
    

    实际工作开发四步曲

    1. 添:将修改的内容添加到本地暂存区 git add。
    2. 提:将本地暂存区中的内容提交到本地代码库 git commit -m 'description'。
    3. 拉:同步,拉取远程代码库中的内容,在多人协同开发中十分的重要,因为假如事先没有同步更新到最新版本有可能会覆盖别人修改的东西,假如拉取后有冲突直接使用VS Code解决冲突即可 git pull。
    4. 推:将本地代码库中的内容推送到远程代码仓库 git push。

    同步本地仓库的修改到远程仓库

    在本地的 demo 项目里新建一个 .txt 文件,提交更改:

    cd demo/					    # 进入 demo 项目
    echo "hello world" > new.txt	# 新建一个 .txt 文件
    git add new.txt					# 添加跟踪
    git commit -m 'add new.txt'		# 提交到本地仓库
    git push					    # 将本地提交同步到远程仓库
    

    拉取远程仓库的修改到本地仓库

    直接在 Github 网页上修改 .txt 文件。

    从远程仓库拉取更新并合并到当前分支:

    git pull
    

    git pull 相当于先运行 git fetch 获取远程更新,再运行 git merge 合并更新到当前分支。

    拉取远程仓库的分支并修改提交

    情况:拉取远程仓库后,在远程仓库创建了新的分支 v1。

    # 最初在本地分支 master
    git pull			# 拉取 master 分支上的最新代码
    git checkout v1		# 切换到分支 v1,跟踪远程分支 v1
    touch new_file		# 修改动作
    git add .
    git commit -m 'add new_file'
    git push
    

    将本地分支提交到不同的远程分支

    情况:远程仓库存在分支 v2,将本地分支 v1 的更改提交到 v2。

    # 最初在本地分支 v1
    git pull
    touch new_file
    git add .
    git commit -m 'add new_file'
    git push origin v1:v2
    

    将本地分支推送到不同远程分支:git push <远程仓库名称> <本地分支名称>:<远程分支名称>

    将本地分支提交到不同的本地分支

    情况:本地存在分支 v1,将修改提交到本地分支 v3,再提交到远程分支 v3。

    # 最初在本地分支 v1,远程仓库中还没有分支 v3。
    vi new_file	# 修改动作
    git status	# 将 v1 分支上的修改暂存起来
    git checkout -b v3	# 在本地新建分支
    git stash pop		# 将暂存的修改放到新建分支中 
    git add .
    git commit -m 'updata new_file'
    git push -u origin v3	# 将提交的内容 push 到远程分支 v3 
    

    如果远程仓库没有该分支,则需要设置 upstream:git push --set-upstream origin target-branch-name,或简写为:git push -u origin target-branch-name。

    参考

    • GitHub 文档
    • Git分支(branch)和分叉(fork)的区别
    • Git 两个重要概念,即Forking(派生)和Branching(分支),以及它们在GitHub上的应用和区别
    • 设置或重置ssh key
    • Github 生成SSH秘钥(详细教程)
    • Github配置ssh key的步骤(大白话+包含原理解释)
    • Linux/Ubuntu下使用git从Github拉取项目文件、提交修改后文件的完整流程演示
    • github 配置使用 personal access token 认证
    • Git 教程 | 将本地修改后的文件推送到 Github 指定远程分支上
    • Git:将当前修改的内容提交到新的分支上
    • 基于 VScode 的 git 详细使用指南
    • 【全网最全面】VS Code使用Git可视化管理源代码详细教程
  • 相关阅读:
    HTML静态网页成品作业(HTML+CSS)——电影加勒比海盗介绍设计制作(1个页面)
    关于深度图与鸟瞰图之间转换的问题
    git命令合并某一个分支的某个commit到目标分支
    sql优化
    ElementUI实现登录注册啊,axios全局配置,CORS跨域
    磁盘的基本知识和基本命令
    FOR ALL ENTRIES 优化
    爬虫代理请求转换selenium添加带有账密的socks5代理
    做BI智能数据分析,奥威BI系统是专业的
    21.Redis系列之缓存穿透、击穿、雪崩
  • 原文地址:https://blog.csdn.net/weixin_43254181/article/details/139547568
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号