文档章节

git常用技能(转)

张小贤
 张小贤
发布于 2015/10/20 13:37
字数 1168
阅读 132
收藏 19

学习使用 Git 已经一年有余,一些常用技能也用的炉火纯青了,但偶尔碰到一些生僻的技能,总是需要去 Google,第二次用时又忘了。所以这是一篇我自认为比较重要的 Git 技能表,主要供自己查阅使用,反复查阅能够加深印象,提升技能熟练度。如果你是还不知道 Git 是什么,建议先阅读 廖雪峰的Git教程

工作流

Git 最核心的一个概念就是工作流。工作区(Workspace)是电脑中实际的目录;暂存区(Index)像个缓存区域,临时保存你的改动;最后是版本库(Repository),分为本地仓库和远程仓库。下图真是一图胜千言啊,就无耻盗图了。

远程仓库

添加远程仓库

git remote add origin git@server-name:path/repo-name.git  #添加一个远程库

查看远程仓库

git remote      #要查看远程库的信息
git remote -v   #显示更详细的信息

推送分支

git push origin master    #推送到远程master分支

抓取分支

git clone git@server-name:path/repo-name.git   #克隆远程仓库到本地(能看到master分支)
git checkout -b dev origin/dev  #创建远程origin的dev分支到本地,并命名为dev
git checkout origin/dev --track #与上面效果一样
git pull origin master          #从远程分支进行更新
git fetch origin master         #获取远程分支上的数据

$ git branch --set-upstream branch-name origin/branch-name,可以建立起本地分支和远程分支的关联,之后可以直接git pull从远程抓取分支。

另外,git pull = git fetch + merge to local

删除远程分支

$ git push origin --delete bugfix
To https://github.com/wuchong/jacman
- [deleted]         bugfix

更新远程分支信息

项目往前推进的过程中,远程仓库上经常会增加一些分支、删除一些分支。 所以有时需要与远程同步下分支信息。

git fetch -p

-p就是修剪的意思。它在fetch之后删除掉没有与远程分支对应的本地分支,并且同步一些远程新创建的分支和tag。

历史管理

查看历史

git log --pretty=oneline filename #一行显示
git log -p -2      #显示最近2次提交内容的差异
git show cb926e7   #查看某次修改

版本回退

git reset --hard HEAD^    #回退到上一个版本
git reset --hard cb926e7  #回退到具体某个版
git reflog                #查看命令历史,常用于帮助找回丢失掉的commit

用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^HEAD~100就是上100个版本。

管理修改

git status              #查看工作区、暂存区的状态
git checkout -- <file>  #丢弃工作区上某个文件的修改
git reset HEAD <file>   #丢弃暂存区上某个文件的修改,重新放回工作区

查看差异

git diff              #查看未暂存的文件更新 
git diff --cached     #查看已暂存文件的更新
git diff HEAD -- readme.txt  #查看工作区和版本库里面最新版本的区别
git diff <source_branch> <target_branch>  #在合并改动之前,预览两个分支的差异

使用内建的图形化git:gitk,可以更方便清晰地查看差异。当然 Github 客户端也不错。

删除文件

git rm <file>           #直接删除文件
git rm --cached <file>  #删除文件暂存状态

储藏和恢复

git stash           #储藏当前工作
git stash list      #查看储藏的工作现场
git stash apply     #恢复工作现场,stash内容并不删除
git stash pop       #恢复工作现场,并删除stash内容

分支管理

创建分支

git branch develop              #只创建分支
git checkout -b master develop  #创建并切换到 develop 分支

合并分支

git checkout master         #切换到主分支
git merge --no-ff develop   #把 develop 合并到 master 分支,no-ff 选项的作用是保留原分支记录
git branch -d develop       #删除 develop 分支

标签

显示标签

git tag         #列出现有标签 
git show <tagname>  #显示标签信息

创建标签

