1. git的全局配置
–global 代表是全局配置(只用配置一次)
设置用户名:
git config --global user.name [用户名]
git config --global user.name Visionary1455
设置邮箱:
git config --global user.email [邮箱]
git config --global user.email 15282219250@163.com
查看所有配置:
git config --list
2. 本地常用命令
2.1 初始化项目
git init
2.2 查看工作区的状态
git status
2.3 添加工作区文件到暂存区索引(git能检测文件修改)
git add [文件名]
git add readme.md
2.4 删除暂存区的文件索引(git不检测文件修改)
git rm --cached [文件名]
git rm --cached readme.md
2.5 修改文件的提交
git commit -m "[提交的注解]" [文件名]
git commit -m "修改了readmen.md" readme.md //commit之前必须先加入到文件暂存区
git commit -am "修改后的文件,可以不用先加入到文件暂存区" readme.md
2.6 查看帮助
git help [命令]
git help add
3. 版本控制(对不同的版本进行回退)
3.1 查看所有的提交日志
git log //查看所有的日志
git log -n3 //查看前三个log
git log --pretty=oneline //只显示一行(只有当前版本及以前的)
git log --onelie //同上
git reflog //用于版本回退或前进(推荐)
3.2 版本的前进后退
3.2.1 前进和后退
git reset --hard [版本的hash] //可用于版本前进和后退
3.2.2 只能用于版本后退
git reset --hard HEAD^^^^ //回退四个版本,(一个^回退一个版本)
git reset --hard HEAD~[n]
git reset --hard HEAD~4 //回退四个版本
3.3 reset的三个参数
3.3.1 --soft
不修改暂存区和工作区,指移动HEAD的指针到指定的版本
git reset --soft [版本的hash]
3.3.2 --mixed
修改暂存区,不修改工作区,指移动HEAD的指针到指定的版本
git reset --mixed [版本的hash]
3.3.3 --hard(推荐)
修改暂存区和工作区,指移动HEAD的指针到指定的版本
git reset --hard [版本的hash]
4. 文本的对比
4.1 对比工作区和暂存区的文件
git diff [文件名]
git diff readme.txt
4.2 对比工作区和版本库中的文件
git diff HEAD [版本hash] [文件名]
git diff HEAD HEAD readme.md //对比当前版本的readme.md
git diff HEAD HEAD^ readme.md //对比上一个版本的readme.md
4.3 对比暂存区和HEAD
git diff --cached [文件名]
5. 分支
5.1 查看所有分支
git branch -v
5.2 创建分支
git branch [分支名]
git branch feature_game //只创建分支
git branch -b feature_game //创建并切换到分支
5.3 前后当前所处分支
git checkout [分支名]
git checkout feature_game
5.4 删除分支
git branch –d [分支名] //删除已合并的分支
git branch –D [分支名] //删除未合并的分支
5.5 分支的合并(重要)
(1) 切换到接收合并的分支
git checkout master
(2) 合并分支feature_game到master
git merge feature_game
git merge --allow-unrelated-histories //合并两个不相干的分支
(3) 如果feature的parent的hash是master,就没有冲突,否则可能发生冲突(解决冲突)
在冲突文件中相同修改的地方产生特殊符号如
<<<<<<<HEAD
xxxxx
===== 上面部分代表上一个master版本的内容
xxxxxx
>>>>>>> master //合并后的master版本的冲突内容,修改删除冲突符号
xxxxx
xxxxx
(4) 重新添加索引,提交日志(冲突的commit不加文件名)
git add readme.md
git commit -m "冲突解决"
6. 远程项目管理
6.1 添加远程git仓库
git remote add origin http://github.com/xxx
//orgin相当于一个远程仓库链接的别名
6.2 查看本地的所有远程仓库
git remote -v
//(fetch)代表用于拉去项目的url
//(push)代表用于推送的url
6.3 远程推送
git push [远程仓库url或别名] [本地分支名]
git push origin master
6.4 远程拉去项目
git pull [远程仓库url或别名] [本地分支名] //拉取项目并合并
相当于
git fetch [远程仓库url或别名] [本地分支名]
+
git merge [远程仓库url或别名] [本地分支名]
6.5 远程项目的下载
git clone [远程仓库url或别名]
6.6 设置ssh密钥(否则每次需要使用账号和密码登录)
cd ~
rm -rvf .ssh
ssh-keygen -t rsa -C [邮箱]
cd .ssh
ll
cat id_rsa.pub
登录github-->头像-->setting-->SSH and GPG key
复制id_ras.pub文件的内容粘贴到New SSH key
7.Git对象关系
7.1 三种对象
(1) tree //文件和文件夹
(2) commit //记录
(3) blob //文件内容
7.2 文件及文件内容查看
git cat-file -p hash值 //文件内容查看
git cat-file -t hash值 //文件类型查看
7.3 分离头指针方式创建分支
git branch fix 历史commit哈希值
7.4 图像界面查看分支及commit
gitk -a
7.5 修改历史commit的Message
(1) git rebase -i 修改commit的上一个hash
(2) 在打开的vim中修改pick,为reword(保留提交,只修改message),保存退出
(3) 修改message,保存退出
7.6 清空暂存区、工作区
git reset HEAD
git checkout -- [文件名] //工作区域暂存区保持一致
git reset HEAD -- [文件名] //暂存区域版本库HEAD一致
8 临时保存暂存区和工作区
8.1 保存
git stash
8.2 查看所有临时保存
git stash list
8.3 取出临时保存
git stash apply //只是取出
git stash pop //取出,并删除临时保存
9 忽略文件
.gitignore //.git同级目录文件
匹配的内容,git status进行忽略
10 ssh链接
(1) 在~/.ssh目录中创建ssh密钥
ssh-keygen -t rsa -b 4096 -C "邮箱"
(2) 再~/.ssh目录下复制id_rsa.pub中的公钥密钥