初学git,以此记录在git学习过程中的笔记,以方便后续查阅。
git :一款开源分布式版本控制系统。git可以非常方便的进行版本控制,可以自如回退版本,方便日常编程,github,目前我是将其作为云端备份来用的,其功能远不止如此,后续再写。
git菜鸟教程包含git安装地址
1、电脑安装git客户端,注册github账号(若是不打算云端备份,可以不注册)
2、git 安装完后需要进行一写配置:
$ git config --global user.name "runoob" #自定义名称
$ git config --global user.email test@runoob.com #自定义邮箱,建议与github保持一致
3、Git bash使用Linux命令,因此需要熟悉一些常用文件操作命令:rm -rf,mv,cat ,cd …/,等
4、必要的一些概念:工作区 指在本地电脑中能看到的目录;暂存区 指放在.git目录下的index索引文件;版本库 就是.git文件夹,git init时会生成。工作区有任何改动都可以查询git status获知,改动后通过添加上传两步将其提交到版本库。后续可以通过版本号,快速的恢复被更改的文件。
在需要git的本地目录下右键鼠标,选择git Bash Here
之后在命令行输入:
git init
该命令执行成功后会在当前目录生成.git文件夹
添加测试文件到git缓存区,此命令也适用于文件夹
git add
git status
在这里我改了一行文件内容
可以用git diff命令查看不同
git commit -m '自定义版本备注'
或者直接用 git commit -am ‘name’
git commit --amend
git log
查看简洁信息及版本名称(常用)
git log --oneline
左边黄色字符串就是版本号,右边是自己定义的备注,蓝色箭头指向当前工作区使用的版本节点,回退时需要版本号。
$ git reset HEAD^ # 回退所有内容到上一个版本
$ git reset HEAD^ test.txt # 回退 test.txt文件的版本到上一个版本
$ git reset 052e # 回退到指定版本
HEAD^ 后面可以跟数字,为2时回退到上上版本,依次类推
git 分支操作类似于创建了一个目录副本,新创建的分支会包含原有的master目录结构。每当切换分支时,本地目录也会同时切换,比如在新分支下新建一个文件test.txt并添加到git,那么切换分支后test.txt将消失。在新分支内新建或删除文件一定要加上git,否则会直接更改目录结构。
git branch
创建分支时一定要查看暂存区是否有提交:git status
git branch branchname
或者
git checkout -b branchname
branchname是自定义分支名
合并前需要先提交分支内容
然后要切换回主支:git checkout 主支,然后使用下面指令合并
git merge branchname
分支合并会将被合并分支新建或删除的文件及更改更新到主支
合并完成后可以使用git log --graph查看分支图谱
git branch -d branchname
当在两个分支中对同一个文件做不同修改并提交时,在合并分支后会出现分支冲突,打开文件可以看到冲突内容
此时需要手动修改,然后git add
如果发现分支误删除了某一文件,可以使用
git checkout fileName
恢复文件
github官网注册
github与本地仓库之间传输数据使用SSH加密通信,需要配置验证信息,即公钥和私钥。
ssh-keygen -t rsa -C "[email protected]" #引号内为github上注册的邮箱
如果不考虑生成多个密钥的情况下,可以一路回车下去,会有生成出的一个符号画面
通常自用只需要生成一次钥匙就够了,默认新生成的密钥会覆盖旧的,有保存多个密钥的方法,csdn上有许多。生成的密钥一般都放在:C:\Users\xxx.ssh
.pub即公钥,用命令行cat查看,或者文本编辑器打开,将其内容复制到github的key一栏。
在github新建仓库(自用),选择私有,不指定许可权限即不开源,自述文件可以考虑是否添加,添加的话,需要先将远程仓库克隆到本地再添加本地文件上传。
在本地使用命令: git remote add origin 将本地git与远程仓库关联
git remote add origin git@github.com:virsing/Leetcode.git
然后将本地仓库提交到远程仓库,默认远程仓库由master改为main
git push -u origin main #远程仓库为空时
git push origin main #后续提交时去掉-u,之后也不需要了
1、error: src refspec xxx does not match any / error: failed to push some refs to …
现在的github工程默认为main,而git本地默认为master
解决方法:
统一远程和本地仓库名
git branch -m oldBranchName newBranchName
2、Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal:无法访问远程仓库
请确认有正确的权限和远程仓库存在
可能原因:
1、SSH密钥没有配置,或配置错误,查看命令记录或再配置一遍,可能是邮箱错误
2、未关联远程仓库或关联错误,
git remote remove origin #删除关联
git remote add origin [email protected]:XXX/XXX.github.io.git #添加关联
git push origin master #上传
3、main和master问题,转上问题1
4、本地未提交README自述文件,github上添加了自述文件,本地没有添加
解决方法:
touch,add, commit添加文件,然后在push
或者将远程clone到本地再push
还有一种错误我忘了,好像是提示密钥问题,但是配置密钥会显示已有密钥连接
解决方法是在C:\Users.ssh下新建一个config文件,在文件中写入配置信息如下
Host github.com
User [email protected]
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443