廖雪峰博客的git 教程写得不错, 很详细,但是却总结的不是很好。 这里哥再详细总结一遍吧!

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d

git merge feature1 将 feature1 分支合并到当前分支 。 两个分支 合二为一 !

可能出现3种情况:

1 feature1 有修改, 当前分支没有修改(没有 add ,还是commit?) , 那么就 fast-forward 。(可以理解为 feature1 的内容完全基于当前分支 )

2 feature1 无修改, 当前分支有修改, 。。。

3 feature1 有修改, 当前分支有修改, 如果没有冲突就自动合并, 如果有冲突,则需要手动合并冲突。( 这里所谓冲突,一般是指同一行内容不一致的情况? )

4 feature1 无修改, 当前分支没有修改, 不做变化。

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

用git log --graph命令可以看到分支合并图。

git log --graph --pretty=oneline --abbrev-commit

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

git-br-policy

小结

Git分支十分强大,在团队开发中应该充分应用。

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

小结

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

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

软件开发中,总有无穷无尽的新的功能要不断添加进来。

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

现在,你终于接到了一个新任务:开发代号为Vulcan的新功能,该功能计划用于下一代星际飞船。

开发一个新feature,最好新建一个分支;

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

远程仓库的默认名称是origin;

本地仓库的名称? 好像没有。

远程仓库 可以有多个吗?

分支的名字通常是 master、 branch1 , issue, bug, ...

推送分支

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

$ git push origin master

如果要推送其他分支,比如dev,就改成:

$ git push origin dev

但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

master分支是主分支,因此要时刻与远程同步;

dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!

$ git push origin master 是把本地仓库的master 推送到 远程仓库origin, 但是如何指定远程的 分支是哪个 ?

—— 加上 /branchName, 也就是下面的形式:

git checkout -b dev origin/dev

git push origin/dev

小结

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

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

git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;

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

git log --graph

http://blog.csdn.net/yutian377547/article/details/42625125

git remote add origin 有两种方式:

1 ssh, 支持好, 速度快

2 https ,

git remote add origin https://github.com/dawnminghuang/word_recognition.git

———— origin 是个标志可以随便改成自己喜欢的名字

1.3 git add和git commit

git add 就是把目标文件快照放入暂存区域,还没有提交到本地仓库,要把目录下的所有文件都添加到暂存区域进行跟踪,使用命令git add .或者git add -A。

git commit 把暂存区域的文件提交到本地仓库去。这种方式会启动文本编辑器以便输入本次提交的说明,必须要填写提交说明否则无法提交。

或者使用git commit –m ”说明信息”

1.4 git remote,git pull和git push

把远程仓库配置到本地仓库

git remote add:

git remote add origin https://github.com/dawnminghuang/word_recognition.git

origin 是个标志可以随便改成自己喜欢的名字,后面的是远程仓库的名字,dawnminghuang是用户名,word_recognition.git是仓库名。

git pull remote:

git pull https://github.com/dawnminghuang/word_recognition.git

git push:

git push origin master 这时需要输入用户名和密码

过一段时间后,就能够在网上看到自己上传的代码

二、发布代码后,对代码进行修改后怎么更新

更新,只需要在对应的目录下git bash,然后git add,git commit,git push。

三、怎么修正和撤销一些错误

3.1 使用git commit把错误或者不想要的注释信息提交上去

git commit -m 'xxxxx'

那么执行 git commit --amend 修改最后一次提交的信息

执行 'git push origin +master:master' 强制更新

3.2 第一次创建git时,出现错误

error:failed to push some refs to ‘URL’

执行git pull remote name。

================== git remote 操作:

VBIRDCPU2LK+Administrator@vbirdcpu2lk MINGW64 /e/git/gitlearn01 (master)

$ git remote add re1 https://github.com/R1310328554/RelocateJar2mvn.git

VBIRDCPU2LK+Administrator@vbirdcpu2lk MINGW64 /e/git/gitlearn01 (master)

$ git remote

origin

re1

VBIRDCPU2LK+Administrator@vbirdcpu2lk MINGW64 /e/git/gitlearn01 (master)

$ git pull re1

From https://github.com/R1310328554/RelocateJar2mvn

  • [new branch] master -> re1/master

    You asked to pull from the remote 're1', but did not specify

    a branch. Because this is not the default configured remote

    for your current branch, you must specify a branch on the command line.

VBIRDCPU2LK+Administrator@vbirdcpu2lk MINGW64 /e/git/gitlearn01 (master)

$ git pull re1/master

fatal: 're1/master' does not appear to be a git repository

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

and the repository exists.

You asked to pull from the remote 're1', but did not specify

a branch. Because this is not the default configured remote

for your current branch, you must specify a branch on the command line.

—————— 对应远程仓库 origin, 其分支默认就是 master, 所以不用指定。

git pull origin 和 git pull origin master 效果是一样的 。 ?

