Git远程仓库及分支管理

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

解决办法:

再次用 ssh-keygen -t rsa -C "[email protected]"  生成密钥

其中,问你是否覆盖 输入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 [email protected]: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 ‘[email protected]: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 [email protected]:FrankWangJQ/Lonch.git

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

wangjiaingdeAir:PycharmProjects wangjianqing$ git clone [email protected]: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 [email protected]{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

原文地址:https://www.cnblogs.com/1026164853qqcom/p/11267319.html

时间: 2024-10-08 20:58:55

Git远程仓库及分支管理的相关文章

git 远程仓库 轻松创建

很多时候,为了方面管理我们写的代码,我们采用git 远程仓库来进行管理和备份.防止代码被他人篡改或删除.那如何来进行创建远程仓库呢? 1.我们必须有一个远程服务器端,在这里可以把任意一台电脑作为服务器,创建步骤: [email protected]:~$ pwd /home2/boxbuilder [email protected]:mkdir remote.git 创建一个裸库,方法: [email protected]:~$ git init --bare Initialized empty

Git 学习笔记&lt;远程仓库与标签管理&gt; (四)

什么是远程仓库? 就像第一章介绍的那样,远程仓库可以储存你编写的所有源码和资源文件. 甚至也可以当网盘使,不过当然有很多契合git管理文本的特性. 下面就要以 github 为示例远程仓库进行介绍.  (也可以自己弄一台服务器作远程仓库). 创建仓库 在主页找到 +New repository 或者右上角的加号里有.输入名字 描述 然后没钱只能public就能确定了.然后呢,点名字打开你的仓库.(主页右下角可以找到) 关于与远程仓库的连接 首先你打开你的保险箱得先证明身份吧,不然我怎么知道你是客

Git 远程仓库的管理和使用

要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某 个项目时,需要管理这些远程仓库,以便推送或拉取数据,分享各自的工作进展.管理远程仓库的工作,包括添加远程库,移除废弃的远程库,管理各式远程库分 支,定义是否跟踪这些分支,等等 查看当前的远程库 要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字.在克隆完某个项目后,至少可以看到一个名为

git 本地给远程仓库创建分支 三步法

命令如下: 1:本地创建分支dev [email protected] /D/home/myself/Symfony (master) $ git branch dev 2:下面是把本地分支提交到远程仓库 [email protected] /D/home/myself/Symfony (master) $ git push origin dev Total 0 (delta 0), reused 0 (delta 0) To [email protected]:TuringTD/Symfony

1. git 本地给远程仓库创建分支 三步法

命令如下: 1:本地创建分支dev 1 2 [email protected] /D/home/myself/Symfony (master) $ git branch dev 2:下面是把本地分支提交到远程仓库 1 2 3 4 5 [email protected] /D/home/myself/Symfony (master) $ git push origin dev Total 0 (delta 0), reused 0 (delta 0) To [email protected]:Tu

git远程仓库

git远程仓库 到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Git有什么特别的地方. 没错,如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别.为了保证你现在所学的Git物超所值,将来绝对不会后悔,同时为了打击已经不幸学了SVN的童鞋,本章开始介绍Git的杀手级功能之一(注意是之一,也就是后面还有之二,之三……):远程仓库. Git是分布

windows下git简单使用及分支管理使用方法

 Windows上git的简单使用 git客户端安装(略) 1)生成ssh密钥: $ ssh-keygen -t rsa -C "[email protected]"  Generating public/private rsa key pair.  Enter file in which to save the key (/c/Users/bunny/.ssh/id_rsa):  Created directory '/c/Users/bunny/.ssh'.  Enter pass

Git远程仓库的添加及克隆

Git远程仓库的添加及克隆 1.Git远程仓库 通过前面几篇关于Git的介绍,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Git有什么特别的地方. 确实如此,如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别.为了保证你现在所学的Git物超所值,将来绝对不会后悔,同时为了打击已经不幸学了SVN的童鞋,从本篇开始介绍Git的杀手级功能之一(注意是之一,

Git 最佳实践:分支管理

5月份,为统一团队git分支管理规范,刚开始准备自己写,在网上搜了下,发现不少不错的git分支管理实践.最后我为团队选择了这个git分支管理实践 A successful Git branching model ,网上有不少参考这篇文章写的中文版gitflow实践,推荐一个中文版的Git 最佳实践:分支管理. 除了团队git管理的需要,我自己在github上有重要的开源项目采用github flow,这里转载一篇关于这两种分支管理的文章:GitHub Flow & Git Flow 基于Git