1、配置user.name和user.email
git config --global user.name "xxx"
// 若不想全局配置,删掉--global
即可
git config --global user.email 123@qq.com
【注】全局配置只需要配置一次
2、初始化仓库&克隆仓库
git init
git clone <仓库地址>
3、常用git指令
git add <file-name>
// 跟踪文件
git rm <file-name>
// 移除
git rm --cache <file-name>
// 保留在目录中,但是不被跟踪
git reset HEAD <file-name>
// 取消已修改的缓存状态
git commit
// 提交代码,保存到本地仓库
git status
// 查看文件状态和所在分支
git log
// 查看提交历史
【拓展】git commit相关操作
(1)终端输入git commit
(2)回车后自动跳转到编辑器中,按i
进入编辑模式,输入提交信息,如fix:修改bug
等信息
(3)按esc
,再按:wq
退出编辑模式
(4)上述1-3步可以综合为:git commit -m 'fix:修改bug'
即可
(5)git commit -a
//提交所有修改的代码,无论是否被提交到暂存区
【拓展】git log相关操作
(1)git log --pretty=online
// 一行显示
(2)git log --pretty=format:"%h-%an,%ar:%s"
//自定义格式
(3)%h
简化哈希 %an
作者名字 %ar
修改日期(距今) %ad
修订日期 %s
提交说明
(4)git log --graph
// 图形化输出
(5)git log --all
// 查看所有提交信息
4、远程仓库
git remote add origin <仓库地址>
// 本地仓库和远程仓库关联,其中远程仓库名为origin
git remote rename <new name>
// 原地仓库更名
git push origin master
// 将代码推送到远程仓库的master分支
【拓展】远程仓库鉴权(SSH鉴权)
cd ~/.ssh
ssh-keygen -t rsa -b 4096 -C "all-OK 推荐写邮箱"
提示设置密钥名字:输入密钥名字
提示设置密钥密码:输入密钥密码
ls
查看ssh目录下的文件,其中密钥名字
为私钥,密钥名字.pub
为公钥
cat 密钥名字.pub
获取公钥
到github仓库的setting,进入中,设置SSH密钥,添加密钥名字和公钥
5、分支branch
git branch --list
// 查看当前所在分支和分支目录
git branch <branch-name>
// 创建分支
git checkout <branch-name>
// 切换分支
git checkout -b <branch-name>
// 创建并切换到新分支
git merge
// 合并分支
git push -u origin master
// 使用-u,后面直接git push
就直接推送到origin master 但要切换推送的分支 就需要重新运行这个指令
git fetch <远程代码库名>
//将指定远程库的更新全部取回本地
git fetch <远程代码库名> <远程分支名>
//可以指定拉取远程某个分支
git merge <远程代码库名>/<远程分支名>
//要是用git fetch
拉取远程代码更新之后,git log FETCH_HEAD
之后判断没有冲突后,用这个命令合并到本地分支上了
git checkout -b <本地分支名> <远程分支名>
//fetch
远程分支后,新建本地分支,用于跟踪远程分支
git branch -d <本地分支名>
//删除本地分支
git push origin -d <远程分支名>
//删除远程分支
6、reset撤销提交
git reset head
// 撤销当前的提交
git reset head~
// 撤销上一次的提交
git reset head~2
// 撤销倒数第二次的提交
git reset head~ --soft
// soft:只是撤销提交,撤销commit操作,但是不撤销git add
的操作;不用--soft,既撤销git commit
又撤销git add
,但是修改还在,只是没有使其成为暂存状态。
git reset head~ --hard
// hard:全部取消,撤销git commit
,撤销git add
,连修改都没了。一夜回到解放前。(不推荐使用)
7、rebase变基
执行以下命令:
git checkout B
git rebase A
结果:将B分支上的修改转移到A分支上
【注】使用rebase注意事项
若B已经推送到远程,B分支就不要进行变基。比喻:master比作地基,B分支比作一楼并推送到远程仓库,同事接着在一楼的基础上盖第二层,当B分支变基了,这栋楼就没有一楼了。变基会影响下一步的开发。