Git学习视频: 【狂神说Java】Git最新教程通俗易懂_哔哩哔哩_bilibili
版本控制概念:开发过程时 管理文件、工程,查看更改历史记录,备份以及回退先前版本的一种技术。
引入情景
个人本地文档版本: 项目1.doc
项目(1).doc
最终项目.doc
最终项目(1).doc
最终项目(2).doc
辞职信.doc
遗书.docx
由此引入代码项目版本控制工具 : Git
版本控制分类
1.本地版本控制
2.集中版本控制 SVN
3.分布式版本控制 Git
软件下载
Git 官网:Git 下载对应版本即可
关于Git项
Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
Git FAQS: git常见问题答疑页面
Git Release Notes: git 发行版本的说明页面
Bash常用命令
#Git Bash 常用命令
cd : 改变目录
cd .. 回退到上一个目录,直接cd进入默认目录
pwd : 显示当前所在的目录路径
ls : 都是列出当前目录中的所有文件
touch :新建一个文件 如touch index.js就会在当前目录下新建一个index.js
rm :删除一个文件, rm index.js就会把index.js文件删除
mkdir :新建一个目录,就是新建一个文件夹
rm -r 删除一个文件夹,rm -r src 删除src目录
mv 移动文件, mv index.html src index.html 是我们要移动的文件,src是目标文件夹
reset 重新初始化终端/清屏
clear 清屏
history 查看命令历史
help 帮助
exit 退出
# 表示注释
Git配置
#git配置查看
git config -l
#查看系统config
git config --system --list
#git个人用户配置global配置
git config --global --list
Git用户配置文件路径
C:\Users\用户名\ .gitconfig
可以在此文件内进行用户名和邮箱配置
或命令行配置
git config --global user.name "user" #名称
git config --global user.email xxxxxxx@qq.com #邮箱
Git基本理论
工作区域:
Remote Directory 远程的git仓库 (代码托管服务器)
Repository 资源库 (本地仓库,安全存储数据)HEAD指向最新放入仓库的版本
Stage/Index 暂存区 (临时存储代码)
Working Directory 工作目录 (平时存储代码)
引用狂神大大的图
工作流程
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
git管理文件状态
已修改(modified),已暂存(staged),已提交(committed)
git项目搭建【日常使用】
本地仓库搭建:
# 在当前目录新建一个Git代码库
$ git init
克隆远程仓库:
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]
文件状态
-
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
如何查看文件状态
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
上传操作代码
# git add . 添加所有文件到暂存区
# git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
# git push 上传到远程仓库
文件忽略(不加入版本控制)
在主目录下建立".gitignore"文件,此文件有如下规则:
-
忽略文件中的空行或以井号(#)开始的行将会被忽略。
-
可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
-
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
-
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
-
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
#注释后方内容
关于码云Gitee
SSH公钥 实现免密码登录
# 进入 C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen
ssh-keygen -t rsa #-t rsa 加密算法
了解更多: ssh-keygen -t rsa详解-CSDN博客
Git绑定
将远程git文件目录拷贝到项目中即可!
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]
FAQ(来自b站用户)
解决用ssh-key后仍须输入密码的问题
用户:鸡密啊
1、使用ssh方式克隆 git clone git@gitee.com:Name/project.git
就是说,在项目克隆/下载处,选择ssh方式的下载地址
2、如果你已经用https方式克隆了仓库,不必删除仓库重新克隆,只需将当前项目中的 .git/config文件中的
url = https://gitee.com/Name/project.git
修改为
url = git@gitee.com:Name/project.git
再次提交就不需要密码了!