git学习
Git学习
这里还有一个很好的总结网站:https://mp.weixin.qq.com/s/Q_O0ey4C9tryPZaZeJocbA
概述
- git在实际开发中的运用场景非常多,比如:备份,代码还原,协同开发,追溯问题代码的编写人和时间。
==版本控制器的方式==
a.集中式版本控制工具,比如:svn,cvs
b.分布式版本控制工具,比如:git
二者的差别很大,集中式中,版本库是存放在中央服务器中的,需要的代码都是提交到中央服务器或从中央服务器下载;分布式中则没有中央服务器,会有一个共享服务器,每台电脑都有自己的本地仓库存放着自己的一个完整的版本库。
git的配置
==设置用户信息==
当不跟设置信息的名称时就是查询用户的信息
给常用命令设置一个别名
|
获取本地仓库
- 新建一个目录作为本地仓库,这里直接在桌面建一个git_test目录
- 用 git init 初始化本地仓库
能看到.git文件就成功了
git的常用命令
Git工作目录下对于文件的修改会存在几个状态(除了.git目录的都叫工作目录)
接下来新建一个file01.txt文件来进行测试命令,用touch指令
|
git log [option]还有更多的参数,这里详细列出来
- –all 显示所有分支
- –pretty=oneline 将提交信息显示为一行
- –abbrev-commit 使得输出的commitid更简短
- –graph 以图的形式显示
==版本回退==
|
commitID可以用git log查看
==添加文件至忽略==
有些文件我们不需要git管理,可以将他们添加到gitignore文件中即可
|
一些示例
git分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来, 以免影响开发主线。
常用分支相关命令
查看本地分支
git branch
创建本地分支
git branch 分支名
切换分支
git checkout 分支名
git checkout -b 分支名 (直接切换到一个不存在的分支并创建该分支)
合并分支
一个分支上的提交可以合并到另一个分支
git merge 分支名称
比如dev分支要合并到master需要先切换到master主线,再get merge dev
删除分支
不能删除当前分支,只能删除其他分支
git branch -d b1 删除分支时,需要做各种检查
git branch -D b1 不做任何检查,强制删除
git远程仓库
这是一个总结的工作流程图:
使用ssh绑定gitee
用git来绑定gitee:
//生成ssh公钥,可以使用-f参数指定生成的文件名,比如:-f "id_rsa_gitee"
ssh-keygen -t rsa//生成的ssh密钥会默认在~/.ssh下面,如果生成过了也会直接覆盖,所以有多个密钥时要记得备份(在Windows的c盘用户目录下可以找到)Gitee设置公钥
将~/.ssh下的id_rsa.pub公钥复制到下面的地方
绑定之后可以去验证ssh能否连接到gitee,这里选择用在~/.ssh下新建一个config文件来配置,这样可以连接gitee也行、github也行,参考这篇文章:https://blog.csdn.net/weixin_40402743/article/details/124484633
config文件中的配置如下,我配github的时候配置了邮箱,gitee则没有
#github
Host github.com
User <生成密钥时指定的邮箱邮箱>
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
Port 443
#gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee使用ssh -T git@gitee.com验证
远程仓库操作
添加远程仓库
|
推送远程仓库
|
这是远程推送的完整指令
|
-f表示强制推送,和远端代码修改同一块地方时可能会出现冲突。
–set-upstream:推送到远端的同时并且建立和远端分支的关联关系,这样当当前分支已经和远端分支关联时,则可以省略分支名和远端名
克隆远程仓库
|
如果没有指定目录的话,就会创建一个默认目录,比如
|
就会取git_test作为目录名
抓取和拉取
抓取指令:git fetch [remote name] [branch name]
抓取就是将仓库里的更新都抓取到本地,不会进行合并
如果不指定远端名称和分支名,则抓取所有分支
拉取命令:git pull [remote name] [branch name]
拉取就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
如果不指定远端名称和分支名,则抓取所有并更新当前分支
这里可以看到fetch之后的分支并没有合并到当前的master,接下来再进行 git merge origin/master
可以看到成功合并了(这里可以写上分支名),git pull就相当于合并了这两步
解决冲突
当A和B修改同一个文件时会出现冲突,这里模拟一下同时修改file01.txt文件,其中一个先提交
这里可以看到右边想要进行合并出现了冲突,因为修改了同一块地方,再看一下file01.txt的内容
上面的是我们当前分支,下面的是远端分支,我们只需要在本地把他修改我们想要的样子然后提交再合并就可以了,比如这样
git绑定GitHub账号
git config --global --list //查看自己的用户名和邮箱,注意要和github保持一致 //如果不一致则自己去设置
可以看到有下列文件:![image-20231103174934422](http://cdn.clown2024.cn/202407151440117.png)
2. ```
ssh-keygen -t rsa -C "自己的邮箱"//这里生成ssh的密钥,会默认在~/.ssh目录下面回到github仓库添加密钥
然后复制.ssh下面的.pub公钥到下面的key中
ssh -T git@github.com //测试是否连通
出现下面的结果即代表成功