一 关于加入、删除和回退

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


转载于:https://www.cnblogs.com/zsychanpin/p/7124793.html

Git 经常使用命令总结相关推荐

  1. Git基础(常用命令)介绍

    版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统,如rcs:集中化的版本控制系统,如CVS.SVN:分布式版本控制系统,如Git. Gi ...

  2. Git npm相关命令

    Git 相关命令 查看用户名和密码 配置用户名和密码 查看git项目远程地址 添加git远程仓库 查看提交记录 查看已有tag 打标签 在某次提交记录上打标签 推送标签到远程 推送单个指定tag到远程 ...

  3. GIt/Github常用命令

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

  4. Git系列之git log高级命令

    原文地址 使用任何版本控制工具的目的都在于记录你代码的变化.这可以给予你查看项目历史的能力,去发现谁做出了贡献,弄清楚何时产生了bug,回滚到错误的修改.但是,如果你无法定位,获取这些历史记录将变得毫 ...

  5. Git使用教程-命令总结大全

    /在 cmd 上操作/ git help          // 帮助信息  常用git命令  和解释 git help -a      // 命令目录 git help -g      //手册 g ...

  6. Git操作手册|命令速查表

    Git操作手册|命令速查表 这篇文章主要介绍Git分布式版本管理与集中式管理的一些差异,总结下Git常用命令作为日后的速查表,最后介绍Git进阶的一些案例. 本文分为以下几个部分: Git与SVN差异 ...

  7. git 与github 命令行操作与控制

    一.git 1.download下载 https://www.git-scm.com/ 2.配置 用户名和邮箱 假设用户名为"xxxx",邮箱为"xxxx@xxxx.co ...

  8. git:config命令

    前言 git 版本: 2.x 配置文件的存储位置 git配置文件有三个级别: --system --global --local gi各级别配置文件位置: 级别 linux位置 windows位置 - ...

  9. 报错:“-bash: git: 未找到命令”

    报错:"-bash: git: 未找到命令" 解决方法: 安装git命令即可解决问题,Linux百科网是以CentOS 7 64位系统为例,在安装git命令之前需要先启用EPEL存 ...

  10. Git初学使用命令记录

    2019独角兽企业重金招聘Python工程师标准>>> 1.初始化一个Git仓库:git init 2.添加文件到仓库:git add file 3.提交文件到仓库:git comm ...

最新文章

  1. saltstack学习-9:批量安装nginx服务并定时更新配置(pillar)
  2. Spark配置属性整理(非常全面)
  3. 前端学习(3179):ant-design介绍2
  4. 哈佛大学计算机生物科学,生命科学专业
  5. 线性代数向量内积_向量的外积| 使用Python的线性代数
  6. node on mac
  7. 【Android】Mac系统Android开发环境搭建
  8. Early stopping conditioned on metric `val_loss` which is not available
  9. 在电脑上如何录制游戏
  10. word2016论文不同章节设置页眉页码方法
  11. 作业:自行录制轻音、浊音、爆破音并使用Audacity分析其时域和频域的特性
  12. 百度白皮书5.0解读如何合理设置展开全文功能
  13. 人体运动检测与跟踪(转)
  14. 【生产者分析六】Kafka生产者Tips
  15. 120W快充!Redmi Note 11系列1199元起
  16. react native 文本换行
  17. 电脑无线共享手机wify上网
  18. Facebook推出Events应用 帮用户找到有趣活动
  19. 新手入门保姆级教程,Linux平台和手机端SDK,基于Opencv、MNN、NCNN
  20. Visual Studio 2010 sp1 在线升级包

热门文章

  1. 敏捷开发的艺术读书笔记
  2. MFC的进程和线程,非正常终止
  3. 重构实践:体验interface的威力(一)
  4. mirc635.rar
  5. C/C++变量在嵌套域内可见
  6. 爬虫9-淘宝商品信息定向爬虫
  7. 信息论中的一些基本的知识
  8. 选择奋斗---激励自己
  9. sigterm sigint sigkill 区别
  10. 面试---如何在List<Integer>中如何存放String类型的数据?