对于 其他远程仓库, 其分支是需要手动指定

远程仓库,可以有多个分支, 每个分支可以有不同权限, 只读? 读写? 删除? 等等

============== git fetch

生成密钥:

149 ssh-keygen -t rsa -C R1310328554

150 cat /c/Users/Administrator/.ssh/id_rsa.pub

理解到刚刚好的那个点子上, 才算真正的理解 !

为什么 git push 需要xxx

git 常用操作总结的更多相关文章

  1. git报错:'fatal:remote origin already exists'怎么处理?附上git常用操作以及说明。

    git添加远程库的时候有可能出现如下的错误, 怎么解决? 只要两步: 1.先删除 $ git remote rm origin 2.再次执行添加就可以了. ---------------------- ...

  2. 版本控制工具——Git常用操作(上)

    本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...

  3. git常用操作 配置用户信息、拉取项目、提交代码、分支操作、版本回退...

    git常用操作 配置用户信息.拉取项目.提交代码.分支操作.版本回退... /********git 配置用户信息************/ git config --global user.name ...

  4. Git常用操作(二)

    仓库拉取 git clone XXX 修改仓库链接 $ git config -l # 显示coding列表 $ git config --get remote.origin.url # 返回orig ...

  5. 版本控制工具——Git常用操作(下)

    本文由云+社区发表 作者:工程师小熊 摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码.使用分支.出现代码冲突的解决办法.紧急保存现场和恢复现场的操作.学会以后已经 ...

  6. (数据科学学习手札141)利用Learn Git Branching轻松学习git常用操作

    1 简介 大家好我是费老师,Git作为世界上最流行的版本控制系统,可以说是每一位与程序打交道的朋友最值得学习的软件之一.除了管理自己的项目,如果你对参与开源项目感兴趣,那么Git更是联结Github. ...

  7. Git常用操作汇总(转)

    如果一个文件被删除了,可以使用切换版本号进行恢复.恢复方法: 先确定需要恢复的文件要恢复成哪一个历史版本(commit),假设那个版本号是: commit_id,那么 git checkout com ...

  8. git常用操作记录

    之前的多人项目大多使用了SVN作为版本控制,自己只会用eclipse连接GitHub的操作.这次项目采用了git作为版本控制系统,所以学会了很多新操作,这里权当记录,以备后用. git的一些基本操作可 ...

  9. git常用操作笔记

    这是我看了廖雪峰的git教程,写的笔记,仅作为一个学习的记录 一.大多数我们面临的是已经有一个进行中的项目了,我们只需克隆下来就可以了 1.安装git,安装完后,可输入git,回车,查看是否已安装 2 ...

随机推荐

  1. Jquery模板-----JsRender

    重新排版与堂堂88 先看下简单示例: <script type="type='text/html'" id="jianren"> <div c ...

  2. java.lang.NoSuchMethodError: javax.wsdl.xml.WSDLReader.readWSDL

    CXF调用web service报错:java.lang.NoSuchMethodError: javax.wsdl.xml.WSDLReader.readWSDL 原因,wsdl jar报冲突,系统 ...

  3. Windows Remote Shell(WinRM)使用介绍

    最近,为了实验我们安装了台Windows Server Core的服务器,没有图形界面的系统总会给人一种很完全的感觉,我们本着安全到底的想法,使用了Windows Remote Shell 的管理方式 ...

  4. 两招解决异常_Cannot find any information on property 'XXX' in a bean of type 'XXX'的问题

    第一招 在进行Java Web项目开发的时候,我碰到过下面这个异常: Cannot find any information on property 'XXX' in a bean of type ' ...

  5. gitlab 10.8.1 迁移

    参考官网: https://docs.gitlab.com/ee/raketasks/backup_restore.html    Backing up and restoring GitLab 及 ...

  6. R语言 实验三 数据探索和预处理

    计算缺失值个数 计算缺失率   简单统计量:计算最值     箱形图分析   分布分析:画出频率直方图 统计量分析:对于连续属性值,求出均值以及标准差         缺失值处理:删除法     去除 ...

  7. 杂项:TMT(数字媒体产业)

    ylbtech-杂项:TMT(数字媒体产业) TMT(Technology,Media,Telecom),是科技.媒体和通信三个英文单词的缩写的第一个字头,整合在一起.含义实际是未来(互联网)科技.媒 ...

  8. [转][html]设置IIS 默认页

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.we ...

  9. WordPress更换主题空白问题

    刚才尝试着更换了一个主题,后来发现预览主页的时候是一片空白.查了很多资料,有说是index.php的权限问题,有说是插件问题,有说是UTL-8编码的问题,我都试过了,发现都不行,后来仔细研究了一下,发 ...

  10. setjmp的跳转

    ** 问 :goto语句只能在函数内使用,那如果想要在函数内部直接跳到函数外怎么办呢?** ** 答:setjmp跳转 介绍: 举例: #include<stdio.h> #include ...