git需要用户设置一个签名
用户名: username
邮箱: email
注意邮箱不是真的邮箱地址 只是用来区分不同开发人员
这里与GitHub的账号密码没有关系
项目级别设置:
git config
系统全局级别设置:
git config --global
项目级别信息保存为在项目文件.git/config
全集级别信息保存为用户根目录 ~/.gitconfig
PS:
gif config --global user.name phk
gif config --global user.email [email protected]
设置为仓库级别
git config
系统全局级别设置
git config --global
git init
git status
查看当前项目状态
git add [filename]
追踪文件 添加到暂存区
git commit -m "commit message" [filename]
提交文件并写提交注释
message的格式:
type(scope):subject描述信息
type的类型:
- feat:新功能
- fix:修复bug
- style:调整格式
- refactor:代码重构
- chore:项目构建
git rm --cached [filename]
把文件从暂存区中撤回
每条记录对应一个index
git log
查看提交详细记录 多屏显示 和linux命令操作相同
git log --pretty=oneline
查看单行提交记录
git log --online
查看单行提交记录
git reflog
HEAD@{移动到当前版本需要的步数}
版本前进后退
git reset --hard [索引值]
基于索引前进后退
git reset --hard HEAD^
只能往后退 n个^退n个版本
git reset --hard HEAD~n
向后回退n个版本
reset 参数对比
- --soft 仅仅移动本地库 HEAD指针
- --mixed 移动本地库 和 暂存区
- --hard 移动 本地库 重置 暂存区 和 工作区
git diff [filename]
工作区与暂存区对比
git diff [本地库历史版本] [filename]
工作区与本地库对比 不带文件名 比较多个文件
git branch -v
查看所有分支
git branch [name]
创建分支
git checkout [name]
切换分支
git checkout -b [name]
新建并切换到新的分支
git branch -d [name]
删除分支
git merge [name]
合并分支 先切换到master分支(被合并分支)
合并冲突
提示冲突进入 master|merging 状态
本地解决冲突
<<<<< HEAD 本分支修改的内容
======
>>>>>> 其他分支修改的内容
自己编辑完文件删除特殊符号后保存退出 再add commit(不能带文件名)
merge会一次性解决所有冲突
rebase一次解决一个冲突,需要多次执行rebase,解决完之后用git rebase --continue
继续
git remote -v
查看远程库信息 (fetch 用来取回)(push 用来推送)
git remote add origin URL
用origin代替URL
git clone URL
从URL上克隆远程库,使用clone不用事先git init
,默认只是克隆master分支
git clone -b 分支名 URL
从URL中克隆对应的分支
git fetch
从远程库下载 但没有和本地库合并
git merge
合并本地库操作,会保留两个分支的提交,并生成一个新的提交
git rebase
合并分支,生成一个分支的提交副本,拼接到另一个分支的提交上
git pull
fetch+merge操作
如果不是基于远程库的最新版所做修改
不能push 要先pull最新版
本地解决冲突再commit push
和本地冲突处理相同
远程库上可以fork别人的项目 自己做修改
Pull requests
请求源项目负责人将自己的修改合并到源项目中
源负责人审核后 merge pull requests
同意
cd [dirname]
切换目录 ~(表示用户根目录) 或 cd d:ls
展示当前目录的文件pwd
打印当前目录路径cat [filename]
查看文件 cat .gifconfig- 多屏显示
- 空格向下翻页
- b向上翻页
- q退出
ctrl+L
清屏
git config --global alias.st status
用st来代替status 全局配置别名
git config --global pull.rebase true
设置默认选项的配置
git tag -a v.01(表示版本) -m 'v0.1'(信息)
打标签,默认打在当前分支的当前版本
git tag -a v.01(表示版本) 12k9b -m 'v0.1'(信息)
打标签打在12k9b的这个版本
git push --tag
推送标签