使用git遇到的各种疑难杂症之解决办法

本文详细介绍了Git的基本操作,包括初始化仓库、添加和提交文件、查看和管理分支、解决合并冲突、远程仓库的关联和操作,以及git工作流的最佳实践。
摘要由CSDN通过智能技术生成

使用git各种问题的解决之道,如何合理使用分支,合并分支冲突了怎么办?

  1. git init 初始化本地git仓库,会生成.git/文件夹
  2. git add . 添加文件到暂存区,文件开始被跟踪,文件修改后也要重新跟踪
  3. git commit -m '说明文字'  将暂存区的文件,提交到本地仓库
  4. 以上两步,可以合成一步 git commit -a -m '说明文字'
  5. git log 查看日志,罗列所有提交过的历史记录,根据记录ID可以回退版本
  6. git log --pretty=oneline 以一行简洁的形式显示日志
  7. git log --pretty=oneline --graph 以一行简洁的图形形式显示日志,适用于多分支
  8. git status 查看文件状态
    1. 新文件 untracked 未被跟踪,下一步是git add
      1. 意味着,git在之前的提交中没有这些文件
      2. git add ,告诉git我要跟踪这些文件 
    2. 新文件 stage 被追踪,待提交 ,下一步是git commit 
    3. 旧文件修改后,未暂存 changes not staged for commit 下一步git add 和commit
  9. git status -s 以简洁的格式查看状态
  10. 排除跟踪文件,.gitignore 文件里直接写不被跟踪的文件,支持通配符*.log
  11. git reset 版本回退,git 通过head指针指向该分支最后一次提交
    1. git reset --hard HEAD^ 回退到上一个版本
    2. git reset --hard HEAD^^ 上上个版本
    3. git reset --hard HEAD~100 上一百个版本
    4. git reset --hard [commint ID] 回退到指定的提交id所在的版本,id可以缩写,前提是唯一
  12. git clone 远程仓库地址,将远程仓库克隆到本地
  13. git push 将本地修改推送到远程仓库 --force 强制推送
  14. git remote -v 查看远程仓库的信息
  15. git remote add 自定义仓库名 远程地址 让本地与远程仓库连接连接
    1. git remote add origin http://www.gitee.com/xxx.git
    2. git brance --set-upstream-to=origin.master 设置本地分支与远程master分支绑定
    3. git pull 将远程获取到本地 (git fetch git merge)
    4. git merge --allow-unrelated-histories
    5. git push
  16. git branch 查看分支
  17. git ls-remote 查看远程分支
  18. git merge 合并分支
  19. 开源项目issue 用来收集用户的意见
  20. 克隆到本地的仓库可以重命名
  21. 开源许可协议:声明你可以用它做哪些事情
    1. 主要关注MIT许可证:允许修改源码后闭源,修改过的文档可不说明 BSD或MIT
      1. MIT , 衍生的产品,可以提到原源码的名字
      2. BSD ,衍生产品不允许用到原源码的名字
    2. 结论,MIT协议的开源项目,使用起来比较放心,不容易侵权
    3. 同理,我们自己创建的项目,也可使用MIT
  22. git tag v1.0.0 给文档打个标签,用来标记发布的结点 git tag 查看标签
    1. git tag v1.1.0 轻量标签
    2. git tag -a v1.2.0 -m '说明文字' 这是附注标签 。git show v1.2.0 可看详情
    3. git push origin v.1.1.0 将某标签推送到远程
    4. git push origin --tags 推送所有标签
    5. git tag -d v1.0.0 删除本地的标签
    6. git push origin -d v1.1.0 删除远程标签
    7. git checkout v1.1.0 切换到对应的标签
  23. git 默认是master分支
  24. git branch 新分支名,用来创建新分支 如git branch test
  25. git checkout test 检出到test分支
  26. git checkout -b test 等于24、25两步的结合,创建并检出到新分支

分支使用和合并分支的经典场景

当源码完成第一个版本时,即可打个tag,发布v1.0.1 并继续迭代开发,比如到第二个版本v2.0.0 

但有人反馈之前发布的1.0.1有bug,那我们就要在回到1.0.1检出个新分支,再修复后,合并到2.0.0

操作演示:

  1. git checkout v1.0.1  切回有bug的版本
  2. git checkout -b hotfix ,再此版本上新建一个分支hotfix
  3. git commit -a -m '修复bug' ,修复bug后提交到仓库
  4. git tag v1.0.2 ,打上新标签
  5. git checkout master 切回主分支
  6. git merge hotfix 将hotfix合并到当前分支(master)
    1. 有代码冲突
      1. <<<到=== 是当前分支的代码
      2. ===到>>> hotfix是要被合并进来的代码
    2. 解决方法:
      1. 手动,直接把<<<===>>>等删除
      2. 用IDE的功能
        1. 接受当前分支
        2. 接受合并来的分支
        3. 接受两者
        4. 比较不同
  7. git add .
  8. 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分支,两者如何关联?

  1. git init 
  2. git add .
  3. git commit -m "初始化项目"
  4. git remote add origin xxx  :将xxx远程仓库地址对应的仓库,命名为origin
  5. git fetch origin main 获取远程仓库中的main分支到本地,变成本地origin/main分支
  6. git branch --set-upstream-to=origin/main 将远程仓库的main分支与本地当前分支关联
  7. git merge --allow-unrelated-histories 允许无关联的分支合并
  8. git config push.default upstream 设置push的默认上游
  9. git push origin 分支名

另一种快捷方式:将上面第6步开始的步骤换成以下步骤

  1. git checkout --track origin/main   /  git checkout main
  2. git push

将本地分支推送成远程新分支

        例如本地当前分支为develop分支

  1. git push origin develop : 远程名 远程分支名 ,注意当前分支与远程分支要同名

删除远程分支

git push origin --delete 分支名

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值