Git的使用
什么是Git
Git是一个版本控制的工具,版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
使用Git的好处
- 代码可以进行版本管理,如果代码写错了,可以退回到上次正确的版本
- 分布式版本控制系统.可以让代码有多个分支,比如在不同操作系统上运行
- 监测版本的变化,每次修改的地方都可以被找到,随时知道自己添加了哪些文件,删除了哪些文件,修改了哪些地方
- 代码备份,随时远程备份自己的代码,本地代码丢失可以找回
- 多人合作,集中管理
git的使用
下载Git
第一步,要下载git工具,git的原型也是一个只有控制台界面的程序,可以额外下载有图形界面的工具
默认下载的自带一个图形界面,和一个仿Linux的终端程序
创建自己的一个git项目
3.1 git的环境配置
**全局设置:**首先要设置一个用户名和邮箱,才能使用,格式如下
git config --global user.name "用户名"
git config --global user.email "邮箱账号@qq.com"
3.2获取Git 仓库
两种方式
在本地初始化一个仓库
git init #初始话git仓库
从远程克隆
git clone [远程域名]
git clone https://gitee.com/zhuimengmy/myRepo1.git
3.3工作目录,暂存区以及版本库概念
版本库:前面看到的.git隐藏文件夹就是版本库,版本库存储量很多配置信息,日志信息和文件版本信息等。
工作目录(工作区):包含.git文件的目录就是工作目录,主要用于存放开发的代码
暂存区:.git文件周明华有很多文件,其中一个index文件就是暂存区,也叫作stage,暂存区是一个临时保存修改文件的地方。
3.4 Git工作目录下文件的两种状态
1 untracked未跟踪(未被纳入版本控制)
2 tracked已跟踪(被纳入版本控制)
<1>unmodified 未修改状态
<2>Modified 已修改状态
<3>Staged 已暂存状态
3.5 本地仓库操作
查看文件的状态
查看文件的状态
git status # 检查状态
# 查看跟踪文件的的修改
git diff
git diff HEAD -- [file] #查看上次修改
也可以使用git status -s
git add 将未跟踪的文件加入暂存区
git add [file] #可以连续添加跟踪文件上
git reset 将暂存区的文件取消暂存
git reset [file] #撤销
添加代码到版本库,已经将该内存进行保存了
git commit -m [提交的内容注释] #将暂存区的文件修改提交到本地仓库
移除文件
git rm [file]
--cached [file] #不删除物理文件,只将add进缓存的文件删除。
-r #有目录的话加此参数
-f #会删除物理文件
git log 查看日志文件
#上传最近的记录 从最近到最远的提交日志,我们可以看到3次提
git log
--pretty=oneline #减少输出信息
#命令历史,以便确定要回到未来的哪个版本
git reflog
# 回到上一次版本
git reset
--soft #不会修改文件,只会改变指针
--mixed #改变暂存区,不改变工作区
HEAD #暂存区的地方撤销
--hard commit_id #回退到指定的版本,内容也会全部更变
#HEAD表示当前版本
#上一个版本就是HEAD^
#上上一个版本就是HEAD^^
#100个版本可以写成HEAD~100
#修改分支
git checkout
-- [file] 撤销工作区的修改
Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改
3.6远程仓库操作
常见的远程仓库
-
查看远程仓库
添加远程仓库
从远程仓库克隆
移除无效的远程仓库
从远程仓库中抓取与拉取
推送到远程仓库
查看原远程仓库
如果想查看已经配置的远程仓库服务器,可以运行git remote命令,它会列出指定的一个远程服务器的简写。
如果已经克隆了远程仓库,那么至少应该能看到origin,这是Git克隆的仓库服务器的默认名字
添加远程仓库
git remote add <shortname> <url> #添加一个新的远程仓库
从远程仓库克隆
从远程克隆 git clone [远程域名] git clone https://gitee.com/zhuimengmy/myRepo1.git
移除无效的远程仓库
git remote rm #移除一个远程仓库 ### 注意:此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库
从远程仓库中抓取与拉取
git feth #从远程仓库获取最新版本到本地仓库,不会自动merge(合并) git pull #将远程仓库上的更新的内容,推送到本地,然后同步
推送到远程仓库
git push [remote-name] [branch-name] #推送到远程仓库
3.7 git分支管理
查看分支
创建分支
切换分支
推送至远程分支
合并分支
删除分支
创建分支
git branch [分支名称]
-d 删除分支
## 查看所有分支和当前所在的分支
git branch
## 创建一个新分支 -b 表示创建完成并自动切换
git branch test
## 删除分支
git branch -d test
切换分支
git checkout [分支名称]
-b [branch] 创建并切换
## 切换分支
git checkout test
## 创建分支并切换
git checkout -b test2
合并分支
合并分支应该先切换到主目录下,再合并新建的分支
git merge [branch] 指定分支到当前分支
–abort 撤销合并
## 合并分支命令
git merge test
## 撤销合并分支
git merge --abort
switch 切换分支 替换checkout
设置git push和pull的默认远程分支
git branch --set-upstream-to=origin/master master
git 日志
Git 删除具体某个提交commit的方法
- git log获取commit信息
- git rebase -i (commit-id)
commit-id 为要删除的commit的下一个commit号
3.编辑文件,将要删除的commit之前的单词改为drop
4.保存文件退出大功告成
5.git log查看
删除已经commit的大文件
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.gz' --prune-empty --tag-name-filter cat -- --all