使用git各种问题的解决之道,如何合理使用分支,合并分支冲突了怎么办?
- git init 初始化本地git仓库,会生成.git/文件夹
- git add . 添加文件到暂存区,文件开始被跟踪,文件修改后也要重新跟踪
- git commit -m '说明文字' 将暂存区的文件,提交到本地仓库
- 以上两步,可以合成一步 git commit -a -m '说明文字'
- git log 查看日志,罗列所有提交过的历史记录,根据记录ID可以回退版本
- git log --pretty=oneline 以一行简洁的形式显示日志
- git log --pretty=oneline --graph 以一行简洁的图形形式显示日志,适用于多分支
- git status 查看文件状态
- 新文件 untracked 未被跟踪,下一步是git add
- 意味着,git在之前的提交中没有这些文件
- git add ,告诉git我要跟踪这些文件
- 新文件 stage 被追踪,待提交 ,下一步是git commit
- 旧文件修改后,未暂存 changes not staged for commit 下一步git add 和commit
- 新文件 untracked 未被跟踪,下一步是git add
- git status -s 以简洁的格式查看状态
- 排除跟踪文件,.gitignore 文件里直接写不被跟踪的文件,支持通配符*.log
- git reset 版本回退,git 通过head指针指向该分支最后一次提交
- git reset --hard HEAD^ 回退到上一个版本
- git reset --hard HEAD^^ 上上个版本
- git reset --hard HEAD~100 上一百个版本
- git reset --hard [commint ID] 回退到指定的提交id所在的版本,id可以缩写,前提是唯一
- git clone 远程仓库地址,将远程仓库克隆到本地
- git push 将本地修改推送到远程仓库 --force 强制推送
- git remote -v 查看远程仓库的信息
- git remote add 自定义仓库名 远程地址 让本地与远程仓库连接连接
- git remote add origin http://www.gitee.com/xxx.git
- git brance --set-upstream-to=origin.master 设置本地分支与远程master分支绑定
- git pull 将远程获取到本地 (git fetch git merge)
- git merge --allow-unrelated-histories
- git push
- git branch 查看分支
- git ls-remote 查看远程分支
- git merge 合并分支
- 开源项目issue 用来收集用户的意见
- 克隆到本地的仓库可以重命名
-
开源许可协议:声明你可以用它做哪些事情
- 主要关注MIT许可证:允许修改源码后闭源,修改过的文档可不说明 BSD或MIT
- MIT , 衍生的产品,可以提到原源码的名字
- BSD ,衍生产品不允许用到原源码的名字
- 结论,MIT协议的开源项目,使用起来比较放心,不容易侵权
- 同理,我们自己创建的项目,也可使用MIT
- 主要关注MIT许可证:允许修改源码后闭源,修改过的文档可不说明 BSD或MIT
-
git tag v1.0.0 给文档打个标签,用来标记发布的结点 git tag 查看标签
- git tag v1.1.0 轻量标签
- git tag -a v1.2.0 -m '说明文字' 这是附注标签 。git show v1.2.0 可看详情
- git push origin v.1.1.0 将某标签推送到远程
- git push origin --tags 推送所有标签
- git tag -d v1.0.0 删除本地的标签
- git push origin -d v1.1.0 删除远程标签
- git checkout v1.1.0 切换到对应的标签
- git 默认是master分支
- git branch 新分支名,用来创建新分支 如git branch test
- git checkout test 检出到test分支
- git checkout -b test 等于24、25两步的结合,创建并检出到新分支
分支使用和合并分支的经典场景
当源码完成第一个版本时,即可打个tag,发布v1.0.1 并继续迭代开发,比如到第二个版本v2.0.0
但有人反馈之前发布的1.0.1有bug,那我们就要在回到1.0.1检出个新分支,再修复后,合并到2.0.0
操作演示:
- git checkout v1.0.1 切回有bug的版本
- git checkout -b hotfix ,再此版本上新建一个分支hotfix
- git commit -a -m '修复bug' ,修复bug后提交到仓库
- git tag v1.0.2 ,打上新标签
- git checkout master 切回主分支
- git merge hotfix 将hotfix合并到当前分支(master)
- 有代码冲突
- <<<到=== 是当前分支的代码
- ===到>>> hotfix是要被合并进来的代码
- 解决方法:
- 手动,直接把<<<===>>>等删除
- 用IDE的功能
- 接受当前分支
- 接受合并来的分支
- 接受两者
- 比较不同
- 有代码冲突
- git add .
- git commit -m "合并hotfix分支"
查看和删除分支
- git branch 查看所有分支
- git branch -v 同时查看最后一次提交
- git branch --merged 查看所有合并到当前分支的分支
- git branch --no-merged 查看所有没有合并到当前分支的分支
- git branch -d hotfix 删除hotfix分支
- git branch -D hotfix 强制删除分支
git的工作流
- master 作为主分支 ,用来发布稳定版本
- develop作为开发分支,当有稳定版本时,合并到master分支中
- topic作为某一主题或功能或特性的分支进行开发,比如一些测试性的功能,开发完成后合并到develop分支中
合并远程分支
远程分支也是一种分支结构,以 <remote>/<branch>的形式命名,例如:origin/master
假设远程有个main分支,本地有个master分支,两者如何关联?
- git init
- git add .
- git commit -m "初始化项目"
- git remote add origin xxx :将xxx远程仓库地址对应的仓库,命名为origin
- git fetch origin main 获取远程仓库中的main分支到本地,变成本地origin/main分支
- git branch --set-upstream-to=origin/main 将远程仓库的main分支与本地当前分支关联
- git merge --allow-unrelated-histories 允许无关联的分支合并
- git config push.default upstream 设置push的默认上游
- git push origin 分支名
另一种快捷方式:将上面第6步开始的步骤换成以下步骤文章来源:https://www.toymoban.com/news/detail-861628.html
- git checkout --track origin/main / git checkout main
- git push
将本地分支推送成远程新分支
例如本地当前分支为develop分支文章来源地址https://www.toymoban.com/news/detail-861628.html
- git push origin develop : 远程名 远程分支名 ,注意当前分支与远程分支要同名
删除远程分支
git push origin --delete 分支名
到了这里,关于使用git遇到的各种疑难杂症之解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!