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 ...
随机推荐
- influxDB 0.9 C# 读写类
influxDB 0.9 C# 读写类 目前influxdb官网推荐的C#读写类是针对0.8版本的,截至本文写作之前,尚未发现有针对0.9的读写类. 我使用influxdb的是用于保存服务器的运行 ...
- Apache Solr 介绍
Apache Solr 介绍 Solr 是什么? Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现.服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解J ...
- Python开发工具Atom
python基础教程之Python开发工具Atom 本节内容如下: Atom简介 下载安装Atom 安装Python开发包 使用Atom开发Python程序 Atom简介 Atom是Github开 ...
- windows下安装mingw-w64
mingw-w64应该可以算是mingw的改进版本吧,mingw系列编译器是非常好的并且主流的c/c++编译器 mingw-w64只负责程序的编译,只提供命令行操作没有编辑代码的图像界面,代码的编写需 ...
- PHP 获取url里文件的扩展名
PHP 获取url地址中文件的扩展名 $url = 'http://www.abc.com/ab/cd/e.php?id=1&data=2#laowen';echo pathinfo( par ...
- DS哈希查找--线性探测再散列
题目描述 定义哈希函数为H(key) = key%11.输入表长(大于.等于11),输入关键字集合,用线性探测再散列构建哈希表,并查找给定关键字. --程序要求-- 若使用C++只能include一个 ...
- 测试教程网.unittest教程.8. 断言异常
From: http://www.testclass.net/pyunit/assert_raise/ 背景 我们有时候需要断言一些方法会抛出异常,这些异常需要符合我们的预期. 代码 新建test_e ...
- 【mysql】MySQL知识整理-死锁分析-性能优化等
[[TOC]] 常用操作指令 show databases:显示所有的数据库: use dbName: 使用指定数据库 show tables: 显示所有的数据表: desc tableName: 查 ...
- jQuery插件制作之全局函数用法实例
原文地址:http://www.jb51.net/article/67056.htm 本文实例讲述了jQuery插件制作之全局函数用法.分享给大家供大家参考.具体分析如下: 1.添加新的全局函数 所谓 ...
- Oracle group by
group by 简单点理解就是根据什么分组 为此 group by job 根据job进行分组 举例:在Oracle当中scott/oracle 下有emp表 进行如下操作 体会order b ...