目录
集中式版本控制 编辑
分布式版本控制
Git
安装
bash-cmd-gui
基本使用
文件状态
git忽略文件
版本回退
远程仓库
gitee
凭证
SSH秘钥
管理远程仓库
开源协议
github
git标签
git 分支
master 分支
分支操作
集中式版本控制
分布式版本控制
Git
安装
Git
其实Git就是一个版本管理工具,能保存开发过程中的各种版本,其采用分布式版本控制,将版本上传至远程服务器的同时,还会建立一个本地服务器放置镜像
bash-cmd-gui
基本使用
在VS code中打开git mash
初始化git仓库,创建一个本地的仓库
git init
将当前文件下所有文件加入git
git add .
提交
git commit -m "名字"
查看提交信息
git log
文件状态
git add .可以使得所有文件都进入暂缓staged状态
git commit -m "name" 可以使得所有文件都处于已跟踪状态 unmodified
未跟踪状态untracked。比如说新建了一个文件
这个时候可以通过 git add . 使其变成暂缓staged状态
如果改变了某个文件,会变成modified状态
可以通过 git status来查看文件状态
git status
当我新添加了一个文件
这是untracked状态
当我执行 git add .
即文件处于暂缓区 staged
git忽略文件
在git上传时,有一些文件是不希望上传的,就可以通过 .gitignore 文件设置哪些文件被忽略
版本回退
可以退回到之前的某个版本
HEAD指向的是最后一次版本
使用git reset --hard XXXX 实现版本回退
远程仓库
gitee
登录 - Gitee.com
如果要从远程仓库下载到本地,需要通过
git clone xxxx
这里xxx是指仓库的地址
xxx可以是https ssh svn,这些在远程仓库里面都提供了
但是如果是私人仓库,那只拿到这些是不够的,还会需要凭证
凭证
也就是说,选项5的这个插件可以存储用户名和密码并自动使用,只需要手动输入一次
这个插件在安装git的时候就已经下载了,所以无须下载
可以通过
git config credential.helper
查看该插件的状态,如果结果是manager-core,则是启动了这个插件
输入用户名和密码后会自动下载
在改变下载的代码后,在通过git add . 和git commit -m "name"之后,使用
git push
将改变后的项目上传到远程仓库
SSH秘钥
也就是在本地生成一对ssh秘钥,分为公钥和私钥
生成方式是
ssh-keygen -t ed25519 -C"email"
其会生成一个秘钥文件,一般是放在c盘的user文件夹下的.ssh文件夹下,找到这个文件
然后打开.pub文件,拿到里面的内容,复制
然后将公钥配置到远程服务器,这里直接进gitee的设置里面设置,即粘贴进这个地方
配置成功
管理远程仓库
给本地仓库与远程仓库建立连接,生成的远程仓库名字默认为 origin
git remote add origin https://gitee.com/XXXX/gitdemo.git
但是建立连接是不够的,因为仓库里是有很多分支的,在不指定分支的情况下,在执行git pull或者git push时就不知道要从那个分支获取
所有要设置其上游分支
git branch --set-upstream-to=origin/master
git pull的作用是将远程仓库的内容下载到本地,并且和本地的仓库合并,其实是执行了git fetch和git merge两个操作
但是设置完上游分支之后,我们运行git pull 还是会报错,这里很显然是git merge报错
其实就是远程分支和本地分支是没有共同的祖先的(也就是说这两个分支在提交的历史上没有交点),所有在合并时会不被允许
可以使用
git merge --allow-unrelated-histories
允许不相关的分支进行合并
那么就可以正常使用git pull和git push
上述问题都是在使用git init创建本地仓库,然后与远程仓库进行连接时产生的问题,如果是直接采用git clone得到的本地仓库,那直接使用git pull和git push没有任何问题,因为使用git clone时已经建立了连接
开源协议
一般都是采用MIT许可证
github
一般操作和gitee一样,这里有一个区别是github创建的远程仓库的默认分支是main
那么在设置上游分支时,应该
git branch --set-upstream-to=origin/main
这个地方我们本地的分支叫master,而远程的分支叫main,当我直接push或者pull时,远程会找跟自己名字一样的本地分支,也就是main,而不能找到master
方法1、把我们本地的分支名也改为main
git branch -m master main
方法2、 给push和pull操作设置config
git config push.default upstream
方法3、创建新的分支main
git checkout --track origin/main
git标签
git 分支
master 分支
其实master分支就是自动创建时的默认分支名字,本质上是一个指针,指向最后提交的内容
每次提交,这个分支就会往后移
分支操作
可以采用
git branch xxxx
创建一个xxxx分支,然后使用
git checkout xxxx
转换到这个分支处,本质上是将HEAD指针指向了这个xxxx指针
也就是说,HEAD指向谁,现在就处于哪个分支
假设我分别输入
git branch test
git checkout test
git add .
git commit -m "xxx"
即我创建了一个test分支,并提交了xxx,则此时的指针指向应该是:
111指的是之前提交的内容
如果再输入
git checkout master
git add .
git commit -m "new"
查看和删除分支
在本地创建新的分支后可以直接推到远程,让远程也创造这个分支
git push origin xxxxxx
xxxx就是新的分支,但是在之后使用push还是得设置上游分支
git branch --set-upstream-to=origin/xxxxx