Git分支管理(核心原理/常用命令)
2021-01-30 16:19:28 3 举报
AI智能生成
Git版本控制详解
作者其他创作
大纲/内容
官网:https://git-scm.com/
配置文件
查看
所有配置:git config -l
全局配置:git config --global --list
系统配置:git config --system --list
本地配置:git config --local --list
位置
全局配置文件位置:~/.gitconfig
系统配置文件位置:/usr/local/git/etc/gitconfig
本地配置文件位置:当前项目根目录下 .git/config
重要配置
git config --local user.name "lishaojie"
git config --local user.email "397456470@qq.com"
git config --global user.name "lishaojie"
git config --global user.email "397456470@qq.com"
设置SSH
生成公钥
在终端中进入~/.ssh目录,输入 ssh-keygen -t rsa
不需要输入内容,连续点击三次回车,即可生成完毕
配置公钥
找到~/.ssh目录下的 id_rsa.pub 公钥,复制内容
在GitHub/GitLab/Gitee账户中找到SSH配置即可
建立连接
此时就可以创建远程仓库并与本地仓库建立连接
在远程仓库创建项目,clone到本地仓库进行操作
核心原理
分区
工作区:平时存放项目代码的地方(workspace)
暂存区:存放临时改动,通过add添加(只是个临时文件)
本地仓库:包含提交的所有版本数据,HEAD指向最新版本
远程仓库:托管代码的服务器
提交
与
回滚
与
回滚
工作区已控制的文件(绿色)内容
被修改后(红色)想要回退
被修改后(红色)想要回退
git checkout -- xxx.java
已经 add 到暂存区的文件,想要
回退到工作区已修改的状态
回退到工作区已修改的状态
git reset HEAD xxx.java
已经 commit 到本地仓库的代码,
想要回退到之前或者之后的版本
想要回退到之前或者之后的版本
git reset --hard [版本号]
已经 push 到远程仓库的代码,
想要用远程版本覆盖/更新到本地
想要用远程版本覆盖/更新到本地
git pull origin develop
分支
master:主分支,自动建立,用于发布重大版本更新
develop:开发分支,日常开发在此分支上进行
临时分支
feature-xxx:功能分支,从 develop 分出,开发完合并回develop分支
release-xxx:预发布分支,从 develop 分出
hotfix-xxx:紧急修复分支,从 master 分出
常用命令
git log:日志
git log:查看日志提交记录
git reflog:查看已合并/被覆盖的所有记录
git log --graph:查看提交分支图标
git log --graph --pretty=format:"%h %s":简洁显示
git reflog:查看已合并/被覆盖的所有记录
git log --graph:查看提交分支图标
git log --graph --pretty=format:"%h %s":简洁显示
git tag:版本 (master)
git tag -a v1 -m "第一版"
git push origin --tags
git push origin --tags
git branch:分支
git branch:查看本地分支
git branch -r:查看远程分支
git branch xxx:创建分支
git branch -d xxx:删除分支
git branch -r:查看远程分支
git branch xxx:创建分支
git branch -d xxx:删除分支
git diff:对比
git diff:不加任何参数,将工作区(未add的内容)和暂存区进行比较;
git diff HEAD:将工作区与HEAD指针指向的commit进行比较;
git diff --cached:将暂存区与当前commit进行比较;
git diff dev:将工作区与目标分支的最新commit进行比较;
git diff [commitId_1] [commitId_2]:将两个commit进行比较。
git diff HEAD:将工作区与HEAD指针指向的commit进行比较;
git diff --cached:将暂存区与当前commit进行比较;
git diff dev:将工作区与目标分支的最新commit进行比较;
git diff [commitId_1] [commitId_2]:将两个commit进行比较。
git clone/pull:拉取
git clone [地址]
第一次拉取远程仓库代码,自动根据地址配置远程仓库
git remote add [name] [地址]
添加一个新的远程仓库,同时指定一个别名
git pull origin dev
覆盖/更新本地<=>
覆盖/更新本地<=>
git fetch origin dev:把远程仓库代码拉取到本地仓库
git merge origin/dev:把本地仓库的代码合并到工作区
git fetch origin dev:把远程仓库代码拉取到本地仓库
git rebase origin/dev:把本地仓库的代码合并到工作区
git rebase:变基
使提交记录变简洁
使提交记录变简洁
合并日志
git rebase -i HEAD~3:合并最近3条日志,解决冲突后 git add [file]
执行 git rebase --continue 将3条日志合并为一条日志【提交】
git rebase --abort:中止并返回到“git rebase”之前的状态【回滚】
合并/减少 master 分叉
切换到 dev 分支,执行 git rebase master
切换到 master 分支,执行 git merge dev
测试上线
创建测试/预发布分支
git checkout -b release_xxx
git push origin release_xxx
由测试人员拉取
git pull 或者 git push 报 fatal: refusing to merge unrelated histories
这是因为两个分支没有取得关系
追加:--allow-unrelated-histories
扩展
code review
页面
点击 + Pull Request,填写想要合并的分支,提交后发送到 team leader
team leader 收到请求后,点击 add your review 进行逐一检验
小组组长也可以将代码拉到本地,review 完成后再提交到 dev 分支
给开源项目贡献代码
fork 开源项目,clone 到本地进行修改
修改好后 push 到自己的远程仓库
页面点击 New Pull Request
配置 Beyond Compare
git config --local merge.tool bc4
git config --local mergetool.path '/usr/local/bin/bcomp'
git config --local mergetool.keepBackup false
免密提交
URL中体现
原来的地址:https://gitee.com/lishaojie1993/novel-cloud.git
修改的地址:https://用户名:密码@gitee.com/lishaojie1993/novel-cloud.git
SSH来实现
(企业)
(企业)
生成公钥并配置到 github/gitLab/gitee
git remote add origin git@gitee.com:lishaojie1993/novel-cloud.git
以后使用 git push origin master
自动管理凭证
(本地)
(本地)
系统钥匙串自动管理账号密码
任务管理
issues:文档以及任务管理(提问、指派、标签、筛选)
wiki:项目文档
0 条评论
下一页