一、组件
(一)工作区域
功能介绍
工作目录(Workspace):本地存放项目代码的工程目录。
暂存区(Stage):临时存放你的代码改动,事实上它只是一个文件,保存即将提交的文件改动信息。
资源库(Repository):本地仓库,安全存放数据的位置,这里面有你提交的所有版本数据。其中HEAD指向最新放入仓库的版本。
远程仓库(Remote):远程仓库,托管代码的服务器,云端存放代码的仓库,可以与你本地仓库进行关联。
工作关系
Workspace --(git add)--> Stage --(git commit)--> Repository --(git push)--> Remote
Remote --(git pull)--> Repository --(git reset)--> Stage --(git checkout)--> Workspace
(二)忽略文件
介绍
1.有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等就可以创建忽略文件忽略他们。
2.主目录下建立"".gitignore"文件即可创建忽略文件。
规则
*.txt # 忽略所有 .txt结尾的文件,这样的话上传就不会被选中
!lib.txt # lib.txt除外
/temp # 仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ # 忽略build/目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
二、命令
仓库
当前目录初始化git代码库
git init
新建一个目录并将其初始化为git代码库
git init 仓库名
克隆仓库到本地
git clone 仓库地址
同步远程仓库所有改动
git fetch 仓库链接
同步当前分支远程仓库内容到本地
git pull 仓库链接
同步指定分支远程仓库内容到本地
git pull 仓库链接 分支名
推送本地仓库当前分支改动到远程仓库
git push 仓库链接
推送本地仓库指定分支改动到远程仓库
git push 仓库链接 分支名
查看远程仓库别名
git remote -v
配置
查看配置
git config -l
查看系统配置
git config --system --list
查看用户配置
git config --global --list
设置用户名
git config --global user.name 用户名
设置邮箱
git config --global user.email 邮箱
生成密钥
ssh-keygen -t rsa -C 邮箱
分支
查看本地分支
git branch
查看远程分支
git branch -r
查看所有分支
git branch -a
查看分支详细信息
git branch -v
新建分支
git branch 分支名
切换分支
git checkout 分支名
新建分支并切换到该分支
git checkout -b 分支名
删除本地分支
git branch -d 分支名
git branch -D 分支名 # 强制删除
合并指定分支到当前分支
git merge 分支名
修改分支名
git branch -m 旧分支名 新分支名
分支注意事项
1.master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作。
2.工作一般情况下在新建的dev分支上工作,工作完后,如果要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
3.如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以手动修改冲突文件后重新提交!选择要保留的代码。
添加
添加所有文件到暂存区
git add .
添加指定文件到暂存区
git add 文件1 文件2 ...
添加指定目录到暂存区,包括子目录
git add 目录
提交
提交暂存区所有文件到仓库
git commit -m 描述
提交暂存区指定文件到仓库
git commit 文件1 文件2 ... -m 描述
提交工作区自上次commit之后的所有改动到仓库 (系统自动执行"git add ."命令)
git commit -am 描述
重做上一次commit到仓库,包括暂存区所有文件的改动。(如果暂存区没有任何变化,则用来修写commit)
git commit --amend -m 描述
重做上一次commit到仓库,包括暂存区指定文件的改动
git commit --amend -m 描述 文件1 文件2 ...
查看
查看所有文件状态
git status
查看指定文件状态
git status 文件名
恢复
恢复暂存区的所有文件到工作区
git checkout .
恢复暂存区的指定文件到工作区
git checkout 文件1 文件2 ...
删除
删除暂存区指定文件
git reset 文件1 文件2 文件3
版本
查看记录
git reflog
查看版本
git log
查看图文式版本
git log --graph
穿梭到指定版本
git reset --hard 版本号
创建一次新提交,提交内容回滚到指定版本
git revert 版本号
将指定版本号复制到当前分支HEAD指向的版本之后
git cherry-pick 版本号1 版本号2 ...
调整当前HEAD指向的版本前N个版本顺序
git rebase -i HEAD~4
保存现场
保存现场
git stash
查看现场
git stash pop
还原现场
git stash pop