Git
本地仓库初始化
git init
配置用户信息
配置信息优先级:全局配置 < 配置局部
# 全局配置用户信息: C:\User\系统用户名\.gitconfig文件
git config --global user.name 'your name'
git config --global user.email 'yourEmail@email.com'
# 配置局部用户信息: .git中的config文件中
git config user.name 'your name'
git config user.email 'yourEmail@email.com'
查看提交版本记录
# 查看提交版本记录
git log # 完全信息
git log --pretty=oneline # 部分信息
git log --oneline # 更少部分信息
git log -num # 列出最近的num(一个变量)条信息
## 以上都是查看包含当前版本的所有以前版本
git reflog # 列出 所有 Git操作日志,版本前进可以参考
#如果出现很多版本信息,一屏显示不完,会出现一个 : 并闪烁光标,可以通过 ↓ 查看更多,然后按 q 键退出查看
#================================================#
## linux系统操作补充:
## 创建文件夹
mkdir dirname
## 创建文件
touch readme.md
## 列出文件夹下的所有内容
ls
ll -a #可以查看隐藏文件
## 编辑模式
:set nu #显示编辑行数
esc + :wq #保存文件并退出
# 按下 i 进入编辑模式
# 编辑|查看某个文件
vim readme.txt
# 输出某个文件中的内容
cat readme.txt
# 删除文件
rm readme.txt
查看文件状态
# 查看文件状态
git status
添加文件到暂存区
# .和*表示添加所有新增文件,也可以指定添加文件名称
git add .
将文件添加到历史区
# 可以不用-m ,这样会直接进入到命令行编辑文件的窗口,按下 i 可以进入编辑模式
git commit -m 'some messge'
版本回退/回滚
本质:修改HEAD指针的操作
1、基于Commit Id的操作
## 回退或前进到任意id版本
git reset --Hard <Commit Id>
2、使用 ^ 操作(只能回退)
## 回退到当前版本的上一个版本,可写多个 ^
git reset --hard HEAD^
3、使用 ~ 操作(只能回退)
git reset --hard HEAD ~ <num> #回退num个版本
撤销修改
工作区的撤销:
git checkout --<filename>
暂存区的撤销:
git reset HEAD <filename>
git checkout --<filename>
查看分支
#查看本地仓库的分支
git branch
#查看远程仓库的分支
git branch -r
#查看所有仓库分支的情况
git branch -a
创建分支
#创建分支
git branch <分支名称> #单纯创建
#创建分支并切换到该分支
git checkout -b <分支名称>
切换分支
git checkout <分支名称>
合并分支
#先切换到被合并的分支上
git merge <需要合并的分支>
# 合并冲突:同时修改提交同一个文件
# 解决方案:1、找到冲突文件
# 2、删除特殊标记(尖括号和等号,分支名)
# 3、找到提交的开发人员,商量到底如何处理,删除还是手动合并
# 4、再git add 和 git commit
删除分支
git branch -d <分支名称> #删除分支,如果没有合并的分支,可能删不掉
git branch -D <分支名称> #强制删除分支,不管有没有合并
远程仓库与本地仓库连接
git remote add <仓库链接别名,一般用origin> <远程仓库的https或者ssh地址>
删除远程仓库的连接
git remote remove <仓库链接别名>
查看本地仓库与远程仓库的关联信息
git remote -v
推送到远程仓库
#第一次要输入仓库账号密码
git push (加一个-u可以在后续提交不需要写后面的 仓库链接别名 和 分支名) <仓库链接别名> <分支名>
克隆远程仓库
git clone <仓库地址>
# 克隆后的不需要连接
抓取fetch
git fetch <仓库链接别名> <分支名>
拉取pull
# 同步代码
# pull = merge + fetch
git pull
团队协作
## 没有权利push代码到远程仓库
# 1、将项目fork到自己的仓库
# 2、clone自己fork的项目到本地
# 3、写好代码推送到自己的远程仓库
# 4、发起pull request请求合并
# 可以创建分支,分支也可以发起pull request,操作一样
Git工作流
1、集中式:所有人在一个分支上写代码 master
2、git flow :不同分支干不同的操作,分支命名规范
3、forking:fork ----> pull request操作