在VS Code中使用Git和管理Github

本文详细介绍了如何在Visual Studio Code (VSCode) 中使用Git进行版本控制,包括初始化仓库、添加远程仓库、解决冲突、忽略文件、分支管理、合并分支以及gitfetch与gitpull的区别。通过实例演示了从创建新分支到提交和推送代码的全过程,旨在帮助开发者更好地在VSCode环境中协作和管理GitHub项目。
摘要由CSDN通过智能技术生成

在VS Code中使用Git和管理Github

项目推送到远程仓库

推送前需要设置好全局git

git config --global user.name "GDUT-Kyle"
git config --global user.email "123*****@qq.com"

在github或gitee新建好远程仓库后,让本地仓库与其产生联系

# 没有本地仓库的情况下
mkdir vscode_git
cd vscode_git
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/zhao_jia_jun/vscode_git.git
git push -u origin master
# 已经存在本地仓库的情况下
cd existing_git_repo
git remote add origin https://gitee.com/zhao_jia_jun/vscode_git.git
git push -u origin master

使用vscode 打开项目:
在这里插入图片描述

打开下面视图,添加一行文字## 测试提交
在这里插入图片描述

点击+ ;相当于git add .
在这里插入图片描述

如果点击单个文件的+,即仅添加该修改
在这里插入图片描述

点击打勾;等于git commit -m "备注信息";右边的箭头输入需要备注的信息。然后按Enter 确定。
在这里插入图片描述
在这里插入图片描述

回车之后,然后我们可以看到。所有的修改的文件,均已经提交到缓存区。1变成了 0;
在这里插入图片描述

撤销上一次commit:有的时候我们一不小心就git commit -m ‘commit message info’
解决办法,很简单,只需执行git reset HEAD~这条命令即可,即能保证你原本的修改还在,也能撤销本次提交失误。这种撤销上一次提交是比较好的,如果是版本回退的话也能解决这个问题,但是版本回退只适合于你本次提交并没有改动什么或者改动不大的情况。如果你改动太多,版本回退意味着着你需要重新复制一遍,当然了,解决这种问题的办法有很多,分支开发的方式也能解决这种问题。在vscode中的操作如下:
在这里插入图片描述

提交到远程仓库;git push origin master
在这里插入图片描述

到git仓库里面;查看。已经成功提交。
在这里插入图片描述

使用vscode解决冲突

在使用git的时候,经常会遇到冲突;这里简单的说明,如何使用vscode来解决冲突。
大家在提交代码的时候,一定要先拉取代码;不然就会造成冲突;

拉取代码 git pull origin master
在这里插入图片描述

我们在不同地方再拉去一次项目,然后分别在没有git pull的情况下在两个本地仓库中修改:
在这里插入图片描述

在这里插入图片描述

然后分别将两个仓库进行git push,提交到远程仓库的时候,这时候会报错
在这里插入图片描述

拉去远程代码,可以在vscode中查看冲突
在这里插入图片描述

然后可以选择保留哪一次更改:
在这里插入图片描述

合并完后重新commitpush上去。

忽略文件

在仓库目录下创建一个名为.gitignore的文件,列出要忽略的文件模式:

target          //忽略这个target目录
angular.json    //忽略这个angular.json文件
log/*           //忽略log下的所有文件
css/*.css       //忽略css目录下的.css文件
*.[oa]		// 忽略所有以.o或.a结尾的文件
*~			// 忽略所有以~的文件

文件.gitignore可以使用标准的glob模式匹配

  • 星号(*)匹配零个或多个任意字符;
  • [abc]匹配任何一个列在方括号中的字符;
  • 问号(?)只匹配一个任意字符
  • [0-9][a-z]等表示所有在这两个字符范围内的字符
  • 使用两个星号(*)表示匹配任意中间目录,比如a/**/z可以匹配a/za/b/za/b/c/z
# no .a file
*.a

# but do track lib.a, even though you're ignoring .a files above
!lib.a

# only ignore the TODO file in the current directory, not subdir/TODO
/TODO

# ignore all files in the build/ directory
build/

# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt

# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

