Git 与远程仓库实操记录:克隆、配置、分支推送与问题排查

目录


一、VSCode中Git相关内容

1. 工作区文件标注的含义

  1. U:Untracked
    在本地新建了文件,且还未被Git跟踪(未加入暂存区)
  2. 6,U
    有6个错误且untracked
  3. A:Added
    该文件是新添加的文件,且首次被Git跟踪。
    当使用git add命令将新文件添加到暂存区,文件状态会从U变成A
  4. M:Modified
    对已跟踪的文件进行修改
  5. D:Delete
    删除了这个文件

2. Git相关操作

  1. 保存加粗样式
    在工作区保存
  2. Commit/提交
    自动暂存,并将文件保存在本地仓库
  3. Sync Changes
    将更改同步到远程仓库
  4. GitHub上的提交时间
    同步到远程仓库的时间

二、Git推送(新建分支)

当前背景 :Ubuntu子系统的一个本地写的文件,希望推送到远程仓库的新分支
项目地址http://xxx.xxx.xxx.xxx:port/path/to/repo
仓库地址http://xxx.xxx.xxx.xxx/path/to/repo.git

  1. 设置全局Git用户信息

    去掉--global是只为当前仓库设置

    shell 复制代码
    git config --global user.email "your.email@example.com"
    git config --global user.name "Your Name"
  2. 验证配置

    shell 复制代码
    git config --list | grep user
  3. 进入项目目录

    shell 复制代码
    cd /path/to/your/project
  4. 初始化仓库

    shell 复制代码
    git init
  5. 添加原始GitLab仓库为远程源

    shell 复制代码
    git remote add origin http://xxx.xxx.xxx.xxx/path/to/repo.git
  6. 验证远程仓库

    shell 复制代码
    git remote -v
  7. 创建并切换到新分支

    例如命名为 wk_dev_demo

    shell 复制代码
    git checkout -b wk_dev_demo
  8. 添加所有更改文件(或指定文件)到本地

    shell 复制代码
    git add .
  9. 提交更改到本地

    shell 复制代码
    git commit -m "提交说明"
  10. 首次推送需设置上游分支

    shell 复制代码
    git push --set-upstream origin wk_dev_demo
  11. 后续推送只需

    shell 复制代码
    git push

    发现git push连接不上,进行下面一行命令,然后重新commit

    shell 复制代码
    # 修改为可访问的URL
    git remote set-url origin http://xxx.xxx.xxx.xxx:port/path/to/repo.git

三、Git常用命令

  1. 文件暂存

    shell 复制代码
    git add <文件名>
  2. 文件保存在本地仓库

    shell 复制代码
    git commit -m "提交的注释"
  3. 查看提交历史

    shell 复制代码
    git log
  4. 以单行格式显示项目的提交历史

    shell 复制代码
    git log --oneline

四、命令行克隆的一些问题

  1. Gitee克隆

    1. Gitee在linux进行HTTPS克隆项目时需要用户名和密码,而用ssh克隆后续可以不需要用户名密码。具体操作步骤在gitee克隆页面有写。
    2. 如何让Gitee的https克隆不需要密码:
    shell 复制代码
    git config --global credential.helper store
    1. 全局设置记住密码,永久存储到磁盘文件
  2. ssh克隆(Github和Gitee同理)

    1. 验证 SSH 连接

      shell 复制代码
      ssh -T git@github.com
      • 如果看到类似Hi username! You've successfully authenticated...的欢迎信息,说明 SSH 密钥设置正确。那么问题可能出在仓库权限本身(请确保仓库存在且您有访问权)。
      • 如果看到Permission denied (publickey)或其他错误,则需要进行以下设置。
    2. 检查是否有现有的SSH密钥

      shell 复制代码
      ls -al ~/.ssh

      看看有没有类似以下文件:

      id_rsaid_rsa.pub(RSA密钥)

      id_ed25519id_ed25519.pub(Ed25519密钥,推荐)

      id_ecdsaid_ecdsa.pub(ECDSA密钥)

      1. 如果尚未生成

        则生成 SSH 密钥:在终端运行以下命令(将 your_email@example.com替换为您的 GitHub 注册邮箱),然后一路按回车接受默认设置

        shell 复制代码
        ssh-keygen -t ed25519 -C your_email@example.com

        这会在~/.ssh/目录下生成一对密钥:id_ed25519(私钥,需保密)和 id_ed25519.pub(公钥)

      2. 如果现在有密钥

        1. 检查现有密钥是否被正确使用

          shell 复制代码
          cat ~/.ssh/config

          如果这个文件不存在或没有指定密钥,让我们为GitHub指定使用id_rsa密钥。

        2. 添加密钥到ssh-agent

        3. 启动ssh-agent

          shell 复制代码
          eval "$(ssh-agent -s)"
        4. 将您的id_rsa密钥添加到ssh-agent

          shell 复制代码
          ssh-add ~/.ssh/id_rsa
        5. 检查公钥是否已添加到GitHub

          shell 复制代码
          cat ~/.ssh/id_rsa.pub
        6. 将 SSH 公钥添加到 GitHub

          复制公钥内容

          shell 复制代码
          cat ~/.ssh/id_ed25519.pub
      3. 登录 GitHub,点击右上角头像 -- Settings -- 左侧边栏 SSH and GPG keys -- 绿色按钮 New SSH key

      4. Title中为密钥起个名字(如"My Laptop"),然后将刚才复制的整个公钥内容粘贴到Key文本框中,最后点击Add SSH key

      5. 验证 SSH 连接

        shell 复制代码
        ssh -T git@github.com
  3. ssh克隆卡住(Linux)

    shell 复制代码
    vim ~/.ssh/config

    在最后一行添加

    shell 复制代码
    Host github.com
    	HostName github.com
    	User git
    	ProxyCommand nc -X connect -x 127.0.0.1:7890 %h %p

相关推荐
_Narcissus_6 分钟前
枚举和模拟算法笔记
c语言·数据结构·c++·笔记·算法·模拟·枚举
zhixingheyi_tian10 分钟前
Linux 之 ssh
linux·服务器·ssh
老当益壮梁奶奶1 小时前
Linux软件编程学习笔记(二)Linux文件IO编程入门:从fopen到fgetc
linux·c语言·c++·笔记·学习
sunoo-2292 小时前
C 语言文件 IO 全攻略:从基础函数到实战踩坑(BMP 读取 + 词典查询)
linux·c语言·前端·笔记·vscode·学习
草莓熊Lotso2 小时前
【Linux网络加餐】手动部署:SSH 与 Web 服务实战 + 底层原理全解析
linux·运维·网络·人工智能·python·langchain·ssh
蒸蒸yyyyzwd2 小时前
cpp选手秋招学习笔记 day12
笔记·学习·oracle
Wang's Blog2 小时前
PostgreSQL笔记38:慢查询定位与优化的系统方法论
数据库·笔记·postgresql
慕容引刀2 小时前
或许你真的需要这个Git神器:让团队提交文案终于对齐了
人工智能·git·vscode·自然语言处理·github
XiaQ09193 小时前
Linux 常用命令学习笔记(用户管理篇):用户、组与权限的钥匙
linux·开发语言·笔记·学习
He BianGu3 小时前
【笔记】使用Assembly.LoadFrom和AssemblyLoadContext加载插件对比,以及有没有更合适的加载插件方案
笔记