git工作流程
一般工作流程如下:
1.从远程仓库中克隆 Git 资源作为本地仓库。
2.从本地仓库中checkout代码然后进行代码修改
3.在提交前先将代码提交到暂存区。
4.提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。
5.在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。
名词解释
1.工作区(工作目录):
包含“.git”目录的目录,也就是.git目录的上一级目录就是工作目录。只有工作目录中的文件才能保存到版本库中。
2.暂存区:
英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
3.版本库:
版本库又名仓库,可以简单理解成一个目录。工作区有一个隐藏目录 .git,这个不算工作 区,“.git”就是版本库,将来文件都需要保存到版本库中。
基础操作指令
##### 3.3.1、*查看修改的状态(status)
- 作用:查看的修改的状态(暂存区、工作区)
- 命令形式:git status
##### 3.3.2、*添加工作区到暂存区(add)
- 作用:添加工作区一个或多个文件的修改到暂存区
- 命令形式:git add 单个文件名|通配符
- 将所有修改加入暂存区:git add .
##### 3.3.3、*提交暂存区到本地仓库(commit)
- 作用:提交暂存区内容到本地仓库的当前分支
- 命令形式:git commit -m '注释内容'
##### 3.3.4、*查看提交日志(log)
- 作用:查看提交记录
- 命令形式:git log [option]
- options
- --all 显示所有分支
- --pretty=oneline 将提交信息显示为一行
- --abbrev-commit 使得输出的commitId更简短
- --graph 以图的形式显示
##### 3.3.5、版本回退
- 作用:版本切换
- 命令形式:git reset --hard commitID
- commitID 可以使用`git log`指令查看
- 参数 --hard 忽略修改内容
- 如何查看已经删除的记录?
- git reflog
- 这个指令可以看到已经删除的提交记录
##### 3.4.1、查看本地分支
- 命令:git branch
##### 3.4.2、创建本地分支
- 命令:git branch 分支名
##### 3.4.4、*切换分支(checkout)
- 命令:git checkout 分支名
我们还可以直接切换到一个不存在的分支(创建并切换)
- 命令:git checkout -b 分支名
**注意:如果当前分支有未提交的代码,不能切换分支**
##### 3.4.6、*合并分支(merge)
一个分支上的提交可以合并到另一个分支
命令:git merge 分支名称
##### 3.4.7、删除分支
**不能删除当前分支,只能删除其他分支**
git branch -d b1 删除分支时,需要做各种检查
git branch -D b1 不做任何检查,强制删除
远程仓库
远程仓库实际上和本地仓库没有什么区别;
冲突出现和解决
两个分支同时修改了同一个文件的同一行,出现冲突;(注意:两个分支内容不同,不一定冲突,都进行修改后 commit 操作后,内容不同,才会冲突)
解决冲突步骤如下:
- 处理文件中冲突的地方
- 将解决完冲突的文件加入暂存区(add)
- 提交到仓库(commit)
git添加.gitignore后不生效问题
一,问题现象
在已经提交过的git管理的项目中,新增加一个.gitignore文件,或者修改.gitignore文件之后,新增的内容不生效。
二,问题原因
因为我们误解了.gitignore文件的用途,该文件只能作用于Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。
之所以你的规则不生效,是因为那些 .log 文件曾经被 Git 记录过,因此.gitignore对它们完全无效。
三,解决方法
1,从 Git 的数据库中删除对于该文件的追踪;
2,把对应的规则写入.gitignore,让忽略真正生效;
3,提交+推送。
具体指令:
git rm -r --cached .
git add .
git commit