我作为初学者根据我自己的经历写的学习笔记,希望对萌新有所帮助。
一、Git
Git是什么
Git是一个开源的分布式版本控制系统,用于追踪代码变更、支持非线性开发并促进多开发者协作。
Git如何下载
直接去官网Download下载最新版本https://git-scm.com/downloads
小技巧:不要用浏览器自带的下载工具,贼慢,直接用迅雷下载
Git如何安装
都是英文,作为萌新建议直接下一步下一步下一步,直到安装结束。
Git如何使用
- 在电脑上新建一个项目文件夹(如有请忽略)
- 在项目文件夹里右键选择
Open Git Bash here
初始化本地仓库,输入:
git init
(该命令通常每个项目执行一次即可)
- 新建代码文件或移入你的代码文件
将当前目录下的所有文件添加到暂存区(不可见),输入:
git add .
如果你不放心想查看状态(放心可跳过),可以输入:
git status
提交暂存区代码到本地仓库,输入:
git commit -m "自定义备注信息"
之后的每次代码修改,你只需要执行步骤5、6、7
Git如何如何回退版本
回退改动保存前的上一个版本,可以输入:
git restore
想回退到其他commit的版本,首先需要查看历史提交日志,获取包括提交的哈希值、作者、提交日期和提交消息等。所以首先需要输入:
git log
按q结束查看获取到哈希值后,回退指定版本可以输入:
git reset --hard <哈希值>
请注意,git reset --hard是一个破坏性操作,它会丢弃指定版本之后的所有提交和更改。在执行这个操作之前,请确保你不需要这些更改,或者已经做好了备份。
二、Gitee
Gitee是什么
Gitee是一个基于Git的代码托管和协同开发平台,旨在为开发者提供高效、便捷的开源协作服务。
Gitee如何使用
在Git中生成SSH公钥,Windows用户在电脑桌面空白处右键选择
Git Bash here
,输入:ssh-keygen -t ed25519 -C "Gitee SSH Key"
中间通过三次回车键确定。然后在Git Bash窗口里找到“Your public key has been saved in”,后面就是你的公钥所在位置,找到并用文本编辑器打开它。
使用SSH公钥可以让你在你的电脑和 Gitee 通讯的时候使用安全连接
- 注册账号(略)
- 添加SSH公钥
路径:Gitee页面点个人头像——设置——左侧栏“SSH公钥”——随便取个标题,把步骤1获取到的公钥复制粘贴进去
想详细了解可以访问:Gitee帮助-SSH公钥设置
如何把本地代码推送到Gitee代码仓库
- 在Gitee新建仓库,获取仓库的SSH推送链接(略)
- 在项目文件夹里右键选择
Open Git Bash here
- 一顿add、commit操作(执行过可略过)
在Git Bash里进行一个全局设置,逐一输入并回车:
git config --global user.name "China_XX" git config --global user.email "XXX@139.com"
根据Gitee提供给你的代码来执行即可建立本地仓库与Gitee远程仓库的交互,输入:
git remote add origin <你的SSH推送地址>
推送代码至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.
这通常发生在以下几种情况:
- 已经添加过远程仓库:你可能之前已经添加过远程仓库,所以再次尝试添加时会出现这个错误。
- 克隆的仓库:如果你是通过
git clone
命令克隆的仓库,那么origin
远程仓库会自动被设置好,无需再次添加。 - 重复操作:你可能不小心重复执行了添加远程仓库的命令。
解决方案
如果你确实需要添加一个新的远程仓库,或者需要更新现有的远程仓库地址,你可以采取以下步骤:
检查现有的远程仓库:
使用git remote -v
命令查看当前配置的远程仓库及其 URL。git remote -v
移除现有的远程仓库:
如果你确定要替换现有的远程仓库,可以使用git remote remove
命令移除它。git remote remove origin
这将移除名为
origin
的远程仓库。重新添加远程仓库:
移除后,你可以重新添加新的远程仓库。git remote add origin <new-repository-url>
更新远程仓库 URL:
如果你只是想更新现有的远程仓库 URL,可以使用git remote set-url
命令。git remote set-url origin <new-repository-url>
检查并验证:
再次使用git remote -v
命令检查远程仓库的 URL 是否正确设置。git remote -v
通过这些步骤,你可以管理你的远程仓库设置,并确保你的本地 Git 仓库正确地连接到远程仓库。
(二)git push -u origin master时提示error: src refspec master does not match any
可能存在以下几个问题:
本地分支不存在:你可能尝试推送一个不存在的本地分支。确保你已经在本地创建了
master
分支,并且有提交记录。如果本地仓库是空的,没有任何提交,那么你需要先进行至少一次提交。可以通过以下命令来提交:git init git touch README.md git add README.md git commit -m 'first commit'
然后再次尝试推送。
远程分支名称不匹配:如果你的远程仓库(如GitHub)默认分支名被更改为
main
而不是master
,那么你需要将本地分支名也更改为main
,然后推送。可以使用以下命令重命名本地分支:git branch -m master main
然后推送到远程的
main
分支:git push -u origin main
远程仓库地址错误:确保你的远程仓库地址是正确的。可以使用以下命令检查远程仓库的URL:
git remote -v
如果地址不正确,可以使用以下命令更改远程仓库地址:
git remote set-url origin <正确的远程仓库URL>
远程仓库有新的提交:如果远程仓库有新的提交而你的本地仓库没有,你可能需要先拉取远程仓库的更改并合并到你的本地分支中。可以使用以下命令:
git pull origin master --allow-unrelated-histories
然后再尝试推送。
(三)我的本地分支的名字即不是master,也不是main,如何查看我的本地分支名字
使用
git branch
命令:
这个命令会列出所有本地分支。默认情况下,你当前所在的分支名前会有一个星号(*)标记。git branch
使用
git branch --all
命令:
这个命令会列出所有本地分支和远程分支。git branch --all
我的本地分支的名字是ai,如何将它改成master
基于你已经知道了本地所有分支的名字,如果不知道使用git branch命令查看,有星号(*)标记的是当前所在分支名字
确保当前不在
ai
分支上:
在重命名分支之前,你需要确保你不在ai
分支上。如果当前就在ai
分支上,你需要先切换到其他分支。可以使用以下命令切换到其他分支(例如main
或master
):git checkout main
重命名分支:
使用git branch -m
命令来重命名ai
分支为master
:git branch -m ai master
切换到新的
master
分支:
重命名完成后,你可以切换到新的master
分支:git checkout master
推送到远程仓库:
如果你的分支之前已经推送到了远程仓库,你需要使用-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认为你的远程分支比你的本地分支更先进(或内容更新)!如果确实如此,可以尝试如下解决:
拉取远程分支的更改:
使用git pull
命令将远程分支的更改拉取到你的本地分支。这可能会触发一个合并操作,将远程分支的更改合并到你的本地分支中。git pull origin master
如果你的本地分支有未提交的更改,这个命令可能会失败。确保在执行
git pull
之前提交或暂存你的所有更改。解决合并冲突:
如果合并过程中出现冲突,Git 会提示你解决这些冲突。你需要手动编辑冲突的文件,然后完成合并。git mergetool git commit
使用
git mergetool
可以帮助你更容易地解决冲突。再次推送:
解决完所有冲突并提交合并后的更改后,你可以再次尝试推送到远程仓库。git push origin master
使用
git pull --rebase
:
如果你想要避免合并提交,可以使用git pull --rebase
来拉取远程分支的更改。这会将你的本地更改暂存起来,更新你的本地分支到远程分支的最新状态,然后再应用你的更改。git pull --rebase origin master
如果在使用
rebase
时遇到冲突,解决冲突后,你需要使用git rebase --continue
来继续 rebase 操作。
推送时设置 --force
:
如果你确定要覆盖远程分支的更改(这通常不推荐,因为它会丢失远程分支上的提交历史),你可以使用 --force
选项来强制推送。
git push --force origin master
请注意,--force
选项应该谨慎使用,因为它会重写远程分支的历史。