git技巧
工作区 -> git add -> 暂存区 -> git commit -> 版本库 -> git push -> 远程仓库
版本库HEAD表示当前版本,上一个版本HEAD^,上上一个版本HEAD^^.......
配置本机git
git config --global user.name "abcd"
git config --global user.email abcd@efgh.com
git连接自己的github
第一步:创建SSH_key: ssh-keygen -t rsa -C "aaadega@gmail.com",
创建成功后.ssh文件下的id_rsa是私钥,id_rsa.pub是公钥
第二步:登陆GitHub,打开“Account settings”,“SSH Keys”页面
第三步:添加SSH key,用公钥
一切从版本库同步到远程的git都有uname和pword操作push
其他都是从本地直接切换操作
一定要从自己的账号下clone仓库,这样你才能推送修改。先fork再clone
git init 初始化此文件夹为版本库
git add readme.txt 将文件从工作区添加到暂存区
git checkout -- readme.txt 撤销工作区文件的修改
git commit -m "this is commit" 将文件从暂存区提交到版本库
git reset HEAD 从暂存区回退到工作区
git diff 查看工作区文件修改前后的差异
git status 查看工作区与暂存区的文件修改状态
git log 查看提交日志
git log --pretty=oneline
git reset --hard HEAD^ 回退到上一版本
git reflog 查看命令历史
git remote add origin url 为远程Git更名为origin
git push -u origin master 首次推送此次修改
git push origin master 然后可以不加-u
git clone url 克隆一个远程库到本地
git branch page 创建新分支
git checkout page 选择新分支
git checkout -b page 相当于上面两条一起
git branch 查看分支
git merge page 合并分支page到master,checkout到master分支
git merge page --no-ff -m "plain" 禁用Fast forward
git branch -d[D] page 删除分支page,删除前先切换到master分支[D强行删除]
git push origin :page 删除远程分支page
cat read.txt 查看文件内容(冲突)
git log --graph 查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit 查看最近分支合并情况
git stash 隐藏当前工作区
git stath list 查看隐藏的工作区
git stash apply stash{0} 恢复隐藏的工作区,不会删除stash
git stash drop 删除stash
git stash pop stash{0} 恢复隐藏的工作区,一并删除stash
git remote -v 查看远程库信息
git pull 拉取最新分支
git branch --set-upstream branchName origin/branchName 指定本地与远程之间的链接
git tag <name> 可以打一个新标签
git tag 查看所有标签
git tag name id 打标签
-a指定标签名,-m指定说明文字
git show <tagname>可以看到说明文字
有时git clone下来会出现很多branch,更麻烦的是如果主分支没代码那你就只能看到.git目录了。如下面的这个:
$ git clonegit://gitorious.org/android-eeepc/mesa.git
发现本地就只有一个.git目录,那么这个时候就需要checkout了。
进入你的本地目录,如这个是mesa,利用
$ git branch –r
查看branch信息(当然你也可以用git show-branch查看,不过有时并不好用),获得如下branch信息:
origin/android
origin/mesa-es
origin/mesa-es-dri
此时我们需要的是android分支的代码,那么此时就要进行checkout了。
$ git checkout origin/android
你再看你的目录(mesa)下是不是有了代码了?其它的branch同理。
git clone默认会把远程仓库整个给clone下来; T2 {0 t, l+ @0 U" C2 g) i
但只会在本地默认创建一个master分支
如果远程还有其他的分支,此时用git branch -a查看所有分支:
* master
remotes/origin/HEAD -> origin/master " A4 u3 ~+ n5 u5 \7 R" Z( d# J
remotes/origin/master
remotes/origin/python_mail.skin
remotes/origin/udisk
remotes/origin/vip
复制代码
能看到远程的所有的分支,如remotes/origin/python_mail.skin e Y' X9 ~, f1 |
可以使用checkout命令来把远程分支取到本地,并自动建立tracking
$ git checkout -b python_mail.skin origin/python_mail.skin) X& X: I3 Q; ?9 j9 T5 @; J/ M
Branch python_mail.skin set up to track remote branch python_mail.skin from origin.; i/ B! ^3 J# u6 a( }. I$ M- i
Switched to a new branch 'python_mail.skin'
复制代码
或者使用-t参数,它默认会在本地建立一个和远程分支名字一样的分支
折叠展开复制代码
$ git checkout -t origin/python_mail.skin
复制代码
也可以使用fetch来做:
$ git fetch origin python_mail.skin:python_mail.skin
复制代码
不过通过fetch命令来建立的本地分支不是一个track branch,而且成功后不会自动切换到该分支上- z) t: R4 p- s6 _2 d3 a
注意:不要在本地采用如下方法:
$ git branch python_mail.skin
$ git checkout python_mail.skin/ i8 z/ N: a% v/ Q: M
$ git pull origin python_mail.skin:python_mail.skin
复制代码
因为,这样建立的branch是以master为基础建立的,再pull下来的话,会和master的内容进行合并,有可能会发生冲突...
Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master
git log -p master..origin/master
git merge origin/master
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp
git diff tmp
git merge tmp
从远程获取最新的版本到本地的test分支上
之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
结束
git技巧的更多相关文章
- Git技巧总结分享
接触Git有很长一段时间了,从最初的不懂到逐渐熟悉运用,相比于SVN,更热衷于Git这一款强大的版本控制工具. 废话不多说,下面对Git做了一些技巧总结,在此分享下,希望能帮助到一些喜欢Git的朋友们 ...
- eclipse中使用git技巧总结
之前一直使用svn,刚使用git还是有些蹩脚,今天总结下在使用git中常用技巧 1. ①.整个版本还原 当需要还原到某个版本时(多文件),操作如下 右击项目-->Team-->Show i ...
- Git技巧:右键菜单怎么去除?
如果你是按照http://www.cnblogs.com/dunitian/p/5034624.html 那么你就没有这么多蛋疼的菜单了(反之:vs帮你安装的就蛋疼了) 说下解决方法: 1.Win+R ...
- git技巧记录--blame
git blame [-L<m,n>] FilePath 可以查看代码每一行是谁写的(根据该行最后一次改动情况), -L表示要查看的行数范围, m: 起始行数, n:结束行数. 方便快速定 ...
- git技巧记录--子模块删除方法
把子模块推进去了,删掉吧(将子模块删除,然后提交推送),删除子模块步骤: 1.在Platform.Web库下,右键->Git Bash,进入git命令行窗口,输入:git rm –-cached ...
- Git 技巧小结
本篇博客内的内容,主要摘抄自 廖雪峰的 Git教程,这篇教程写的通俗易懂,步步深入,是我见过最棒的Git教程了.下面的全部内容,摘抄自此教程,有需要的朋友,请看完整版. Git版本库 git在创建版本 ...
- git 技巧
将某个文件回退到某个版本 git co d359624286d9c1f022b8b3b6f2d3fe3b6524188b build.sh 查看某个文件在某个版本时的内容 git show d3596 ...
- 8 个 Git 的小技巧
git 已经成为了我日常必备工具之一,我总结我几乎每天使用的8个有用(且简洁)的git技巧. 使用-p选择性添加 当你想提交内容时,你可以通过使用 git commit -am 来选择所有文件或使 ...
- Git(进击学习:远程仓库操作)-V3.0
1.查看当前的远程仓库:git remote或git remote -v 2.添加远程仓库:git remote add [shortname] [url] git remote add pb git ...
随机推荐
- BZOJ.4530.[BJOI2014]大融合(LCT)
题目链接 BZOJ 洛谷 详见这 很明显题目是要求去掉一条边后两边子树sz[]的乘积. LCT维护的是链的信息,那么子树呢? 我们用s_i[x]来记录轻边连向x的子树的和(记作虚儿子),那么sum[x ...
- 专业方向系列-00-Python与有限元初探
案例1 给出4个弹簧的劲度系数,离散后,求其总的刚度矩阵. 代码: import numpy as np k1, k2, k3, k4 = 500, 250, 2000, 1000 ki = np.a ...
- Python数值计算之插值曲线拟合-01
3 插值与曲线拟合 Interpolation and Curve Fitting 给定n+1个数据点(xi,yi), i = 0,1,2,…,n,评估y(x). 3.1 介绍(introdu ...
- 潭州课堂25班:Ph201805201 第十五课 迭代器,生成器 (课堂笔记)
推导表达式 li1 = list() for i in range(10): # 迭代循环内容 li1.append(i) print( li1 ) ---->>> [0, 1, 2 ...
- C#种将String类型转换成int型
API: 有一点是需要注意的,那就是必须保证该String类型内全为数字,能确保转换正确: 1.int.Parse(str); 2.TryParse(str, out intA); 3. Conver ...
- 【转载】jdk1.8 LongAdder源码学习
本文转自https://blog.csdn.net/u011392897/article/details/60480108 LongAdder是jdk8新增的用于并发环境的计数器,目的是为了在高并发情 ...
- delphi Tdxribbon 设置背景和skin 皮肤
https://blog.csdn.net/maxwoods/article/details/8592389 http://www.cnblogs.com/baoluo/archive/2011/04 ...
- ES6 js中const,var,let区别 今天第一次遇到const定义的变量
今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...
- 奇怪吸引子---LorenaMod1
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- StackExchange.Redis 管道 批量 高性能插入数据
现在用redis来做数据缓存的越来越多了,很多项目都有初始化redis数据的过程,由于初始化的数据比较大,那么该过程越快越好.这里我们以HashSet方法为例, 这里我们推荐用HashEntry[] ...