基本概念:修改记录
1、每个修改记录都有对应的id
2、当发现修改有问题时,可以进行回滚操作。
3、回滚的本质是一次新的更新以复原修改。但是如果不是针对最新记录进行回滚,会出现冲突。
这里需要举例说明
基本概念:分支
1、分支是一个远程仓库中的多个独立副本,副本之间是互不影响的。他们的文件修改记录都是相互独立的。
2、一个远程仓库默认有一个主分支,默认情况下文件会被存储到主分支。
3、创建分支时,需要基于:某个修改记录\某个分支\或者某个tag
4、一个分支的所有修改可一次全部更新到别的分支,称为合并。合并实际上是对目标分支提交一次新修改。但是如果目标分支则修改过某个文件,则可能产生冲突。
基本概念:TAG
1、标记某个修改记录,用于归档对应的分支下截止到这次修改的文件。有点像是游戏中的存档点。
常见操作:git clone 将仓库克隆到本地。
1、克隆的时候默认克隆的分支是主分支
常见操作:git branch/checkout 分支操作
我们clone下来的是一个仓库,仓库有不同的分支,我们可以进行分支的切换。
1、在本地副本下,采用git branch 指令查看仓库的所有分支
2、并且用git checkout xxx进行分支的切换。也就是说,我们可能下载下的是主分支,但是可以在本地直接利用这个命令进行分支切换,这样本地的分支就变成了分支xxx。
3、如果当前副本已经进行了修改,还未提交修改,则无法切换分支。
4、基于3,如果需要使用多个仓库分支代码,建议克隆多个仓库副本
5、如果下载本地副本以后,有别的用户更新了远程仓库,那么当前本地仓库和远程仓库是不一致的。如果此时提交修改,则可能发生冲突。
如果我们在本地副本修改了文件集合A,远程仓库的文件集合B发生了更新,而A和B有交集,也会出现更新冲突导致的更新失败。
问题:如何处理冲突呢?
git stash //将本地的修改存储到临时堆栈中
git pull //获取远程仓库的最新副本
git stash pop// 将之间暂存的本地修改恢复
//可以放心的执行上传操作了
//可以放心的执行上传操作了
问题:如果当前本地我们所在的分支是A分支,而该仓库实际上有多个分支,那么git pull指令更新的是A分支,还是仓库的所有分支?
git pull命令只会更新当前所在的本地分支,而不会同时更新其他分支
git pull的本质是两个操作的组合:
1、git fetch:从远程仓库下载所有分支的最新提交记录(但不合并到本地)。
2、git merge:将当前分支对应的远程分支(如origin/main)合并到本地当前分支。
git 基本配置
git 有三种基本配置:
git config --local ///对当前仓库生效
git config --global ///对当前用户的所有仓库生效,会修改~/.gitconfig 或 C:\Users\你的用户名\.gitconfig
git config --system ///对当前系统下所有用户生效
最常见的配置如下,只需要在第一次使用git的时候配置即可,以后上传代码都不需要再配置了!!!
git config --global user.name # 查看全局用户名
git config --global user.email # 查看全局邮箱
git——与服务器的认证配置
ssh-keygen -t rsa -C "your email"
直接按三次回车,可以看到公钥。
在代码管理平台的profile Settings中 找到SSH Keys, 添加SSH Keys,将公钥复制到Public Key即可