我作为初学者根据我自己的经历写的学习笔记,希望对萌新有所帮助。

一、Git

Git是什么

Git是一个开源的分布式版本控制系统,用于追踪代码变更、支持非线性开发并促进多开发者协作。

Git如何下载

直接去官网Download下载最新版本https://git-scm.com/downloads
小技巧:不要用浏览器自带的下载工具,贼慢,直接用迅雷下载

Git如何安装

都是英文,作为萌新建议直接下一步下一步下一步,直到安装结束。


Git如何使用

  1. 在电脑上新建一个项目文件夹(如有请忽略)
  2. 在项目文件夹里右键选择Open Git Bash here
  3. 初始化本地仓库,输入:

    git init

    (该命令通常每个项目执行一次即可)

  4. 新建代码文件或移入你的代码文件
  5. 将当前目录下的所有文件添加到暂存区(不可见),输入:

    git add .
  6. 如果你不放心想查看状态(放心可跳过),可以输入:

    git status
  7. 提交暂存区代码到本地仓库,输入:

    git commit -m "自定义备注信息"

之后的每次代码修改,你只需要执行步骤5、6、7

Git如何如何回退版本

  • 回退改动保存前的上一个版本,可以输入:

    git restore
  • 想回退到其他commit的版本,首先需要查看历史提交日志,获取包括提交的哈希值、作者、提交日期和提交消息等。所以首先需要输入:

    git log

  • 获取到哈希值后,回退指定版本可以输入:

    git reset --hard <哈希值>


二、Gitee

Gitee是什么

Gitee是一个基于Git的代码托管和协同开发平台,旨在为开发者提供高效、便捷的开源协作服务。

Gitee如何使用

  1. 在Git中生成SSH公钥,Windows用户在电脑桌面空白处右键选择Git Bash here,输入:

    ssh-keygen -t ed25519 -C "Gitee SSH Key"
    

使用SSH公钥可以让你在你的电脑和 Gitee 通讯的时候使用安全连接
  1. 注册账号(略)
  2. 添加SSH公钥
    路径:Gitee页面点个人头像——设置——左侧栏“SSH公钥”——随便取个标题,把步骤1获取到的公钥复制粘贴进去

想详细了解可以访问:Gitee帮助-SSH公钥设置


如何把本地代码推送到Gitee代码仓库

  1. 在Gitee新建仓库,获取仓库的SSH推送链接(略)
  2. 在项目文件夹里右键选择Open Git Bash here
  3. 一顿add、commit操作(执行过可略过)
  4. 在Git Bash里进行一个全局设置,逐一输入并回车:

    git config --global user.name "China_XX"
    git config --global user.email "XXX@139.com"

  5. 建立本地仓库与Gitee远程仓库的交互,输入:

    git remote add origin <你的SSH推送地址>
  6. 推送代码至Gitee远程仓库,输入:

    git push -u origin master
使用 -u 选项的好处是,一旦你设置了上游(upstream)引用,之后你只需要运行 git push 而不需要指定分支,Git 就会自动推送到你之前设置的上游分支。这使得重复的推送操作更加快捷和方便。

例如,如果你第一次推送本地的 master 分支到远程仓库,并且使用了 -u 选项:

git push -u origin master

之后,你只需要运行:

git push

Git 就会知道你想要推送到 originmaster 分支。


三、常见错误

(一)git remote add origin <你的SSH推送地址>时提示error: remote origin already exists.

这通常发生在以下几种情况:

  1. 已经添加过远程仓库:你可能之前已经添加过远程仓库,所以再次尝试添加时会出现这个错误。
  2. 克隆的仓库:如果你是通过 git clone 命令克隆的仓库,那么 origin 远程仓库会自动被设置好,无需再次添加。
  3. 重复操作:你可能不小心重复执行了添加远程仓库的命令。

解决方案

如果你确实需要添加一个新的远程仓库,或者需要更新现有的远程仓库地址,你可以采取以下步骤:

  1. 检查现有的远程仓库
    使用 git remote -v 命令查看当前配置的远程仓库及其 URL。

    git remote -v
  2. 移除现有的远程仓库
    如果你确定要替换现有的远程仓库,可以使用 git remote remove 命令移除它。

    git remote remove origin

    这将移除名为 origin 的远程仓库。

  3. 重新添加远程仓库
    移除后,你可以重新添加新的远程仓库。

    git remote add origin <new-repository-url>
  4. 更新远程仓库 URL
    如果你只是想更新现有的远程仓库 URL,可以使用 git remote set-url 命令。

    git remote set-url origin <new-repository-url>
  5. 检查并验证
    再次使用 git remote -v 命令检查远程仓库的 URL 是否正确设置。

    git remote -v

