1.Git使用
0.Git的常用最基本操作
# 1.将远程仓库克隆到本地
git clone 远程仓库的地址 [本地目录名]
# 2.将被跟踪的文件处于暂存状态
git add filename # 指定某个文件
git add . # 将所有未跟踪的文件添加到暂存区
# 3.提交更新(暂存区中有文件等待被提交到本地Git仓库保存)
git commit -m "提交描述"
# 4.拉取远程分支的最新代码
git pull
git pull origin 远程分支名:本地分支名
# 5.将本地仓库代码上传到远程仓库origin的指定分支
git push origin 本地分支名:远程分支名
git push -u 远程仓库的别名 本地分支名称:远程分支名称
# 6.新建分支
git branch 新分支的名字
# 7.切换分支
git checkout 指定的分支名
# 同67,创建指定的新分支并切换到新分支上
git checkout -b 新分支名称
# 8.根据指定的提交id回退到指定版本。
#先查看历史的提交ID信息
git log --pretty=oneline --abbrev-commit
#根据指定的提交ID回退到指定的版本
git reset --hard <Commit id>
# 9.创建指定的新分支并切换到新分支上
git checkout -b 新的分支名或者git switch -c 新的分支名
# 10.查看所有分支
git branch -a # 查看所有分支,包括本地和远程
git branch -vv # 查看本地分支与远程分支对应关系
# 11.在主分支上合并分支
#切换到主分支master上
git checkout master
## --squash会暂停commit提交。要不然一个merge会自动提交commit。
git merge --squash 指定的子分支名
# 12.将本地的项目提交到远程的Git仓库
1. 初始化本地GIt仓库,并将文件的修改提交到本地的Git仓库中
git init
git add filename
git commit -m "提交描述信息"
2. 将本地仓库和远程仓库进行关联,并将远程仓库命名为origin
git remote add origin https地址
3. 将本地仓库中的内容推送到远程仓库origin中。
git push -u origin master #本地分支和远程分支相同
## 13.查看工作区修改的文件或者具体内容
// 查看工作区修改过的文件
git status
// 查看修改的具体内容
git diff 文件路径
## 14.新建本地分支与远程分支相关联
git checkout -b xxx origin/xxx
1.版本控制系统的分类
- 本地版本控制系统:单机运行,使得维护文件版本的操作工具化
- 集中式版本控制系统:联网运行,支持多人协作开发。性能差,用户体验不好。如SVN
- 分布式版本控制系统:联网运行,支持多人协作开发。性能优秀,用户体验好。如Git。
2.Git的三个区域
- 工作区:处理工作的区域。包含.git文件夹的目录就是工作目录,主要用于存放开发的代码。工作区中的文件包含未跟踪和已跟踪两种状态。
已跟踪的文件指的是已经被纳入版本控制管理的文件
- 暂存区:已完成工作的临时存放区域,等待被提交。.git文件夹中有很多文件,其中有一个index文件就是暂存区。
- Git仓库:最终的存放区域
3.Git中的三种状态
- modified:已修改,表示已经修改,但是还没有将修改的结果放到暂存区。
- staged:已暂存。表示对已修改的文件的当前版本做了标记,使之包含在下次提交的列表中。
- committed:已提交。表示文件已经安全的保存在本地的Git仓库中。
4.基本的Git工作流程
- 在工作区中修改文件
- 将想要下次提交的已经更改的文件进行暂存
- 提交更新,找到暂存区中的文件,将其提交到本地git仓库
- 将代码push到远程仓库
5.配置用户信息
- 设置自己的用户名和邮件地址(来记录谁对项目进行了操作)
// --global表示读写的是用户目录下的配置文件
git config --global user.name "xxx"
git config --global user.email "xxx"
- Git的配置文件
- 全局配置文件:通过上述的两条命令配置的用户名和邮箱地址会被写入到C:/users/用户文件夹/.gitconfig文件中。这个文件就是Git的全局配置文件
- 被Git管理的项目的Git目录下的配置文件config,这个配置只针对当前项目有效。
- 检查配置信息
# 查看所有的全局配置项
git config --list --global
# 查看指定的全局配置项
git config user.name # 查看配置的用户名
git config user.email# 查看配置的邮箱地址
- 删除配置信息
git config --global --unset user.xxx
6.获取帮助信息
获取帮助信息使用git help <verb>
命令
# 打开git config命令的帮助手册
git help config
# 获取git config命令的快速参考
git config -h
7.获取Git仓库的两种方式
1.将尚未进行版本控制的本地目录转换为Git仓库
- 在项目目录下,鼠标右键打开Git Bash
- 执行git init命令将当前目录转化为Git仓库。git init命令会创建一个名为.git的隐藏目录,这个目录就是当前项目的版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
2.从其他服务器上克隆一个已经存在的Git仓库
8.工作区中的文件的四种状态
- 工作区(工作目录)的概念:包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
9.检查文件的状态
git status
# 以精简的方式显示文件状态
git status -s
git status --short
10.跟踪新文件:将未跟踪的文件加入暂存区
# 跟踪一个文件,这条命令执行后,将使得被跟踪的文件处于暂存状态,
git add filename
# 向暂存区中一次性添加多个文件
git add . # 不推荐使用
11.提交更新:将暂存区中的文件修改提交到本地仓库
# 暂存区中有文件等待被提交到本地Git仓库(当前分支)保存
# -m:表示对提交的内容作进一步的描述
git commit filename -m "对提交的内容作进一步的描述" # 提交指定的文件
git commit -m "描述" # 将暂存区中的文件全部提交
12.对已提交的文件进行修改了,想再暂存
# 再次运行git add filename命令即可
git add filename
13.撤销对文件的修改(丢弃工作区的修改)
把工作区中对文件的修改,还原成Git仓库中所保存的版本。
# 注意:前提是该文件已经提交到本地Git仓库的分支中
git checkout -- filename
14.将暂存区中的文件取消暂存
#把暂存区的修改撤销掉(unstage),重新放回工作区
#方式1:从暂存区中移除对应的文件
git reset HEAD filename #HEAD表示当前分支的最后一次提交
# 方式2
git restore --staged filename
#从暂存区中移除多个文件
# 方式3
git rm --cached 文件名
15.跳过使用暂存区,快速提交文件
Git的标准工作流程是工作区到暂存区到本地Git仓库。现在跳过暂存区,直接将工作区中的修改提交到本地Git仓库。
git commit -m "提交描述信息" -a
16.移除文件
- 从本地Git仓库和工作区中移除相应的文件
git rm -f filename
git commit -m "提交信息"
- 移除Git仓库中的文件,保留工作区中对应的文件
git rm --cached filename
17.忽略文件
- 有些文件无需被纳入Git的管理,并且不希望出现在未跟踪文件列表。解决方法如下:
# 在Git工作区的根目录下创建一个名为.gitignore的配置文件,列出要忽略的文件的匹配模式。
# .gitignore文件的格式规范如下:
1. 以#开头表示注释
2. 以/结尾表示目录
3. 以/开头表示防止递归,代表项目根目录
4. 以!开头表示取反:例如!.gitignore表示不排除.gitignore文件,.gitignore文件本身也需要放到版本库中
5. 可以使用glob模式进行文件和文件夹的匹配
*代表匹配任意个字符
?代表匹配任意一个字符
**代表匹配多级目录
# 使用-f选项可以强制添加到版本库
git add filename -f
- 示例:参考
# 忽略所有.a结尾的文件
*.a
# 不忽略lib.a文件
!lib.a
# 忽略当前目录下的TODO文件
/TODO
# 忽略build目录下的所有文件
build/
# 忽略doc目录下所有以.txt结尾的文件
doc/**/*.txt
18.查看提交历史
# 按照时间先后顺序列出所有的提交历史
git log
# 只展示最新的两条提交历史
git log -2
# 查看分支合并图
git log --graph
# 查看历史的提交id信息
git log --pretty=oneline --abbrev-commit
19.回退到指定的版本
# 使用git reset --hard命令,根据指定的提交id回退到指定版本。
git reset --hard <Commit id>
# 在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^。HEAD是一个指针,指向某个分支。
# 回退到上一个版本
git reset --hard HEAD^
# 从上一个版本回退到当前版本
# 先使用git reflog命令查看命令历史
# 然后根据提交id使用git reset --hard命令回退
20.Git分支
- master主分支:初始化本地Git仓库时,Git默认创建一个叫master的主分支
- 功能分支:从master主分支上分发出来,专门用于开发新功能的分支,当新功能开发且测试完毕后,需要合并到主分支上。
- 查看分支列表
# 查看当前本地Git仓库中所有的本地分支列表
# 分支名字前面的*表示当前所处的分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
# 查看所有未包含合并工作的分支
git branch --no-merged
# 查看哪些分支已经合并到当前分支
git branch --merged
# 查看设置的所有跟踪分支(本地分支跟踪远程仓库上的某个分支)
git branch -vv
# 修改正在跟踪的跟踪分支
git branch -u origin/xxx
- 创建新分支
# 基于当前分支创建新分支,新分支的代码和当前分支一样
git branch 新分支名字
- 切换分支
# 切换到指定的分支
git checkout 指定的分支名
# 在本地新建其他分支时,可以指定想要跟踪的远程跟踪分支
git checkout --track 远程跟踪分支名
或者如下
git checkout -b 本地分支名 远程跟踪分支名
- 创建指定的新分支并切换到新分支上
# -b表示创建一个新分支
git checkout -b 新分支名称
# 或者
git switch -c 新分支名称
- 合并分支:合并分支只会对当前分支产生影响
1.没遇到冲突时的分支合并
# 功能分支的代码开发测试完毕后,将完成后的代码合并到master主分支上
# 1.切换到主分支
git checkout master
# 2.在主分支上运行git merge命令将指定的子分支上的代码合并到主分支
git merge 指定的子分支名
# --squash 会暂停commit提交。要不然一个merge会自动提交commit。
git merge --squash 指定的子分支名
2.遇到冲突时的分支合并
# 遇到冲突时的分支合并,需要打开包含冲突的文件手动解决他们
- 删除分支
# 删除本地仓库的分支
git branch -d 待删除的分支名
# 删除远程仓库的分支
git push origin -d 远程分支名
- 将本地分支推送到远程仓库
# 指定本地的当前分支推送到与本地当前分支同名的远程分支
git push origin 本地当前分支名 #例如: git push origin curent_master
# 将本地当前分支推送到远程指定分支上
git push origin 本地分支名:远程分支名
# 1.第一次将本地分支推送到远程仓库
# -u表示将本地分支和远程分支进行关联,第一次推送才需要-u参数
git push -u 远程仓库的别名 本地分支名称:远程分支名称#一般远程仓库的别名为origin
- 查看远程仓库中所有分支列表
# 查看远程仓库的名字
git remote show
# 查看指定远程仓库中的所有分支列表,一般都有个master
git remote show 远程仓库名字
# 查看当前配置有哪些仓库,它会列出每个远程库的简短名字。一般有个默认的origin
git remote
#显示更详细的信息,对应的克隆地址
git remote -v
# 移除一个远程仓库
git remote rm 远程仓库名字
- 跟踪分支
# 跟踪分支指的是:从远程仓库中,将远程分支下载到本地仓库中
git checkout 远程分支名称
# 从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支重命名
git checkout -b 重命名后的本地分支名称 远程仓库名称/远程分支名称
- 拉取远程指定分支的最新代码
# 将远程指定分支拉取到本地指定分支上:
git pull origin <远程分支名>:<本地分支名>
# 将远程指定分支拉取到本地当前分支上
git pull origin <远程分支名>
- 抓取远程仓库的代码
- 抓取远程仓库指定分支的最新代码
git fetch origin master
- 抓取远程仓库所有分支的代码
git fetch
git fetch是从远程仓库获取最新版本到本地仓库,不会自动merge,所以还需要使用git merge命令;git pull是从远程仓库获取最新版本并合并到本地仓库。
14. 删除远程仓库的分支
# 删除远程仓库中指定名称的远程分支
git push 远程仓库名称 --delete 远程分支名称
- 添加新的远程Git仓库
# 远程仓库别名一般为origin
git remote add 远程仓库别名 url
- 删除本地配置的远程仓库地址:
git remote remove origin
21.从版本库中(本地Git仓库)删除文件
# 直接将删除的文件放入暂存区,等待被提交
git rm filename
git commit -m "提交描述信息"
22.配置别名
注意:--global选项针对当前用户的所有Git仓库起作用,而不加此选项表示只针对当前的Git仓库起作用.每个仓库的Git配置文件都放在仓库下的.git/config文件中.当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
# 1.暂存区的修改
git config --global alias unstage 'reset HEAD
# 丢弃暂存区中文件的修改
git unstage test.txt
# 2.显示最后一条提交息
git config --global alias last 'log -1
git last # 即可显示最后一条提交信息
23.将远程仓库克隆到本地
git clone 远程仓库的地址 [本地目录名]
24.Git标签
标签指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。
1.列出已有的标签
# 列出所有tag
git tag
# 查看tag信息
git show tagName
2.创建新标签
#新建一个tag
# 例如git tag v0.1
git tag tagName
3.将标签推送至远程仓库
#提交指定tag
git push 远程仓库名 标签名
# 例如git push origin v0.1
4.检出标签
# 新建一个分支,指向某个标签
git checkout -b 分支名 标签名
# 例如git checkout -b dev v0.1表示创建一个新分支dev,
#并且其状态为v0.1的
5.删除标签
# 删除本地标签
git tag -d tagName
# 删除远程标签
git push origin :refs/tags/远程仓库中的标签名
2.Github使用
1.简介
开源项目托管平台主要有三个:Github,Gitlab,Gitee.Gitlab企业用户较多。
2.新建空白远程仓库
登录Github官网操作即可。
3.访问Github上的远程仓库的两种方式
- https:官网登录访问。每次访问都需要登陆用户名和密码。
- ssh key(Secure Shell key):推荐使用SSH的方式访问远程仓库.
SSH key由两部分组成:
1. id_rsa文件(私钥文件,存放在客户端中)
2. id_rsa.pub文件(公钥文件,配置到Github中)
4.将本地仓库上传到Github的方式
1.使用HTTPS,这种方式分为两种情况:
- 本地没有现成的Git仓库
1.创建README.md文档,并写入初始内容“#项目名”
echo "#项目名" >> README.md
2. 初始化本地GIt仓库,并将文件的修改提交到本地的Git仓库中。
git init
git add filename
git commit -m "提交描述信息"
3. 将本地仓库和远程仓库进行关联,并将远程仓库命名为origin
git remote add origin https地址
4. 将本地仓库中的内容推送到远程仓库origin中。
git push -u origin master
- 本地有现成的Git仓库
1. 将本地仓库和远程仓库进行关联,并将远程仓库命名为origin
git remote add origin https地址
2. 将本地仓库中的内容推送到远程仓库origin中
git push -u origin master(本命令在第一次上传时使用,后续可以直接使用git push)
2.使用SSH协议将本地仓库上传到Github
生成SSH key的方法:其中id_rsa称为私钥,id_rsa.pub称为公钥。
# 1.打开Git Bash
# 2.执行`ssh-keygen -t rsa -b 4096 -C "注册GIthub时的邮箱地址"`命令,
连续敲击三次回车。即可在C:\Users\用户文件夹\ssh目录中
生成id_rsa和id_rsa.pub两个文件。
配置SSH key:将公钥文件内容配置到Github
# 1.复制id_rsa.pub文件中内容
# 2.官网登录Github,点击头像-》Settings-》SSH and GPG keys-》New SSH key
# 3.将复制的内容粘贴到key对应的文本框中
检测Github的SSH key是否配置成功
ssh -T git@github.com
# 执行完该命令后查看提示消息,是否成功认证
配置成功后就使用SSH协议将本地仓库上传到Github
- 本地没有现成的Git仓库
- 本地有现成的Git仓库
git remote add origin xxx.git
# 远程仓库的默认名称为origin
git push -u origin master