zoukankan      html  css  js  c++  java
  • Git远程仓库及分支管理

    问题一:配置完本地的git后,每次提交都需要我输入密码?  NND  

    解决办法:

    再次用 ssh-keygen -t rsa -C "your_email@example.com"  生成密钥

    其中,问你是否覆盖 输入y   ——   Overwrite (y/n)? y  覆盖之前的id-rsa

    其余全部回车,千万不要在Enter passphrase (empty for no passphrase)输入密码了。

    最后,在github的Settings的SSH and GPG keys中,点击new SSH keys,把 .ssh目录下的id-rsa.pub的内容复制到key这一栏。

    完成!!

    Git的远程仓库:

    一: 把本地的项目上传到Git新建的项目中.,并建立关联关系!

    注册一个github  新建一个Repository

    在本地创建一个git项目  git init  然后新增一个文件(没有任何文件的空项目在push到远程库时会提示错)

    然后使用git add   和 git commit -m

    然后在本地仓库下执行: git remote add origin git@github.com:yourProjectName/Name.git

    最后在执行push命令:   git push -u origin master

    把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    wangjiaingdeAir:learnGit wangjianqing$ git remote add origin1 git@github.com:FrankWangJQ/learnGIt.git

    wangjiaingdeAir:learnGit wangjianqing$ git push -u origin master

    To github.com:FrankWangJQ/Lonch.git

     ! [rejected]        master -> master (non-fast-forward)

    error: failed to push some refs to 'git@github.com:FrankWangJQ/Lonch.git'

    hint: Updates were rejected because the tip of your current branch is behind

    hint: its remote counterpart. Integrate the remote changes (e.g.

    hint: 'git pull ...') before pushing again.

    hint: See the 'Note about fast-forwards' in 'git push --help' for details.

    wangjiaingdeAir:learnGit wangjianqing$ git push -u origin1 master

    Counting objects: 3, done.

    Writing objects: 100% (3/3), 219 bytes | 219.00 KiB/s, done.

    Total 3 (delta 0), reused 0 (delta 0)

    To github.com:FrankWangJQ/learnGIt.git

     * [new branch]      master -> master

    Branch 'master' set up to track remote branch 'master' from 'origin1'.

     之后本地的learnGit项目再有任何改动,只要执行完提交, 然后直接使用命令:git push origin master  就可以了.

    二:把远程已经存在的项目克隆到本地并建立关联

    在Git目录中执行  

    git clone git@github.com:FrankWangJQ/Lonch.git

    会在该目录中生成一个新新项目 Lonch  并把项目中的文件克隆到本地

    wangjiaingdeAir:PycharmProjects wangjianqing$ git clone git@github.com:FrankWangJQ/Lonch.git

    Cloning into 'Lonch'...

    remote: Enumerating objects: 6, done.

    remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 6

    Receiving objects: 100% (6/6), done.

    wangjiaingdeAir:PycharmProjects wangjianqing$ ls

    Fastmonkey YunZhens_UI-master geekbangpython

    Lonch YunZhens_api-master learnGit

    UI_demo_python dubboApi_testDemo

    UI_java_wechat dubboDemo

    wangjiaingdeAir:PycharmProjects wangjianqing$ cd Lonch/

    wangjiaingdeAir:Lonch wangjianqing$ ls

    README.md

    Git的分支管理:

    开启一条新的分支  dev  开发分支:  

    git checkout -b dev 创建并切换分支  创建分支:git branch <name>  切换分支:git checkout <name>

    查看当前项目的分支:

    $ git branch
    * dev
      master

    此时在项目中提交的任何修改  在push后都会提交到远程的分支库中,  因为当前的HEAD  指向的 dev分支.  dev分支的修改不会影响到主干代码

    修改完成后, 可以切换回原来的主干  $ git checkout master   

    这时,你之前的修改是不会在master中展示的   这时候再把分支中的修改合并至主干才能生效:  $ git merge dev

    合并完成后可以将原有分支删除  $ git branch -d dev

    如果在git merge dev 过程中存在冲突 (比如你在开发dev的过程中修改了readMe,其他人在主干上也修改了readMe),此时用主干去合并dev时会提示冲突!

    可以使用 $ git status   命令查看冲突内容:

    手动修改后  提交代码  然后执行合并操作

    使用:$ git log --graph --pretty=oneline --abbrev-commit  查看分支合并图

    通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

    如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

    git merge --no-ff -m "merge with no-ff" dev

    因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去

    修复bug临时创建分支:

    修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

    当手头工作没有完成时,需要先

    $ git stash  将现有已经完成的部分开发工作保存起来, 然后切换到master分支  在master分支基础上创建bug分支, 

    修改完bug后 合并到master分支;  此时需要跳转到之前开发时的分支上 $ git stash list 查看stash状态(可能有多个);然后你想回复到哪个

    $ git stash apply stash@{0} 

    另一种方式是用 git stash pop,恢复的同时把stash内容也删了

    如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除

    开发过程中分支使用流程一般是

    1. 首先,可以试图用git push origin <branch-name>推送自己的修改;

    2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

    3. 如果合并有冲突,则解决冲突,并在本地提交;

    4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

    如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

    参考资料:  https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320

    三、标签管理

    • 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

    • 命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;

    • 命令git tag可以查看所有标签。

    • 命令git push origin <tagname>可以推送一个本地标签;

    • 命令git push origin --tags可以推送全部未推送过的本地标签;

    • 命令git tag -d <tagname>可以删除一个本地标签;

    • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签

  • 相关阅读:
    Oracle用户管理
    Oracle基本使用
    Oracle 11g安装、卸载
    Oracle
    C#面向对象
    看看Google用户体验十大设计原则
    [转]Delphi 常用控件之TlistView总结
    github + hexo 搭建博客
    CSS3 filter属性学习
    border-box——一种改变盒子尺寸的方法
  • 原文地址:https://www.cnblogs.com/1026164853qqcom/p/11267319.html
Copyright © 2011-2022 走看看