在使用git的时候会遇到这样的情况,我们生产的一些class或者target的目录,我不能提交,这个时候我们需要使用gitignore,但是有的时候虽然添加了,但是不起作用。

情况:开发过程中,我们自己会在gitignore 文件中添加一些忽略项,然而,每次使用git status 的时候都未列在 untracked里面,比如用IDEA 开发,.idea 文件夹添加到该文件,再提交还是会提示。

原因:新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了。git清除本地缓存命令如下:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

移除文件

  1. 从工作目录中手工删除文件,并且从已跟踪文件清单中移除该文件
rm file.md
git rm file.md

下一次提交时,该文件就不在纳入版本管理。如果删除之前修改过并且已经放入暂存区域的话,则必须要用强制删除选项-f

  1. 我们想把文件从git仓库中删除(亦即从暂存区移除),但仍然希望保留在当前工作目录中。换句话说,文件保留在磁盘,但是并不想让git跟踪。可以使用.gitignore,也可以使用--cached
git rm --cached file.md

取消暂存的文件

如果我们已经使用git add file.md暂存了新的修改,但是后来发现该修改仍存在问题,需要撤销,则可以使用取消暂存操作:

git reset HEAD file.md

在vs code中的操作如下:
点击+暂存修改
在这里插入图片描述

查看git status
在这里插入图片描述

点击-撤销暂存:
在这里插入图片描述

查看git status
在这里插入图片描述

commit补充文件

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。此时,可以运行带有--amend选项的提交命令尝试重新提交:
例如:

git commit -m 'initial commit'
git add forgotten_file
git commit --amend

最终只会有一个提交,第二次提交将代替第一次提交的结果。

分支创建

指令:

git branch testing

这会在当前所在的提交对象上(HEAD)创建一个指针。值得注意得失,当前仍然在master分支上,因为git branch仅仅创建一个新分支,并不会自动切换到新分支中去。

可以简单地使用git log命令查看各个分支当前所指的对象。提供这一功能的参数是--decorate
在这里插入图片描述

在vscode中创建分支的操作:
在这里插入图片描述

输入创建的分支名
在这里插入图片描述

分支切换

首先可以使用git log --oneline --decorate查看当前指向哪个分支:
在这里插入图片描述

要切换到一个已存在的分支,需要使用git checkout命令。现在切换到新创建的testing分支去:

git checkout testing

这样HEAD就指向testing分支了。

再次查看当前指向哪个分支
在这里插入图片描述

可以看出,当前HEAD指向testing分支。

可以使用一条指令同时完成分支的创建和切换:

git checkout -b testing

它是下面两条指令的简写:

git branch testing
git checkout testing

使用vscode完成分支切换的操作:
在这里插入图片描述

选择相应的分支即可(或者可以新建分支):
在这里插入图片描述

下面不妨做个实验,在分支稍微做些修改并提交:

首先切换到新创建的分支,加一行修改后,常规地进行commitpush
在这里插入图片描述

之后在远程仓库中可以看到有新的分支:
在这里插入图片描述

分支合并

这个时候如果突然发现master存在一个BUG,需要我们回过头去修复的时候,应该切换回master去:
在这里插入图片描述

我们假设新建一个.cpp文件即可修复该BUG,我们可以先基于master新建一个分支hotfire,然后在该分支下新建文件:
在这里插入图片描述

解决该BUG后,我们需要发布修订版,就是把master指针挪到hotfire位置,也就是合并分支:

git checkout master 
git merge hotfire

vscode 中的操作如下:
首先切换回master下:
在这里插入图片描述

选择合并分支:
在这里插入图片描述

接着master下也多了一个hotfire.cpp了。

使用指令查看当前的分支图:

git log --graph --decorate --oneline --simplify-by-decoration --all

在这里插入图片描述

由于当前master分支所指向的提交是当前提交(有关hotfire的提交)的直接上游,所以git只是简单的将指针向前移动。

现在关于hotfire的BUG问题已经解决后,我们应该先删除hotfire分支,因为我们已经不再需要它(master已经替代了它)——master分支已经指向了同一位置。

git branch -d hotfire

git fetch & pull的区别

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。

git pull则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值