一、准备知识
1.1 git能做什么
简单点说,就是一项管理多人协同开发项目的技术。
详细点说,可以实现以下功能:
-
实现跨区域多人协同开发
-
追踪和记载一个或者多个文件的历史记录
-
并行开发、提高开发效率
-
跟踪记录整个软件的开发过程
-
减轻开发人员的负担,降低人为错误
1.2 为什么要用git?
Git是目前世界上最先进的分布式版本控制系统。
温馨提示:以下是用的gitee演示的,可以先行去注册一个gitee账户
二、git环境配置
git官网网址(https://git-scm.com/),下载最新版本就好了;
下载速度会比较慢,这里提供两种解决方法:
- 使用镜像网站
- 使用迅雷下载
安装过程全部选下一步即可,安装好之后,在桌面右击,出现下图,那就说明安装成功了。
接下来,在C:\Users\下 --> 找到以你的账户名命名的文件夹 --> 找到.gitconfig文件 --> 用记事本打开,看看有没有如下图user的信息
如果没有,那你是不是没有注册gitee的账户,如果是,就先去注册gitee账户。这里的user信息也可以手动配置,步骤如下:
- 在桌面右击,找到Open Git Bash here
- 在弹出的命令提示符窗口中输入以下内容进行配置
$ git config --global user.name "xiyue" #名称
$ git config --global user.email "123456@qq.com" #邮箱
三、git项目搭建
3.1 创建一个有git的项目
方法1.初始化的方式创建(省事的话直接看方法2)
在桌面新建一个项目文件夹
在文件夹内右击,找到Open Git Bash here,接着输入 git init
#初识化一个git仓库
$ git init
命令执行后,会在你的当前文件夹下建立一个.git的文件夹(这个文件夹默认是隐藏文件夹),像下图勾选上这里之后才能看到
方法2.克隆gitee上的仓库
到gitee上新建一个仓库,点击这里的复制
接着回到命令提示符窗口,输入 git clone [url]
$ git clone [url] #把这里的[url] 换成你刚才复制的
接着,你可以在项目文件夹里面看到gitee上的项目到你的本地了!下图的test-git就是我从gitee上克隆下来的
3.2 在gitee上绑定SSH公钥
登录gitee --> 个人主页 --> 个人设置 -->SSH公钥
四、在vs code中集成git
4.1 用vs code 打开刚才用gitee上克隆下来的文件夹,然后新建一些项目文件。做好如下图的工作
项目写好以后,就是把项目提交到gitee上面了!
步骤:
1. git add . 把整个项目文件文件提交到暂存区
2. git commit 把暂存区的提交到本地
3.git push 把本地的提交到远程,这里也就是提交到gitee上
下面看图片
首先是在控制台输入 git add .
下面的git commit -m 后面跟你本次提交的备注信息,如果不需要备注信息的话,-m可以省略
接下来输入git push,这里还可以看到项目提交到的网址
上面步骤完成之后,就可以在gitee上看到你本地的文件了
上面的操作都是个人的,分支只有一个master,协同开发的话需要添加其他分支
五、说明:
5.1 分支操作
1.git分支中常用指令
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
分支操作需要找一个小伙伴一起练习,可能会遇到函数冲突的情况,根据编译器提示进行操作即可
5.2 忽略文件
有些时候我们不想把某些文件上传到gitee上,比如数据库文件,临时文件等,那可以通过建立忽略文件来解决。
在主目录下建立".gitignore"文件
此文件有如下规则:
-
忽略文件中的空行或以井号(#)开始的行将会被忽略。
-
可以使用通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
-
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
-
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
-
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
下面是例子
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
文章部分参考:视频同步笔记:狂神聊Git