git组成三部分
- 工作区
- 暂存区 (以便git跟踪你的文件 )
- 本地库 (代码提交后存储的位置)
初始设置
git config --global user.name newname
git config --global user.email email
设置全局的username和email
常用命令
git add files 添加文件到暂存区
git add --all 当前文件夹所有内容到暂存区
撤销缓存
- git rm --cached 文件路径,不删除物理文件,仅将该文件从缓存中删除;
- git rm --f 文件路径,不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶)。
git commit -m "描述" filename (单个提交) 或者 -a 已经跟踪的文件(add进入暂存区)全部提交
git log 查看当前日志 会显示所有提交文件的id
git log --oneline 一行显示 简短
git status 查看状态
git reflog 精简的版本库查看版本信息
版本控制
记录若干文件备份和记录 查阅特定版本系统 现在多是分布式管理 在每台服务器里都有相应文件 三种转态 staged 已经缓存 对一个已修改文件进行标记 committed 已提交 modified 已经修改
版本回退
git reset --hard HEAD^ 版本只能后退 一个^表示退一步,可以有多个
git reset --hard HEAD~1 版本只能后退 1 代表后退的次数 ===git reset --hard 版本码
和hard类似的三个参数比较
soft参数 只移动本地库的指针 不改变暂存区和工作区 文本内容不改变
mixed参数改变本地库的指针,改变暂存区 不改变工作区 文本内容不改变
hard 参数 三者都改变
比较文件差异
git diff filename 将工作区和暂存区的内容进行比较 git diff 版本号 文件名 将历史记录和工作区进行比较
git rm filename 删除仓库里的文件 git ls-files 显示仓库中文件,结合一下命令
分支
拿到公钥
在本地上申请公钥和秘钥 ssh-keygen -t rsa -C "邮箱地址" 在github上添加公钥 -t 表示加密算法
在C:\Users\username.ssh 在里面复制公钥 id_rsa.pub 并且在github上粘贴公钥 setting里ssh的设置里
分支命令
git branch branchname 创建分支
git branch -d branchname 删除分支
git checkout bracnchaname 切换分支
git branch -v 查看分支信息
git merge branchname 将branchname合并到当前分支
pull和push
单位是分支
推送到远程仓库
定义远程仓库的别名
git remote add origin "url" url为 http或者ssh(需要在本地设置了ssh)
推送到远程仓库,以分支为单位
git push 别名/URL branchname
git remote -v 查看别名
git pull 别名/URL branch 拉取 分支
git remote -v 查看地址详细信息
git remote show name 显示远程仓库的信息
gitignore文件的语法
- 用#来注释语句,在#后面的内容会被Git忽略
- 以斜杆(/) 结尾的字符,被当做文件夹处理,文件夹下的所有文件将被忽略
- 局部及全局的同名文件忽略问题
如 /TODO 表示Git仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
如 doc/*.txt 表示Git会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
如 doc/*/.txt 表示Git会忽略所有 doc目录下的 txt 格式的文件
- glob语法: [] 选择列表 * 任意个字符 ?只匹配一个任意字符
- 使用两个星号(**) 表示匹配任意中间目录,比如a/**/z可以匹配 a/z, a/b/z 或 a/b/c/z等。
- 在某文件前加上感叹号(!)取反,表明该文件除外。如忽略所有 .a 结尾的文件但 lib.a 除外 !lib.a