Git相关操作
1.获取Git仓库的两种方式S
①将尚未进行版本控制的本地目录转换为Git仓库
在项目根目录中打开命令行,输入以下命令:
git init
②从其他服务器克隆一个已存在的Git仓库
2.工作区中文件的四种状态以及操作状态
-
已被Git管理
- 未修改(Unmodified):工作区中文件的内容和Git仓库中文件的内容保持一致
- 已修改(Modified):工作区中文件的内容和Git仓库中文件的内容保持不一致
- 已暂存(Staged):工作区中被修改的文件已被放到暂存区,准备将修改后的文件保存到Git仓库中
-
未被Git管理
- 未跟踪(Untracked):不被Git所管理的文件
-
跟踪新文件
git add filename
-
提交更新
git commit -m "更改说明"
3.检查文件的状态
git status || git status -s(以精简的方式显示文件状态) 与 git status --short 等价
4.修改已提交的文件并提交
第一步
git add filename
git add .(放所有文件)
git add的三个功效:
- 可以用它开始跟踪新文件
- 把已跟踪的、且已修改的文件放到暂存区
- 把有冲突的文件标记为已解决状态
第二步
git commit -m “提交说明”
git commit -a -m "提交说明" -a将所有已经跟踪的文件暂存起来一并提交,从而跳过git add步骤
5.撤销对文件的修改
git checkout -- filename
撤销操作的本质:用Git仓库中保存的文件,覆盖工作区中指定的文件
6.取消暂存的文件
git reset HEAD "要移除的文件名称"
7.移除文件
-
从Git仓库和工作区中同时移除对应的文件
git rm -f failname
-
只从Git仓库中移除指定的文件,但保留工作区中对应的文件
git rm --cached failname
8.忽略文件
创建一个名为.gitignore的配置文件,列出要忽略的文件的匹配模式
- 以 # 开头的是注释
- 以 / 结尾的是目录
- 以 / 开头防止递归
- 以 !开头表示取反
- 可以使用glob模式进行文件和文件夹的匹配(glob 指简化了的正则表达式)
9.查看提交历史以及回退到指定的版本
git log #按时间先后顺序列出所有的提交历史,最近的提交排在最上面
git log -2 #只展示最新的两条提交历史,数字可以按需进行填写
git log -2 --pretty=oneline #在一行上展示最近两条提交历史的消息
git log -2 --pretty=format:"%h | %an | %ar | %s" #在一行上展示最近两条提交历史的消息,并自定义输出的格式。%h 提交的简写哈希值 %an作者名字 %ar作者修订日期,按多久以前的方式显示 %s提交说明
git log --pretty=oneline #在一行上展示所有的提交历史
git reset --hard <CommitID> #根据指定的提交 ID 跳转到指定版本
git reflog --pretty=oneline #在旧版本中,查看命令操作的历史
10.Git与Github
远程仓库的两种访问方式:
- Https:零配置;但是每次访问仓库时,需要重复输入Github的账号和密码才能访问成功
- SSH:需要进行额外的配置;但是配置成功后,每次访问仓库时,不需要重复输入Github的账号和密码
基于HTTPS将本地仓库上传到Github
git remote add originRepositoryName https://......
git push -u originRepositoryName master
生成 SSH key
ssh-keygen -t rsa -b 4096 -C "your_email@email.com"
//就会在C:\Users\用户名文件夹\.ssh目录中生成id_rsa和id_rsa.pub两个文件
检查Github的SSH key是否配置成功
ssh -T git@github.com
基于 SSH 将本地仓库上传到Github
git remote add originRepositoryName git@github......
git push -u originRepositoryName master
11.git 分支操作
- 查看当前仓库的所有的分支列表
git branch
- 创建一个新分支
git branch 分支名称
- 切换分支
git checkout 分支名称
- 创建一个分支并立即切换到分支上
git checkout -b 分支名称
- 合并分支
git checkout master # 先切换到 master 主分支上
git merge BranchName
- 删除分支
git branch -d 分支名称
-
遇到冲突时的分支合并
- 手动解决,解决后重新提交
-
将本地分支推送到远程仓库
git push -u 远程仓库别名 本地分支名称:远程分支名称
- 查看远程仓库中所有的分支列表
git remote show 远程仓库名称
- 跟踪远程分支
# 从远程仓库中,把对应的远程分支下载到本地仓库,保持本地分支和远程分支名称相同
git checkout 远程分支名称
# 从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称
- 拉取远程分支的最新的代码
git pull
- 删除远程分支
git push 远程仓库名称 --delete 远程分支名称