1.git企业开发过程
业务的分支大概有以下几个:
master:代码随时可能上线
develop:代码最新
feature/xxx:实际业务开发分支
release/xxx:预发布分支
fix:修复bug分支
过程大概是这样的:
首先拉取远程仓库,切换到自己得分支进行开发本地feature/xxx,开发完成后,commit进行提交到本地,切换到本地develop,pull 下远程的develop,然后merge feature/xxx into develop,将本地develop push到远程的develop,发布测试QA,QA测试通过后,切换到本地master,pull 下远程的master,本地master得到最新master代码,将本地feature/xxx的代码merge into master中,然后将本地master代码push到远程的master。版本预发布,等等。
注意点:
①比如本地的master,根据本地的master切换出一个分支feature/login,修改完代码后没有commit,那么又直接checkout master,会造成本地feature/login上的代码自动合并到本地master上,所以写完代码后需要提交commit。
②在develop或者master分支 拉取后,合并代码后,需要再pull下远程的代码,
pull = fetch+merge
因为可能会有其他同学push了最新的代码,如果不pull,可能会造成冲突,还有可能造成覆盖远程的代码。
2.基本命令以及注意点如下:
# 配置用户名
git config --global user.name "test"
# 配置邮箱
git config --global user.email "email"
# 查看用户名
git config --global user.name
# 查看邮箱
git config --global user.email
# 查询配置
git config --global --list
# 生成公钥
ssh-keygen -t rsa
# 本地仓库初始化
git init
# 修改或新增代码,添加到本地代码暂存区,工作区->暂存区
# 提交单个文件到暂存区
git add a.txt
# 提交所有的文件到暂存区
git add .
# 本地版本生成,提交,暂存区->本地仓库,每次commit,都会有一个版本记录的生成
git commit -m "提交文件内容说明"
# 查看文件的状态, unstaged未暂存,staged已暂存
git status
# 查看提交日志
git log[option]
# 显示所有分支
git log --all
--pretty=oneline #将提交信息显示为一行
--abbrev=commit #使得输出的commitId更简短
--graph #以图的形式显示
git log --pretty=oneline --abbrev-commit --all --graph
# vim 编辑文件
vim 文件名
# 版本回退,切换
git reset --hard commitID
# 查看已经删除的文件记录
git reflog
# 一些文件不想让git管理,创建.gitignore
touch .gitignore
vim .gitignore #将不需要管理的文件以及后缀输入
# 关于HEAD HEAD指向谁,谁就是当前分支
有多个分支,只能对一个分支进行修改,这个分支称为当前分支。工作区看到的就是当前分支。
是当前分支引用的指针,它总是指向某次commit,默认是上一次的commit。git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针。在 git 中,它是一个指向你正在工作中的本地分支的指针,可以将 HEAD 想象为当前分支的别名。
# 查看分支
git branch
# 新创建一个分支
git branch 分支名
# 切换分支
git checkout 分支名
# 创建并切换分支
git checkout -b 分支名
# 合并分支,比如合并到master,首先切换到master
git checkout master
git merge dev01
# 删除分支,-d需要做各种检查
git branch -d 分支名
# 做强制删除
git branch -D 分支名
# git冲突解决,
# 同一个文件的同一行
# HEAD 到 ==== 指向的是当前分支,
# ===== 到 >>>> dev是冲突分支
<<<<<<< HEAD
count=2
=======
count=1
>>>>>>> dev
# 开发中使用的流程与原则
# 连接到远程gitee
ssh -T git@gitee.com
# 告诉本地远程仓库是哪一个
git remote add origin(远程仓库别名) 远程仓库地址
git remote add origin git@gitee.com:catchcode11/git_test.git
# 查看远程仓库
git remote
# 将本地代码推到远程仓库
git push origin 远程分支名
git push origin master(远程分支如果是master,那么后面的:master可以省略)
# 将本地分支推到远程分支
git push origin 本地分支名:远程分支名
git push origin master:master
# 强制推送
git push -f origin 本地分支:远程分支
# 查看本地分支和远程分支的对应关系
git branch -vv
#
git remote -vv
# 绑定本地分支和远程分支
git push --set-upstream origin master:master
# 以下是设置的对应关系
$ git push --set-upstream origin master:master
Everything up-to-date
branch 'master' set up to track 'origin/master'.
$ git branch -vv
dev c0cc516 update file03.txt count=1 dev
* master 15b61e1 [origin/master] git merge conflict
# 克隆远程仓库到本地ssh
git clone <仓库路径> [本地目录]
# 从远程仓库拉取代码到本地
# 抓取指令:将仓库的更新拉取到本地,但是不进行合并
git fetch [remote name][branch name]
git fetch origin/master
# 拉取命令,就是将远程仓库的修改拉取到本地并进行合并,等同于fetch+merge
git pull [remote name][branch name]
git pull origin master
# 在push到远程之前,先pull下远程仓库,把冲突解决掉。
git pull origin master,有conflict,在本地解决冲突。