Git 经常使用命令总结
一 关于加入、删除和回退
1 git rm --cached file 想要git不再跟踪这个文件,可是又不想在硬盘中删除该文件
2 在被git管理的文件夹中删除文件时,能够选择例如以下两种方式:
① rm +git commit -am "abc"
② git rm+git commit -m "abc"
3 假设rm了。但想恢复 git checkout -- file
4 gir rm后想恢复:
① 假设没提交 git reset HEAD
② 已经commit git reset --hard <之前的版本号,可用git reflog查看>
5 改动后恢复
① 当你改乱了工作区某个文件的内容,想直接丢弃工作区的改动时,用命令git checkout -- file。
② 当你不但改乱了工作区某个文件的内容。还加入到了暂存区时,想丢弃改动,分两步。第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
③ 已经提交了不合适的改动到版本号库时。想要撤销本次提交,则进行版本号回退(git reset --hard )
HEAD时,表示最新的版本号。上一个版本号就是HEAD^,上上一个版本号就是HEAD^^。往上100个写成HEAD~100。
6 加入(git add)
① git add -u [<path>] 把<path>中全部tracked文件里被改动过或已删除文件的信息加入到索引库。它不会处理untracted的文件。
省略<path>表示.,即当前文件夹。
② git add -A [<path>] 把<path>中全部tracked文件里被改动过或已删除文件和全部untracted的文件信息加入到索引库。省略<path>表示.,即当前文件夹。
③ git add -i [<path>] 查看<path>中被全部改动过或已删除文件但没有提交的文件。
二 查看历史和改动
1 git log
2 git log --pretty=oneline
3 git diff HEAD -- file 查看工作区和版本号库里面最新版本号的差别
4 git log --graph --pretty=oneline --abbrev-commit 比較好的查看分支记录
三 Git配置
1 初始配置
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
2 加入远程仓库和推送
git remote add original git@github.com:lanbing510/learngit.git
配置后第一次推送 git push -u original master
增加-u git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就能够简化命令: git push original master
3 克隆 git clone 远程仓库地址
4 配置忽略文件
① 在Git工作区的根文件夹下创建一个特殊的.gitignore文件。然后把要忽略的文件名称填进去,Git就会自己主动忽略这些文件。一些配置文件可參见https://github.com/github/gitignore
② 或者使用命令git config --global core.excludesfile ~/.gitignore_global 加入到git全局配置以降低每层文件夹的规则反复定义,很多其它请參考 http://blog.csdn.net/lanbing510/article/details/40588323
5 配置别名
如 git config --global alias.unstage 'reset HEAD' 以后就能够使用 git unstage 把暂存区的改动撤销掉(unstage),又一次放回工作区
git config --global alias.last 'log -1' --> 显示最后一次改动 git last
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" git lg 更好的显示log
每一个仓库的Git配置文件都放在.git/config文件里
四 分支
1 创建并切换分支
git checkout -b newbranch
上面命令相当于 git branch newbranch 和 git checkout newbranch
2 git branch命令查看当前分支
3 合并某分支到当前分支:git merge name
4 删除分支:git branch -d name
5 禁用fast forward : merge时增加-no-ff
合并分支时,假设可能,Git会用“Fast forward”模式,但这样的模式下,删除分支后,会丢掉分支信息。假设要强制禁用“Fast forward”模式,Git就会在merge时生成一个新的commit。这样。从分支历史上就能够看出分支信息。
6 当手头没有完毕时。但须要修复之前的bug
git stash 把现场工作储存起来
git checkout master
git checkout -b fixbug
git add
git commit -m "fix bug"
git checkout master
git merge --no-off -m "merge bug fix fixbug" fixbug
git branch -d fixbug
git stash list 列出stash的内容
git stash apply 进行恢复 + git stash drop 删除stash = git stash pop
7 开发一个新的feature,最好新建一个分支
git branch -D <name> 丢掉一个没有被合并过的分支
8 推送分支
git push origin master 推送主分支
git push origin dev 推送新分支
master是主分支。须要时刻与远程同步
dev是开发分支,团队成员须要在上面工作,须要与远程同步
bug分支用于本地修复bug。不须要推送到远程,除非老板须要看
feature是否推送取决于你是否和人合作一起进行开发
9 git clone
当从还有一台电脑clone下来后,仅仅能看到master分支,看不到dev,假设要在dev上开发。必须创建远程origin的dev分支到本地:git checkout -b dev origin/dev
10 git push 失败
原由于远程分支比你的本地更新,首先git pull合并
假设合并有冲突,解决;假设git pull 提示 no tracking information,说明本地和远程分支的链接关系没有创建:git branch --set-upstream branch-name /origin/branch-name
五 标签
1 git tag name
比如: git tag v0.1 6224937
2 git tag 查看标签
3 git show <tag> 查看标签信息
4 还能够创建带有说明的标签,用-a指定标签名,-m指定说明文字: git tag -a v0.1 -m "version 0.1 released" 3628164
5 用PGP签名标签: git tag -s <tagname> -m "blablabla...“ 需首先安装gpg
6 推送一个本地标签:git push origin <tagname>
7 推送所有未推送过的本地标签:git push origin --tags
8 删除一个本地标签:git tag -d <tagname>
9 删除一个远程标签:git push origin :refs/tags/<tagname>
六 搭建Gitserver
七 常出现的问题
1 ! [rejected] master -> master (non-fast-forward)
解决方法:
① git push -f 进行强推
② git fetch git merge
2 重命名文件(包含改变大写和小写)
git mv --force myfile MyFile
八 总结:Git Cheat Sheet
Git 经常使用命令总结的更多相关文章
- GIT 版本控制常用命令学习汇总
GIT 版本控制常用命令汇总 git version 查看当前git版本信息 git help 获取全部命令帮助信息 git help <command> 获取指定命令帮助信息 git c ...
- git的一些命令行
以下代码均在命令行中执行:在目标文件夹目录下: 1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: 第一步,使用命令git add <file>,注意 ...
- git log 常用命令及技巧
git log常用命令以及技巧 1.git log 如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者.提交日期.和提交说明.如果记录过多,则按Page Up.Pag ...
- Git基本常用命令
Git基本常用命令如下: mkdir: XX (创建一个空目录 XX指目录名) pwd: 显示当前目录的路径. git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件. git ...
- git workflow常用命令
git init git status git add readme.txt git add --all Adds all new or modified files git comm ...
- git的一些命令
因为项目的原因,大家把项目托管到git上,然后我不会,队友就传了一个廖雪峰的git教程,讲的很详细,不会用git的同学,可以在http://pan.baidu.com/s/1pKizolP上下载,这是 ...
- 关于Git的stash命令
add 添加新文件到 Git 代码仓库的索引中 $ git add filename mv 移动或重命名文件 $ git mv old-filename new-filename rm 从工作目录和 ...
- GIt/Github常用命令
1)git init:初始化本地仓库 2)创建文件:touch read.txt 3)当操作本地的文件时,使用常用的命令,如(mv,ls..)就可以操作,当操作暂存区的文件时需要在命令前家git,并且 ...
- git链接GitHub命令及基本操作
Git是一款不错的代码管理工具,下面引用百科的一段话: Git是用于Linux内核开发的版本控制工具.与CVS.Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服 ...
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下G ...
随机推荐
- python链接mysql以及常用语法
MySQL是一个关系型数据库管理系统 ,其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库.在使用过程中不总是和它打交道,导致使用时候都得 ...
- HTTP请求过程(http是一种无状态协议,即不建立持久的连接)
一.一个完整的HTTP请求,通常有7个步骤: 1.建立TCP连接: 2.web浏览器向web服务器发送请求命令: 3.浏览器发送请求头信息: 4.服务器应答: 5.服务器发送应答头信息: 6.服务器向 ...
- [转载] PHP 线程,进程和并发
转载自http://chenpeng.info/html/3021 进程 进程是什么?进程是正在执行的程序:进程是正在计算机上执行的程序实例:进程是能分配给处理器并由处理器执行的实体. 进程一般会包括 ...
- matplotlib删除x轴
组内有个同事,有个奇怪的需求需要matplotlib删除x轴 效果图如下:
- Quartus FFT IP核简介
为了突出重点,仅对I/O数据流为steaming的情况作简要说明,以便快速上手,有关FFT ip核模型及每种设置详细介绍请参考官方手册FFT MegaCore Function User Guide. ...
- Spring JDBC 示例
在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常, ...
- 【架构研习】欲善其事先利其器-Robot Framework实战演练之框架的选择
(原创文章,转载请注明出处.) 之前有提到过,自己曾基于公司业务系统从无到有码过一套测试框架,但由于开发时的思想同时受限于公司业务及框架的适用性上,导致最终虽然框架可完美支持业务,但在易用性.兼容性及 ...
- Spring集成Quartz完成定时任务
在JavaEE系统中,我们经常会用到定时任务,比如每天晚上凌晨之后跑批处理或者是每天某个时刻群发消息等等. 我们可以使用java.util.Timer结合java.util.TimerTask来去完成 ...
- canvas动画3:交互
canvas动画3 时隔很久,本人终于又写博客了(重度拖延症),把之前留下的canvas交互动画讲一讲. 电脑上的交互,指的是鼠标和键盘,我们今天主要用的是鼠标. 既然是鼠标的话,就要获取鼠标的各种事 ...
- 八、VueJs 填坑日记之参数传递及内容页面的开发
我们在上一篇博文中,渲染出来了一个列表,并在列表中使用了router-link标签,标签内的:to就是链接地址,昨天咱们是<router-link :to="'/content/' + ...