vscode中使用Git,结合Github
Posted 玩家_名狱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vscode中使用Git,结合Github相关的知识,希望对你有一定的参考价值。
文章目录
- 一、git查看和修改所有配置
- 二、准备工作
- 三、初始化本地仓库(git init)
- 四、添加到缓冲区(git add xxx)
- 五、提交到归档区(git commit)
- 六、添加分支(git branch -M xxx)
- 七、添加远程仓库(git remote add xxx xxx)
- 八、提交到远程仓库(git push -u xxx xxx)
- 九、登陆远程仓库
- 十一、查看操作日志(git log)
- 十二、回滚状态(git reset --mixed xxx)
- 十三、删除某个状态(git revert xxx)
- 十四、查看现在的状态(git status)
- 十五、分支(重点)
- 十六、获取远程仓库的更新(git fetch)
- 十七、删除暂存区文件
一、git查看和修改所有配置
git config [<options>]
常用几个命令:
-
查看系统配置
git config --system -l
-
查看用户的全局配置
git config --global -l/--list
-
添加用户的某个全局配置
git config --global --add user.email 2915713554@qq.com
-
删除用户的某个全局配置
git config --global --unset user.email
要想使用git必须要配置两个变量东西:user.name 用户名和 user.email 邮箱
git config --global --list
user.name=zhongxiaohang
user.email=2915713554@qq.com
用户的全局变量保存在系统用户目录下的.gitconfig
文件中
二、准备工作
先在Github新建一个仓库(Repositories),假设名为:gitlearn
然后在vscode中操作,安装 Git History(图形化查看历史) 和 Gitlens-Git supercharged 插件
三、初始化本地仓库(git init)
在本地新建一个目录作为工程目录,假设名字也叫gitlearn,然后在该目录下面使用命令初始化工程目录为Git仓库,使得能使用git服务。之后会在该目录下面生成一个叫.git的隐藏文件夹
git init
.git文件夹内有如下文件
四、添加到缓冲区(git add xxx)
新建一个AAA.py文件,然后在里面写入内容,保存。此时我们在vscode中看到的是这样的
使用命令git add AAA.py
把文件添加到缓冲区,之后看到的是这样的
这里只提交了一个文件。如果想提交当前目录下的所有文件,可以使用
.
号代表所有文件
五、提交到归档区(git commit)
git commit -m "参数-m代表添加注释"
命令把缓冲区的内容提交到归档区
归档区用于做版本的控制
六、添加分支(git branch -M xxx)
我们是多人合作开发,为了区分每个人,通常仓库设置有多个分支,每个人拥有一个分支。这里指定配置当前为main分支
七、添加远程仓库(git remote add xxx xxx)
我们是协同合作开发,并且Git是一个分布式版本管理工具,本身算是一个节点,Github算是一个节点,其它合作开发者也算是一个节点。我们需要一个管理者,我们代码都提交到他哪儿去,由他解决审核问题和冲突问题。这里选择Github作为远程仓库,我们的代码提交到Github,
git remote add origin https://github.com/zhongxiaohang/gitlearn.git
指定远程仓库,将该远程仓库叫做origin,该仓库指向了某个地址
git remote -v 查看有哪些远程仓库
git remote remove origin 删除origin仓库
如果中途不想使用这个仓库了,要改变仓库地址:git remote set-url origin https://github.com/zhongxiaohang/test.git
八、提交到远程仓库(git push -u xxx xxx)
git push -u origin main
- -u指定仓库地址,在添加远程仓库步骤中已经给出,这里直接使用远程仓库的名字即可
- main代表分支
提交之后就可以在远程仓库中看到AAA.py了
九、登陆远程仓库
在Github中手动删除提交后的AAA.py文件,然后在本地的vscode中再次提交,失败,并提示登陆
点击登录以使用Github之后,跳转到浏览器,然后点击登录,就出现如下画面,然后复制蓝色框中的内容
然后回到vscode中,点击下框中的正在登陆到github.com,就会跳出一个框,把上一步复制的内容放入框中,然后按回车,就登陆成功了
十、拉取远程仓库进行同步(git pull --rebase xxx xxx)
如果远端库有修改,而本地库和远端库的内容有差别,那么push操作就会报错,使用命令进行同步
git pull --rebase origin main
同步本地库和远端库,保持两个库之间的文件一致。
origin指定远程仓库的地址,main代表分支
发现同步了远程仓库的操作之后,本地的AAA.py文件也被删除了
十一、查看操作日志(git log)
每次提交都会被记录,然后对应一次日志,之后可以通过该日志的标识版本号,恢复到当时的状态
git reflog
或者 git log
十二、回滚状态(git reset --mixed xxx)
git reset --mixed 版本号
恢复到提交文件的时候
–mixed:归档区和缓冲区都一起回滚,只改变状态,不会改变文件内容
- git reset --mixed eb7ec7ce5a492fbb191846e5cf442b6628c606a3
–soft:只回滚归档区,回滚后使用git status命令查看状态会发现提示说某文件没有提交到归档区
- git reset --soft eb7ec7ce5a492fbb191846e5cf442b6628c606a3
–hard:归档区、缓冲区和工作区都一起回滚,版本号只使用版本号哈希值的前7位,会改变文件内容,危险
- git reset --hard eb7ec7c
然后点击符号,点击放弃更改,该文件就会恢复了
虽然文件恢复了,但是我们依旧不能提交,因为我们的状态是处于第一次提交的状态,但是远程仓库删除AAA.py文件是第二次提交的状态,因为远程仓库和本地仓库不一致,所以不能提交,要想能提交,必须先使得本地的仓库和远程仓库一致,而一致之后本地的AAA.py 文件又没有了,这就互相矛盾了。这说明远程仓库的改动必须谨慎。
十三、删除某个状态(git revert xxx)
git revert 版本号
当提交过很多次,也就是有很多个版本,而想删除某个版本时,也就是想删除某一次提交的文件时使用该命令git revert eb7ec7ce5a492fbb191846e5cf442b6628c606a3
然而已发生的事情不可改变,所以并不会真正删除文件,而是再一次提交,提交中不包含要删除的状态。
十四、查看现在的状态(git status)
git status
git中的文件有四种状态
- Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过
git add
状态变为Staged
- Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为
Modified
. 如果使用git rm
移出版本库, 则成为Untracked
文件 - Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过
git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改 - Staged: 暂存状态. 执行
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
十五、分支(重点)
如果有多个人同时开发,每个人都有自己的提交(归档区)记录,当push到远程仓库时,由于第二个人push的内容和第一个人push的内容不同,那么第二个人push就会失败。所以使用多分支的的方式开发,每个人一个分支,开发完成后再手动合并到主分支上
1、查看所有分支(git branch -v)
git branch -v
处在哪个分支,哪个分支前面就有个*号
2、创建分支本切换到新分支(git checkout -b xxx)
git checkout -b liangzai
创建分支liangzai并切换到该分支,同时在之前分支哪个状态使用该命令,那么新建的分支所处的状态就是之前分支的状态
本地仓库创建的分支,如果远程仓库没有该分支,就不能直接提交到远程仓库,因此还要在远程仓库中创建同名的分支
3、切换分支(git checkout xxx)
git checkout main
切换回主分支,再次使用git branch -v命令查看
4、合并分支(git merge xxx)
git merge 某个分支
首先我们在main分支下创建一个BBB.php文件,然后提交到远程仓库
切换到liangzai分支
然后在liangzai分支下新建一个CCC.go文件,然后同步远程仓库,再提交
在main分支下可以看到之前的BBB.php
切换到liangzai分支下
就能看到CCC.go还有main分支下的BBB.php
liangzai分支提交之后,在main分支中就可以合并liangzai分支了
即使在liangzai分支下也可以看到两个文件
此时在Github中的main分支下还没有CCC.go文件,因为我们还没有提交,提交之后就可以看到了
合并分支处理冲突
增加冲突
使用上一步合并的分支,然后在liangzai分支下修改BBB.php文件内容
切换到main分支,可以看到BBB.php文件的内容没有发生改变,只是在liangzai分支下改变,即使在liangzai分支下提交时没有报错,但是在Github中查看BBB.php文件时,都没有发生更改
此时在main分支下合并liangzai分支。之后提交即可,就可以在Github中的main分支中看到BBB.php文件修改后的内容了。划线处提示了修改的位置,只要main分支的管理员手动修改合并好代码,然后提交即可。
但是liangzai分支中没有修改,因为我们没有在liangzai分支下提交代码
此时只要在liangzai分支下提交即可
修改冲突
在liangzai分支下修改了BBB.php文件的第一行内容,然后切换到main分支下合并,如下图
删除冲突
过程和修改冲突的过程一致,只是这里是删除了第一行
合并时可能多个分支都修改了同一个文件,就会发生冲突
十六、获取远程仓库的更新(git fetch)
git fetch
如果其它人先push到了远程仓库,导致本地本地仓库记录的远程仓库状态有差别,就会导致自己push失败,可以使用该命令获取远程仓库发生了什么改变。然后在本地的main分支下使用命令
git merge origin/main
命令合并远程仓库到本地的主分支上。其实,上面的两个命令加起来相当于
git pull --rebase origin main
一个命令
十七、删除暂存区文件
有时在工程目录下的一些文件我们不能提交到仓库,如测试文件等。但是我们误使用git add .
把所有文件都添加进暂存区了,此时我们想要删除一些文件
先创建新文件,然后添加到暂存区
然后删除暂存区的某个文件,可以发现A变成U了
以上是关于vscode中使用Git,结合Github的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程
VSCode自定义代码片段15——git命令操作一个完整流程