一、什么是git:
分布式版本控制系统,将原始的代码仓库镜像下来,每一次的提取操作实际上都是对代码仓库的完整备份。
作用:
1、该系统可以指定和若干不同的远端代码仓库进行交互。因此可以在同一个项目中,分别和不同工作小组的人相互协作。
2、任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复
二、专有名词:
1、工作区(workspace):在电脑创建的一个管理仓库的目录,即我们本地直接编辑的文件目录
2、暂存区(stage/index):一般存放在.git目录下的index文件,暂存区会记录git add添加文件的相关信息,可以使用git status查看暂存区的状态。暂存区标记了你当前工作区中哪些内容是被git管理的,使用git add .命令时即将修改的内容提交到暂存区
3、本地仓库(repository):保存了对象被提交过的各个版本,使用git commit -m 'xxx'命令将暂存区的内容提交到本地仓库
4、远程仓库(remote): 使用git push命令将本地仓库的内容推送到远程仓库
5、版本库:工作区有一个目录.git(看不到的话就是隐藏了)这个不算工作区,是git的版本库
三、常用命令
add: git add . 添加当前目录的所有文件到暂存区
git add <dir/file> 添加指定的目录或者文件到暂存区
commit:git commit -m 'xxx:说明信息' 提交暂存区的内容到本地仓库
git commit <dir/file> -m 'xxx:说明信息' 提交暂存区的指定文件到本地仓库
git commit --amend -m 'xxx:说明信息' 使用一次新的commit替代上一次提交
branch:git branch 列出所有本地分支
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支
checkout:git checkout -b <branchName>新建一个本地分支,并切换到该分支
git checkout <branchName> 切换到指定分支
git checkout -b <branchName> origin/<remoteBranch> 基于远程仓库指定的分支(remoteBranch)新建了一个本地分支(branchName),并切换到该分支
remote: git remote -v 查看当前项目的git仓库地址
git remote set-url origin <newUrl> 修改当前项目的git仓库地址
push: git push 上传当前分支的内容到远程仓库
git push remote branch 上传本地指定分支到远程仓库
git push remote --force 强行推送当前分支到远程仓库,即使有冲突
git push remote --all 推送所有分支到远程仓库
restore: git restore 撤销工作区间的内容
git restore --staged 将暂存区的文件从暂存区撤出,但不会更改文件的内容
其他命令:git status 显示有变更的文件
git log/git log -n<number> 显示当前分支的版本历史(number表示显示几条)
git diff 显示暂存区和工作区的差异
git diff HEAD 显示工作区与当前分支最新commit之间的差异
git cherry-pick <commitId> 选择一个commit,合并进当前分支
git merge <branchName> 合并指定分支到当前分支,会生成新的节点
git rebase <branchName> 衍合指定分支到当前分支,不会生成新的节点
合并多次提交记录:git rebase -i <startCommitId> <endCommitId>合并(startCommitId,endCommitId]区间的提交,左开右闭
git rebase -i <commitId>合并从当前head到commitId,不包含commitId
git rebase -i HEAD~2 合并最近的两次提交
撤销:git reset --hard HEAD 撤销工作目录中所有未提交的文件的修改内容,即在工作区和暂存区的内容
git checkout HEAD <file> 撤销指定文件的未提交的文件的修改内容
git revert <commitId> 撤销指定的提交