通过这些步骤,你可以管理你的远程仓库设置,并确保你的本地 Git 仓库正确地连接到远程仓库。


(二)git push -u origin master时提示error: src refspec master does not match any

可能存在以下几个问题:

  1. 本地分支不存在:你可能尝试推送一个不存在的本地分支。确保你已经在本地创建了 master 分支,并且有提交记录。如果本地仓库是空的,没有任何提交,那么你需要先进行至少一次提交。可以通过以下命令来提交:

    git init
    git touch README.md
    git add README.md
    git commit -m 'first commit'

    然后再次尝试推送。

  2. 远程分支名称不匹配:如果你的远程仓库(如GitHub)默认分支名被更改为 main 而不是 master,那么你需要将本地分支名也更改为 main,然后推送。可以使用以下命令重命名本地分支:

    git branch -m master main

    然后推送到远程的 main 分支:

    git push -u origin main
  3. 远程仓库地址错误:确保你的远程仓库地址是正确的。可以使用以下命令检查远程仓库的URL:

    git remote -v

    如果地址不正确,可以使用以下命令更改远程仓库地址:

    git remote set-url origin <正确的远程仓库URL>
  4. 远程仓库有新的提交:如果远程仓库有新的提交而你的本地仓库没有,你可能需要先拉取远程仓库的更改并合并到你的本地分支中。可以使用以下命令:

    git pull origin master --allow-unrelated-histories

    然后再尝试推送。


(三)我的本地分支的名字即不是master,也不是main,如何查看我的本地分支名字

  1. 使用 git branch 命令
    这个命令会列出所有本地分支。默认情况下,你当前所在的分支名前会有一个星号(*)标记。

    git branch
  2. 使用 git branch --all 命令
    这个命令会列出所有本地分支和远程分支。

    git branch --all

我的本地分支的名字是ai,如何将它改成master

基于你已经知道了本地所有分支的名字,如果不知道使用git branch命令查看,有星号(*)标记的是当前所在分支名字

  1. 确保当前不在 ai 分支上
    在重命名分支之前,你需要确保你不在 ai 分支上。如果当前就在 ai 分支上,你需要先切换到其他分支。可以使用以下命令切换到其他分支(例如 mainmaster):

    git checkout main
  2. 重命名分支
    使用 git branch -m 命令来重命名 ai 分支为 master

    git branch -m ai master
  3. 切换到新的 master 分支
    重命名完成后,你可以切换到新的 master 分支:

    git checkout master
  4. 推送到远程仓库
    如果你的分支之前已经推送到了远程仓库,你需要使用 -u 选项来更新远程仓库中的分支名。首先,确保你已经设置了上游(upstream)引用:

    git push -u origin master

(四)git push时提示 ! [rejected] master -> master (fetch first)

error: failed to push some refs to 'gitee.com:xxxxx'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

错误原因:Gitee认为你的远程分支比你的本地分支更先进(或内容更新)!如果确实如此,可以尝试如下解决:

  1. 拉取远程分支的更改
    使用 git pull 命令将远程分支的更改拉取到你的本地分支。这可能会触发一个合并操作,将远程分支的更改合并到你的本地分支中。

    git pull origin master

    如果你的本地分支有未提交的更改,这个命令可能会失败。确保在执行 git pull 之前提交或暂存你的所有更改。

  2. 解决合并冲突
    如果合并过程中出现冲突,Git 会提示你解决这些冲突。你需要手动编辑冲突的文件,然后完成合并。

    git mergetool
    git commit

    使用 git mergetool 可以帮助你更容易地解决冲突。

  3. 再次推送
    解决完所有冲突并提交合并后的更改后,你可以再次尝试推送到远程仓库。

    git push origin master
  4. 使用 git pull --rebase
    如果你想要避免合并提交,可以使用 git pull --rebase 来拉取远程分支的更改。这会将你的本地更改暂存起来,更新你的本地分支到远程分支的最新状态,然后再应用你的更改。

    git pull --rebase origin master

    如果在使用 rebase 时遇到冲突,解决冲突后,你需要使用 git rebase --continue 来继续 rebase 操作。

推送时设置 --force
如果你确定要覆盖远程分支的更改(这通常不推荐,因为它会丢失远程分支上的提交历史),你可以使用 --force 选项来强制推送。

git push --force origin master

请注意,--force 选项应该谨慎使用,因为它会重写远程分支的历史。