1.git配置信息
(1).配置用户和邮箱
git config --global user.name 'your_name'
git config --global user.email 'your_email@domail.com'
(2).config
只对某个仓库有效:git config --local
对当前用户所有仓库有效: git config --global
对系统所有登陆的用户有效: git config --system
显示config的配置,加--list:
git config --list --local
git config --list --global
git config --list --system
2.创建git仓库:
(1).把已有的项目代码纳入git管理
cd项目代码所在的文件夹
git init
(2).新建的项目直接使用git管理
cd某个文件夹
git init your_project #会在当前路径下创建和项目名称同名的文件夹
cd your_project
(3).提交文件:需要把文件先提交到暂存区再提交或直接使用 git commit 文件名 -m'提交备注' 直接提交
git add 文件名 添加到暂存区 git add 后可以加多个文件
git commit -m'提交备注' 提交文件
git status 查看当前提交状态
git log 查看日志
3.工作区和暂存区
工作目录 添加到暂存区 再提交到版本历史
git add -u 把git管理的所修改的所有文件添加到暂存区
4.给文件重命名 git mv 文件名 更并的文件名 然后 git commit -m'提交理由'
重命名文件 mv
将重命名后的文件添加到git的暂存区 git add
删除git中之前的文件 git rm 文件修改之前的名字
5.通过git log查看版本演变历史
git log --oneline /git log --oneline --all
git log -n4 --online. 查看最近4次提交记录. git -n4 --online --graph
查看git分支:git branch -av
查看所有日志:git log --all
图形化查看日志:git log --all --graph
查看git log所有指令:git help --web log
6.通过图形界面工具来查看版本历史:gitk
Patth. 是每次变更提交的文件集
Tree 文件的所有内容
Author 作者
Committer 提交人
7. .git目录
HEAD 文本文件 内容 git当前仓库的分支名称 切换分支的时候HEAD会发生变化
Config :存储的user信息 修改后会影响用户的变化
Refs :git 仓库的标签、里程碑(tags)、分支信息(heads)
8.commit、tree和bolb三个对象之间的关系
commit中包含 tree parent author committer
tree包含 tree blob
blob包含文件内容
Git cat-file -p ID 查看当前信息
9.分离头指针:指的是变更没有指定分支
10.HEAD和branch
创建新分支:git checkout -b 新分支名称
HEAD可以指向分支或是某一个commit
git dff ID1 ID2 比较差异
11.删除不需要的分支:git branch -D/d 分支名 (D 会直接删除 d 删除分支时会有提示)
查看分支:git branch -av
12.修改最新的commit的message:git commit --amend 会弹出一个界面 然后修改message保存
修改旧的commit的message:git rebase -i 选择当前commit的父亲的ID 会弹出一个界面 根据界面提示的命令修改
reword 要修改的commitID 保存退出 会再进入另一个界面 然后修改commit的message保存
只适合本地分支,不建议修改团队分支
13. 把多个连续commit整理成一个:git rebase -i 选择要合并的最后一个commit ID 会进入一个界面 选择最第二早的commit的ID在前边加上 s(squash) 保存然后会进入另一个界面 会提示哪些commit要合并然后添加合并的理由保存即可
14.把间隔几个commit整理成一个:git rebase -i 选择最后一个commit ID 会进入一个页面 然后把最古老的commitID添加在第一行 pick commit ID,然后把合并的commit合在一起 s 要合并的commit ID 放在要合并的commit下边 保存
git rebase --continue 编写要合并的原因
15.比较暂存区和HEAD所含文件的差异:git diff --cached (暂存区和HEAD之间的差异)
16.比较工作区和暂存区所含文件的差异:比较所有文件的差异:git diff
比较指定文件的差异:git diff -- 文件名 (可以是多个文件名)
17.让暂存区恢复成HEAD一样:git reset HEAD (会把暂存区所有文件取消掉)
18.让工作区的文件恢复为和暂存区一样:git checkout -- 要恢复的文件名
19.取消暂存区部分文件的更改:git reset HEAD -- 要恢复的文件名
20.消除最近的几次提交:git reset --hard commit ID
21.不同提交的指定文件的差异:git diff 分支名1 分支名2 比较两个分支差异
比较两个分支中指定文件的差异:git diff 分支名1 分支名2 -- 文件名
22.删除文件:git rm 文件名
23.开发中临时添加了临时任务:git stash(暂时存放)
git stash apply(把之前暂存的内容放到工作区 暂存区的内容还在)
git stash pop 把之前暂存的内容放到工作区 清理掉暂存区的内容
git stash list 查看暂时存放区
24.指定不需要Git管理的文件:创建一个 .gitignore 文件夹/文件 在里面添加git不需要管理的文件 保存即可。可以参考GitHub 提供的gitignore 的各种编程语言的配置
25.将git仓库备份到本地:
常用协议 语法格式 说明
本地协议(1) /path/to/repo.git 哑协议
本地协议(2) file:///path/to/repo.git 智能协议
Http/https 协议 http://git-server.com:port/path/to/repo.git 平时接触的都是
https://git-server.com:port/path/to/repo.git 智能协议
ssh协议 user@git-server.com:path/to/repo.git 智能协议
哑协议与智能协议
区别:哑协议传输进度不可见;智能协议传输可见
传输速度:智能协议比哑协议传输速度快
git clone -- bare 仓库地址 本地仓库名称 :克隆不带工作区的仓库
把变更同步到远端:git remote -v
git remote add 仓库名 远端仓库地址
git push 仓库名