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

一、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 就会知道你想要推送到 origin 的 master 分支。


三、常见错误

(一)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 分支上,你需要先切换到其他分支。可以使用以下命令切换到其他分支(例如 main 或 master):

    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 选项应该谨慎使用,因为它会重写远程分支的历史。