一、创建仓库
1、初始化操作创建本地仓库:
先创建一个文件夹,然后再该文件右键 ----git Bash here----执行git init创建仓库
2、在远程仓库中完成--clone远程仓库:
将项目从git仓库中克隆到本地仓库:git clone 要克隆项目的链接
**注意:**若不指定,clone时,本地clone项目文件的名称就是git仓库中文件的名称, 另外clone时还可以在链接的后面 设置文件名称
二、对创建的仓库进行配置
配置仓库时 需要知道操作者是谁:配置名字和邮箱
* 对某个仓库配置:
* 全局配置,所有的仓库都配置
**注意:**对那个仓库进行操作,就进入相应的仓库目录下打开命令窗口执行相应命令
三、仓库文件的移动
1、 仓库的工作原理:
push和pull是在创建完本地仓库、且与远程仓库建立关联的基础上完成的
2、仓库工作区与暂存区之间文件的移动:
** git add 文件名--将文件添加到仓库暂存区:
** 将工作区某一类的文件都移动到暂存区:
** git rm --cached将暂存区的某个文件移到工作区
** git status用来查看仓库暂存区的状态
若执行该命令时,工作区的内容没有移动到暂存区,则会显示:
3、仓库工作区与存储区之间文件的移动:
** 将存储区的文件提交到暂存区 -m后面的为提交信息:会返回提交版本号、模式、文章类型等信息
** 通过git log命令查看提交信息,在命令后面加上--oneline可以使提交信息在一行展示
** 修改/删除仓库中的文件:
仓库中的文件修改/删除之后,还需要通过git add和git commit -m 提示信息两个命令将其放入存储区 ---要对哪个文件操作git add后就是哪个文件的名字
** 将误删除的文件从存储区恢复到工作区:git restore 文件名
注意:此时删除操作并未提交到存储区 ,若已经提交,需要使用另一个命令-git reset --hard 上一版本的版本号(即要恢复的版本号),此方法在恢复后,会将已删除文件在提交时的版本号删除。
另一种恢复方法 :git revert 版本号(要恢复的是该版本号之前的一个版本)--- 此种既可以在恢复后保留之前版本信息,又可以恢复
四、分支操作
1. 创建分支:
使用 git branch 分支名 创建分支,其是基于提交操作的----即只有在提交过一次/ refs中head文件不为空之后才能创建分支
2. 查看分支:
git branch -v ----- 带 * 表示当前所处的分支
3. 更改当前分支:
git checkout 要切换的分支名
创建时并更改分支: git checkout -b 分支名
4. 删除分支:
git branch -d 分支名
5. 合并分支:
情景:有两个分支master和user,这两个分支均有c.txt文件,需要将user分支合并到master分支上去
实现 :切换到master分支,执行 git merge user 开始合并,合并结果显示冲突,点开maser分支的c.txt 手动解决冲突,并重新将c.txt文件提交到存储区,就可以·实现合并
注意: 要合并到哪一个分支就切换到哪一个分支执行上述操作
6. 给文件增加tag
给文件增加的标签tag可以用来代替版本号 -- git tag 标签名 版本号 ,因为在查找某一版本之前的提交记录时,就可以使用 git log 标签名 来代替 git log 版本号
7. 删除tag
git tag -d 标签名
8. 利用标签名进行分支创建
将当前标签名所在的提交进行分支创建 --- git checkout -b 新分支名 标签名
五、远程仓库与本地仓库的关联
1. 添加关联:
git remote add origin 远程仓库的地址
2. 删除关联
git remote remove origin
- 修改关联
git remote rename origin
六、将项目提交到远程仓库
这一步之前需要提交所有有修改的文件到存储区,且应保证本地仓库与远程仓库建立了链接,然后执行 git push origin 就可以推到远程仓库
当拉取远程仓库最新的数据时,执行git pull origin 就可以拿到远程仓库中最新的内容
七、在vscode中使用
首先第一次需要从仓库中创建远程仓库 -- git clone , 然后在本地仓库中编写代码,编写完成之后,点击 + 将数据保存到暂存区--如下图1和2, 之后输入提交信息,点击提交将数据commit到存储区,如下图3,
将数据push到远程仓库时,如果远程数据没有发生更改,则能push成功,若已更改,则push会发生冲突,需要再pull一边仓库,然后通过手动合并解决冲突,之后就可以push上去。
注意:重新pull数据时,需要将数据都commit到存储区 ,避免发生覆盖; 其次每次push数据之前都去pull数据,查看是否发生冲突,不冲突直接提交,否则修改后提交。