git 基本操作
1.安装与配置
下载安装
- git下载地址 根据自己的平台下载,如果是windows,下载的安装包一直下一步就可以了
配置基本
- 一把我们会选择用户级别的配置
--global
# 当前项目配置文件 ./.git/config
git config --local user.name "your name"
git config --local user.email "email"
# ~/.gitconfig
git config --global user.name "your name"
git config --global user.email "email"
# 系统配置文件 /etc/.gitconfig
git config --system user.name "your name"
git config --system user.email "email"
2.初始化git仓库
-
本地初始化仓库
创建一个项目(空的文件夹)或者已有的项目,在终端中(CMD、等)打开这个项目
-
执行初始化git仓库命令
git init
-
克隆远程已有的项目
在终端中打开你要存放这个项目的目录
-
执行克隆命令
# url 是远程仓库的地址 git clone [url]
3.开发操作(工作区、暂存区、版本库)
工作区
工作区就是被git管理的目录下有新增文件、已经跟踪的文件内容有变化的区域
git会自动监测被改动的文件
-
撤销修改
# 撤销改动的语法 git checkout -- 文件名 -
隐藏修改内容
# 临时保存 git stash save -a 注释 # 查看临时保存的记录 git stash list # 恢复,num是可选项,通过git stash list可查看具体值。只能恢复一次,恢复完之后就会把这次的记录删除 git stash pop stash@{num} # 恢复,num是可选项,通过git stash list可查看具体值。可回复多次 git stash apply stash@{num} # 删除 保存的记录 git stash drop stash@{num} # 删除所有的记录 git stash clear
暂存区
被git跟踪并且添加到缓存里面的文件
-
将工作区的内容添加到暂存区
# 语法 git add 文件名 # 示例 使用 . 表示当前目录下面的所有文件(包括子目录里面的所有文件) git add . # 添加指定的文件 xxx.txt yyy.txt README.md git add xxx.txt yyy.txt README.md
版本库
-
缓存区东内容被提交
# 将暂存区的内容提交到版本库 git commit -m "这次提交的注释" -
查看提交记录
# 简介显示最近提交 git reflog # 详细显示所有提交记录 git log -
版本库回退
# 选择以前提交的版本库 # 版本号可以在提交记录中查询 git reset --hard 版本号 -
合并(修改)提交记录
git rebase -i 版本号
分支
-
新建分支
git branch 分支名字 -
查看已有的分支
git branch -
切换分支
git checkout 分支名字 # 创建并切换分支 git checkout -b 分支名字 -
删除分支
git branch -d 分支名字 # 强制删除 git branch -D 分支名字 -
合并分支
git meger 被合并的分支名字 -
合并分支可能产生冲突
- 产生冲突会有warning:提示内容很详细
- 产生的冲突需要我们自己解决,可以通过
git status查看那么文件有冲突 - 找到有冲突的文件手动解决冲突并提交
git commit -am "解决冲突"
远程仓库
-
一般我们会用 SSH地址,这样可以省去使用的时候频繁输入账号密码
配置git-ssh
远程分支:托管在github、gitlab、coding、码云等这样的第三方服务层库上的仓库
-
与远程仓库建立连接
git remote add 远程仓库别名 远程仓库地址 # git clone 的方式不用配置 -
向远程仓库提交记录
git push 远程仓库别名 分支名 -
从远程仓库拉去最新的提交记录
# 一步拉去 git pull 远程仓库别名 分支名 # 两部拉去 git fetch 远程仓库别名 分支名 #有冲突解决冲突 git git merge 远程仓库别名/分支名 # 或者 下面会用到rebase的讲解 git rebase 远程仓库名字/分支名 -
远程仓库操作
-
查看已有的远程仓库
# 远程仓库别名列表 git remote # 带有url的 git remote -v -
删除远程仓库
git remote rm [别名] 修改
-
rebase(变基)
-
场景一:多个记录整合成一个记录
git rebase -i 某一次的几条记录 # 从某一次的提交记录信息 合并到当前提交记录 git rebse -i HEAD~3 # 最近的三次提交记录合并 # 出现 vi 编辑区域 根据下面提示选择 一般我们会将pick 修改为 s # 保存退出 再次出现 vi 的编辑区 列出要合并的提交记录 例如修改为 v1 & v2 & v3 # 保存 git log # 查看提交记录- 注意 尽量不要合并已经提交到远程仓库的(提交记录)
-
场景二:
-
master c1 - c2 - c4 -c5
dev C3
Master c1 - c2 - c3 -c4 -c5
将c3在其他分支上的提交记录 合并到master 分支上
git checkout dev git rebase master # 变更当前dev分支的基 git checkout master git merge dev -
场景三:远程拉取代码 会有合并冲突 产生分叉
# 可能产生记录分叉 git pull origin dev # 不产生记录分叉 git fetch origin dev git meger origin/dev git rebase origin/dev-
注意事项
- git rebase 产生冲突怎么办?
- 会提示
- 解决冲突
- git add .
- Git rebase --continue
标签tag
-
开发完成到一定阶段的打包
# 提交记录的版本号 默认是当前最新的提交记录 也可以指定某次提交记录的版本号标识 git tag -a v1.4 -m "描述信息" [提交记录的版本号] -
将tag上更新到远程仓库
# 推送单个tag到远程仓库 git push 远程仓库地址别名(origin) v1.4 # 推送所有的 git push 远程仓库地址别名(origin) --tags -
查看已有的标签
git tag -
查看某个标签的详细内容
git show v1.4 -
删除 某个tag
git tag -d v1.4
忽略文件
在git仓库的根目录下添加
.gitignore文件-
文件内容写不想向远程仓库提交的内容
- ide编辑器的缓存目录
- 个人配置文件
- 编译解释器的缓存文件
- 打包的可执行文件
-
实例
a.py !a.py dir/ *.py *.h[a|c|d] #提供各种各样的 .gitignore github上查看
rm 操作删除文件、git缓存
-
删除缓存
git rm --cached [文件名] -
删除文件及缓存
git rm [文件名] # 强制删除 git rm -f [文件名]
4.开发工作流
mkdir mpro
cd mpro
# 初始化仓库
git init
touch app.py
git add .
git commit -m "开启服务"
# 远程推送
git remote add origin 远程地址
git push origin master
git tag -a v1 -m "v1版本"
git push origin --tags
cd ~
mkdir p1mp
git clone 远程仓库
git checkout dev
git checkout -b "p1dev"
touch fun1.py
git add .
git commit -m "fun1.1"
git push origin p1dev
# 提交 review
# leader 在 dev 分支 切换出 release 分支 进行测试
# 同步本地 master
# 打标签
git tag -a v2 -m "v2版本"
git push origin --tags
git checkout -b ""
工作流示意图
- 参考工作流示意图