一 关于加入、删除和回退

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



參考 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000

七 常出现的问题

1  ! [rejected]        master -> master (non-fast-forward)

解决方法:

① git push -f 进行强推

② git fetch git merge

2 重命名文件(包含改变大写和小写)

git mv --force myfile MyFile

八 总结:Git Cheat Sheet



Git 经常使用命令总结的更多相关文章

  1. GIT 版本控制常用命令学习汇总

    GIT 版本控制常用命令汇总 git version 查看当前git版本信息 git help 获取全部命令帮助信息 git help <command> 获取指定命令帮助信息 git c ...

  2. git的一些命令行

    以下代码均在命令行中执行:在目标文件夹目录下: 1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: 第一步,使用命令git add <file>,注意 ...

  3. git log 常用命令及技巧

    git log常用命令以及技巧 1.git log 如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者.提交日期.和提交说明.如果记录过多,则按Page Up.Pag ...

  4. Git基本常用命令

    Git基本常用命令如下: mkdir: XX (创建一个空目录 XX指目录名) pwd: 显示当前目录的路径. git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件. git ...

  5. git workflow常用命令

    git init git status git add readme.txt git add --all         Adds all new or modified files git comm ...

  6. git的一些命令

    因为项目的原因,大家把项目托管到git上,然后我不会,队友就传了一个廖雪峰的git教程,讲的很详细,不会用git的同学,可以在http://pan.baidu.com/s/1pKizolP上下载,这是 ...

  7. 关于Git的stash命令

    add 添加新文件到 Git 代码仓库的索引中 $ git add filename mv 移动或重命名文件 $ git mv old-filename new-filename rm 从工作目录和 ...

  8. GIt/Github常用命令

    1)git init:初始化本地仓库 2)创建文件:touch read.txt 3)当操作本地的文件时,使用常用的命令,如(mv,ls..)就可以操作,当操作暂存区的文件时需要在命令前家git,并且 ...

  9. git链接GitHub命令及基本操作

    Git是一款不错的代码管理工具,下面引用百科的一段话:  Git是用于Linux内核开发的版本控制工具.与CVS.Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服 ...

  10. Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突

    Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下G ...

随机推荐

  1. Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库

    前两天有人私信我,让我爬这个网站,http://bbs.baobeihuijia.com/forum-191-1.html上的失踪儿童信息,准备根据失踪儿童的失踪时的地理位置来更好的寻找失踪儿童,这种 ...

  2. js 根据身份证号获取性别,年龄,等

    $(function(){        $("#corpOwnerIdno").blur(function(){          //获取输入身份证号码             ...

  3. 用python模拟登录(解析cookie + 解析html + 表单提交 + 验证码识别 + excel读写 + 发送邮件)

    老婆大人每个月都要上一个网站上去查数据,然后做报表. 为了减轻老婆大人的工作压力,所以我决定做个小程序,减轻我老婆的工作量. 准备工作 1.tesseract-ocr 这个工具用来识别验证码,非常好用 ...

  4. Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址

    我们在客户端设置邮箱或者使用 PHPMailer 发送邮件的时候,我们都会去查找这些邮箱的 IMAP/SMTP/POP3 地址,这里就列出 Gmail, QMail, 163邮箱这三个常用邮箱的这些地 ...

  5. java面向对象的构造函数

    当使用new来创建一个对象的时候,其实是调用了一个函数,这个函数的名称叫做构造函数 构造函数的特点: 1.构造函数的名称必须和类名完全一致,包括大小写. 2.构造函数不写返回值,不写返回值意味着连vo ...

  6. maven学习之二

    三 profile介绍 可以有多个地方定义profile.定义的地方不同,它的作用范围也不同. (1)    针对于特定项目的profile配置我们可以定义在该项目的pom.xml中. (2)     ...

  7. Android Context讲解(转)

    博客出处 前言:本文是我读<Android内核剖析>第7章 后形成的读书笔记 ,在此向欲了解Android框架的书籍推荐此书. 大家好, 今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友 ...

  8. php数据分页显示基础

    一:分页原理: 所谓分页显示,也就是将数据库中的结果集认为的分成一段一段的来显示,需要两个初始的参数: 每页多少条记录 ($PageSize)? 当前是第几页($CurrentPageID)? 还有其 ...

  9. gcc & gdb & make 定义与区别

    GCC 通常所说的GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码. ...

  10. Solidity教程系列1 - 类型介绍

    现在的Solidity中文文档,要么翻译的太烂,要么太旧,决定重新翻译下,再加上代码事例讲解. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果 ...