git关联篇

从0开始

  • 首先登陆gitlab账号

  • 找到SSH key位置

  • 切换到git版本控制,生成SSH key

    • ssh-keygen -t rsa -C "邮箱"
    • cat .ssh/id_rsa.pub # 查看公钥 并复制
  • 将公钥复制到gitlab/setting/SSH Keys/Key, Title可以为空,点击Add key即可

  • 然后在本地初始化一个git仓库

    • git init
  • 将本地仓库与远程仓库关联起来

    • git remote add origin 'git地址'
      
  • 在本地创建分支并与远程分支关联

    • # 查看远程的所有分支
      git fetch
      
    • # 创建并关联分支,本地分支名最好与远程分支名一样,这里拉的是远程仓分支的代码
      git checkout -b 本地分支名 origin/远程分支名
      
  • ojbk,本地分支就可以与远程分支进行数据push pull交互了

    • touch 1.txt
      git add 1.txt
      git commit -m "测试"
      # 将1.txt推送到远程仓库,推送本地分支以后会自动更新到远程仓库
      git push origin 本地分支名	
      
- git status     # 查看当前仓库的状态,commit以后就算是提交了,就看不到了
- git branch     # 查看当前所在分支
- git branch -a     # 查看所有分支
- git checkout 分支名称    # 切换到某个分支
- git checkout -b 分支名称  # 创建新分支
- git remote -v   # 查看远程库信息

bug分支处理:

​ 当前状态:项目在master主分支上跑,突然出现了bug,要紧急修复,而我在Dev分支上开发新功能。leder要求在两个小时内解决bug。

​ 解决方案:在自身的dev分支上,先用git stash把当前工作状态隐藏起来,然后切换到要修复bug的分支master,在master的分支上创建并切换一个新分支bug-fix, 在新分支上修复bug ,(修改文件,提交代码),bug修复完成后切换到主分支master,再合并修复好bug的分支,使用命令git merge --no-ff -m "bug已修复" bug-fix, 最后再删除修复的bug分支git branch -d bug-fix,切换回工作分支继续干活git switch dev, 查看刚才隐藏的工作状态中的文件git stash list, 恢复工作文件并删除隐藏的文件git stash pop.

多人协作:

  1. 首先要本地分支feature_new 并与远程分支realse/3.9.0/创建远程关联

    git checkout -b feature_new origin/realse/3.9.0/

  2. 编写代码

  3. 将代码推送了远程:git push

  4. 推送失败的话要先拉取代码 git pull

  5. 拉取代码也失败的话,原因是需要指定本地的feature_new分支远程的分支realse/3.9.0/链接,

    git branch --set-upstream-to=origin/realse/3.9.0/ feature_new

  6. git pull 有冲突,解决冲突,没冲突就拉取成功

​ 总结:

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联git branch --set-upstream-to=origin/远程分支名(release/3.0.9) 本地分支名;或者git push --set-upstream origin 本地分支名 推送当前分支并将远端设置为上游(会报不匹配任何分支,没有上游,,想推送成功,前提是远程仓库必须有这个本地分支名的分支才能推送成功)

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

原文地址:https://www.cnblogs.com/lance-lzj/p/14338983.html