git 常用操作总结
廖雪峰博客的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 常用操作总结的更多相关文章
- git报错:'fatal:remote origin already exists'怎么处理?附上git常用操作以及说明。
git添加远程库的时候有可能出现如下的错误, 怎么解决? 只要两步: 1.先删除 $ git remote rm origin 2.再次执行添加就可以了. ---------------------- ...
- 版本控制工具——Git常用操作(上)
本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...
- git常用操作 配置用户信息、拉取项目、提交代码、分支操作、版本回退...
git常用操作 配置用户信息.拉取项目.提交代码.分支操作.版本回退... /********git 配置用户信息************/ git config --global user.name ...
- Git常用操作(二)
仓库拉取 git clone XXX 修改仓库链接 $ git config -l # 显示coding列表 $ git config --get remote.origin.url # 返回orig ...
- 版本控制工具——Git常用操作(下)
本文由云+社区发表 作者:工程师小熊 摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码.使用分支.出现代码冲突的解决办法.紧急保存现场和恢复现场的操作.学会以后已经 ...
- (数据科学学习手札141)利用Learn Git Branching轻松学习git常用操作
1 简介 大家好我是费老师,Git作为世界上最流行的版本控制系统,可以说是每一位与程序打交道的朋友最值得学习的软件之一.除了管理自己的项目,如果你对参与开源项目感兴趣,那么Git更是联结Github. ...
- Git常用操作汇总(转)
如果一个文件被删除了,可以使用切换版本号进行恢复.恢复方法: 先确定需要恢复的文件要恢复成哪一个历史版本(commit),假设那个版本号是: commit_id,那么 git checkout com ...
- git常用操作记录
之前的多人项目大多使用了SVN作为版本控制,自己只会用eclipse连接GitHub的操作.这次项目采用了git作为版本控制系统,所以学会了很多新操作,这里权当记录,以备后用. git的一些基本操作可 ...
- git常用操作笔记
这是我看了廖雪峰的git教程,写的笔记,仅作为一个学习的记录 一.大多数我们面临的是已经有一个进行中的项目了,我们只需克隆下来就可以了 1.安装git,安装完后,可输入git,回车,查看是否已安装 2 ...
随机推荐
- "上市时间: 2014年秋冬季" unicode十进制编码转中文
"上市时间: 2014年秋冬季" unicode十进制编码转中文 System.Web.HttpUtility.HtmlDecode(tmp);
- Maven打包将所有的依赖都打入
附上pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- Unity单例
引自:http://www.unitymanual.com/thread-16916-1-1.html
- autoconf配置的项目,编译debug版本
./configure CFLAGS=" -g " 当然,c++代码就把 CFALGS 改成 CPPFLAGS
- 峰Redis学习(9)Redis 集群(概述)
第一节:Redis 集群概述 redis cluster是去中心化,去中间件的,也就是说,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态.每个节点都和其他所有节点 ...
- 我的第一个react native
虽然react native出来了很久,但是自己一直因为各种原因没有接触学习,中间尝试过一次,但是因为复杂的环境配置而放弃了.现在,终于因为公司的项目不得不去学习了,当然了,再配置开发环境上面,我还是 ...
- 大数据:Parquet文件存储格式【转】
一.Parquet的组成 Parquet仅仅是一种存储格式,它是语言.平台无关的,并且不需要和任何一种数据处理框架绑定,目前能够和Parquet适配的组件包括下面这些,可以看出基本上通常使用的查询引擎 ...
- setjmp的跳转
** 问 :goto语句只能在函数内使用,那如果想要在函数内部直接跳到函数外怎么办呢?** ** 答:setjmp跳转 介绍: 举例: #include<stdio.h> #include ...
- 总结一下连日来在MAC下被Python3设下的坑
当时的情况:mac下自带python2, 1.安装pyhon3: 首次从官网下载了安装包安装,安装目录在/Library/Frameworks/Python.framework/Versions/3. ...
- MySQL常用语句大全
数据库操作:创建数据库create database database_name 查看数据库 show databases使用数据库use dbname删除数据库 drop database dbna ...