惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
H
Help Net Security
Recorded Future
Recorded Future
The Register - Security
The Register - Security
F
Full Disclosure
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
爱范儿
爱范儿
Security Archives - TechRepublic
Security Archives - TechRepublic
Simon Willison's Weblog
Simon Willison's Weblog
Cisco Talos Blog
Cisco Talos Blog
I
InfoQ
T
Tenable Blog
T
Tor Project blog
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
博客园 - 叶小钗
B
Blog
V
V2EX
Jina AI
Jina AI
L
LangChain Blog
月光博客
月光博客
W
WeLiveSecurity
U
Unit 42
AWS News Blog
AWS News Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 聂微东
V
Visual Studio Blog
A
Arctic Wolf
T
Tailwind CSS Blog
The Cloudflare Blog
SecWiki News
SecWiki News
S
SegmentFault 最新的问题
Hacker News - Newest:
Hacker News - Newest: "LLM"
宝玉的分享
宝玉的分享
MyScale Blog
MyScale Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Securelist
www.infosecurity-magazine.com
www.infosecurity-magazine.com
腾讯CDC
雷峰网
雷峰网

Jark's Blog

Flink 1.16:Hive SQL 如何平迁到 Flink SQL Flink CDC 如何简化实时数据入湖入仓 基于 Flink SQL 构建流批一体的 ETL 数据集成 Nexmark: 如何设计一个流计算基准测试? Demo:基于 Flink SQL 构建流式应用 Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL Flink SQL 编程实践 如何从小白成长为 Apache Committer? 聊聊Blink开源和Flink社区近况 Flink 小贴士 (7): 4个步骤,让 Flink 应用达到生产状态 Flink 小贴士 (6): 使用 Broadcast State 的 4 个注意事项 Flink 小贴士 (5): Savepoint 和 Checkpoint 的 3 个不同点 Flink 小贴士 (4): 如何选择状态后端 Flink 小贴士 (3): 轻松理解 Watermark 一文了解 Apache Flink 核心技术 Flink 零基础实战教程:如何计算实时热门商品 5分钟从零构建第一个 Flink 应用 Flink 小贴士 (2):Flink 如何管理 Kafka 消费位点 Flink小贴士 (1):确定Flink作业所需资源大小时要考虑的6件事 Flink在美团的实践与应用 我在阿里的这两年 Flink 原理与实现:Aysnc I/O Flink 原理与实现:Table & SQL API Flink 原理与实现:Session Window Flink 原理与实现:Window 机制 Flink 原理与实现:数据流上的类型和操作 Flink 原理与实现:如何生成 JobGraph Flink 原理与实现:理解 Flink 中的计算资源 Flink 原理与实现:如何生成 StreamGraph Flink 原理与实现:架构和拓扑概览 Flink 原理与实现:内存管理 Flink 原理与实现:如何处理反压问题 Flink官方文档翻译:安装部署(集群模式) Flink官方文档翻译:安装部署(本地模式) 迟到的2015年终总结 高效Macbook开发之道(工具篇) Clojure学习笔记(三):并发与引用 Clojure学习笔记(二):语法 Clojure学习笔记(一):数据结构 Thrift 实践 Thrift 入门 Metrics 是个什么鬼 之入门教程 使用Redis和SQLAlchemy对Scrapy Item去重并存储 使用Scrapy定制可动态配置的爬虫 编程方式下运行 Scrapy spider 读《程序员必读的职业规划书》 Spark 下操作 HBase(1.0.0 新 API) HBase 集群安装部署 Spark On YARN 集群安装部署
Git 常用技能
WuChong · 2015-03-30 · via Jark's Blog

发表于   |   分类于 杂项资源   |  

学习使用 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 #获取远程分支上的数据

抓取GitHub上某个pull request到本地

git fetch origin pull/ID/head:BRANCHNAME
git checkout BRANCHNAME

$ 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
# 或者直接push一个空分支
$ git push origin :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 "xx@xx.com" #设置 commit 的邮箱
git commit --amend --author "Jark Wu <imjark@gmail.com>" #修改上次提交的用户信息
git config format.pretty oneline #显示历史记录时,每个提交的信息只显示一行

hoxis wechat