git tag v0.1    #新建标签,默认位 HEAD
git tag v0.1 cb926e7  #对指定的 commit id 打标签
git tag -a v0.1 -m 'version 0.1 released'   #新建带注释标签

操作标签

git checkout <tagname>        #切换到标签

git push origin <tagname>     #推送分支到源上
git push origin --tags        #一次性推送全部尚未推送到远程的本地标签

git tag -d <tagname>          #删除标签
git push origin :refs/tags/<tagname>      #删除远程标签

Git 设置

设置 commit 的用户和邮箱

git config user.name "xx"               #设置 commit 的用户
git config user.email.com "xx@xx.com"   #设置 commit 的邮箱
git config format.pretty oneline        #显示历史记录时,每个提交的信息只显示一行


本文转载自:

张小贤
粉丝 9
博文 46
码字总数 11139
作品 0
福州
私信 提问
Git 学习看这篇就够了!

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 可能新手会问“git和github有什么关系啊?” git是一个版本控制工具; github是一个用git做版本控...

Michaelyn
2016/12/26
19
0
我是如何学习git

一开始学习git的时候,网上的git教程很多,看得人眼花缭乱,不知道如何下手。现在对git已经很熟悉了,回过头来总结一下学习方法。 一般官方文档是最全面,但是不一定适合快速上手。我们可以学...

好好编程
2017/11/14
0
0
Axure原型绘制篇(一)如何设计一款产品网站

很感谢开源中国这个平台能提供这样一个技术性的场地,供技术爱好者们勇往直前的学习。下面给大家讲述一下作为一个技术人员的转型史(工作经验),百转千回最后到了产品,做产品其实也没有想象...

鲁雯雪
2016/06/29
49
3
大型互联网架构师必备团队协作专题

工程化专题 工欲善其事必先利其器,不管是小白,还是资深开发,都需要先选择好的工具。提升开发效率和团队协作效率,让自己有更多时间来思考 面向人群:具有1-5年工作经验的人群 Maven 生成可...

Java高级架构
2017/12/21
0
0
Git 最基本的操作命令

序言 Git操作是作为程序猿必备的一项技能,虽然现在各种git操作软件满天飞,但是很多人还是在merge、commit、add、pull、push中迷离了双眼,本文是最简单的git命令操作,旨在以最简洁的语言记...

LY丶Smile
2017/12/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

DevExpress-winform实现打印功能

创建Windows窗体,拖入richEdtControl(或者GridControl)+打印按钮(button) 双击打印,创建click事件,直接用richEdtControl1调用ShowPrintPreview()方法 private void btnPrint_Click(o...

元歌
38分钟前
2
0
Lucene

Lucene 简介: Lucene是apache下的一个开源的全文检索引擎工具 1.1.全文检索:先分词创建索引,再搜索(分词:就是将一个句子分成多个单词) 全文检索的流程分为两大部分:索引流程、搜索流程...

klmkom
39分钟前
1
0
SpringBoot2.0高级案例(03):集成 JavaMail ,实现异步发送邮件

本文源码码云地址:知了一笑https://gitee.com/cicadasmile/middle-ware-parent 一、JavaMail的核心API 1、API功能图解 2、API说明 (1)、Message 类: javax.mail.Message 类是创建和解析邮...

知了一笑
39分钟前
17
0
Andrew Ng 机器学习鸡尾酒音频分离算法解析

[w,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x'); 在学习机器学习的课程过程中,ng用一行代码实现了音频分离的效果,这里对这行代码进行解析。 [x1, Fs1] = audioread('E:\sounds\f...

gdxz110
42分钟前
1
0
动漫人物阴影绘画技巧

动漫人物阴影绘画技巧?我们在上色的时候,对色彩的使用都大致了解,但是却不知道怎么画阴影。如果这是在现实日常生活中会看到的,但是要想画出来的话就很难了,下面就让我们一起来看看画阴影...

设绘嗨
44分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部