1.建空目录 mkdir e:\gg

2.把该目录变成仓库 git init   //发现当前目录下多了一个.git

3.新建文件readme.txt

4.添加文件到仓库  git add readme.txt     //添加到暂存区

5.文件提交到仓库       git commit -m "wrote a readme file"  //后面是日志,提交暂存区的内容

6.查看修改的内容 git diff readme.txt

7.查看历史记录   gig log (--pretty=oneline)//括号里面的表示只显示一行

8.回退到历史版本

8.1 git reset --hard HEAD^  [head表示当前,head^回到上一个,head~`100 退100个版本]

8.2 git reset --hard 3628164  【3628164 版本号,没有必要写全,写五个就行】//如果屏幕没有关掉

8.3 git reflog 【记录每一次命令,可以回退到任意版本】

[与svn区别] 三个回退到两个版本,再查看是2个,svn是四个

9.撤消修改

9.1 没有提交到暂存区 git checkout -- readme.txt

让这个文件回到最近一次git commit或git add时的状态

9.2 提交到暂存区,但没有commit

git reset HEAD readme.txt

10.删除文件

10.1 rm test.txt

11.添加远程库

11.1 关联远程库 git remote add origin git@server-name:path/repo-name.git

11.2 第一次推送master分支的所有内容  git push -u origin master

11.3 以后推送最新修改 git push origin master

12.从远程库中克隆

12.1 git clone git@github.com:michaelliao/gitskills.git

【Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。】

13 创建与合并分支

13.1 创建 dev分支,并切换到dev分支   git checkout -d dev

13.2查看当前分支  git branch //当前分支前面会标有*号

13.3 提交代码到分支,

git add readme.txt

Git commit -m "test"

13.4 切换回master git checkout master

13.5 把分支的成果merge到master

Git merge dev  //合并指定分支到当前分支

13.6 删除dev分支   git branch -d dev

14.合并分支在删除分支后,不丢失信息

14.1 git merge --no-ff -m "merge with no-ff" dev

//--no-ff参数,表示禁用Fast forward

15.bug分支

15.1 把工作现场储藏起来,修完bug以后,再恢复

Git stash

15.2 eg在master分支上修复bug,切换到master分支,并创建bug分支

Git checkout master

Git checkout -b issue-101

15.3 修复完成后切换到master分支,合并,删除bug分支

Git checkout master

Git merge --no-ff -m "merge bug fix 101 " issuse-101

Git branch -d issue-101

15.4 回到dev分支干活

Git checkout dev

查看工作现场

Git stash list

恢复工作现场

1.git stash pop[恢复并删除stash]

2.git stash apply 恢复

git stash drop 删除

  1. 多人协作
    1. 推送自己的修改 git push origin branch-name
    2. 推送失败,表明远程分支比本地新,用git pull合并
      1. 提示no        tracking information,表明本地分支与远程分支没有关联
      2. Git branch        --set-upstream branch-name origin/branch-name
    1. 合并冲突,解决冲突。并在本地提交
    1. 推送 git       push origin branch-name
    1. 查看远程库信息 git       remote -v
    1. 在本地创建和远程分支对应的分支
      1. Git        checkout -b branch-name origin/branch-name
  1. 创建标签
    1. 新建一个标签 git       tag <name>  //git tag v1.0
    1. 指定标签信息 git       tag -a <tagname> -m "baldsfadsaf"
    1. 用pgp签名标签 git tag -s       <tagname> -m "dsafadsf"
    2. 查看所有标签 git tag
  1. 操作标签
    1. 推送一个本地标签 git push origin       <tagname>
    2. 推送全部未推送的标签 git push origin       --tags
    3. 删除本地一个标签 git tag -d       <tagname>
    4. 删除一个远程标签 git push origin       :refs/tags/<tagname>
  1. 忽略特殊文件
    1. 在要目下创建.gitignore,把忽略的文件名填进去
    1. windows带的垃圾文件

# Windows:

Thumbs.db

ehthumbs.db

Desktop.ini

.py[cod]

*.so

*.egg

*.egg-info

  1. 配置别名
    1. Eg st 代表Status

Git config --global alias.st status

  1. Eg  lg的经典配置 会带有不同颜色

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"

  1. 配置git服务器
    1. Debian/ubuntu环境
    2. 安装git Sudo apt-get install       git
    3. 创建git 用户,运行git服务
      1. Sudo adduser git
    1. 创建证书登陆
      1. 收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
    1. 初始化git仓库
      1. Sudo git init --bare        sample.git
    1. 不让用户登陆到服务器去改工作区
      1. Sudo        chown -R git:git sample.git
    1. 禁用shell登陆
      1. 编辑/etc/passwd

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

  1. 远程克隆仓库
    1. git clone       git@server:/srv/sample.git

git实用操作21条的更多相关文章

  1. Git 实用操作:重写 Commit 历史

    当我们修改完代码,提交了一个 commit,然后发现改错了,怎么修正?下面分两种情况来讨论:修正最近一次提交,和修正历史多个提交. 修正最近一次提交 如果发现刚刚提交的内容有错误,当场再修改一下再提交 ...

  2. Git 实用操作:撤销 Commit 提交

    有的时候,改完代码提交 commit 后发现写得实在太烂了,连自己的都看不下去,与其修改它还不如丢弃重写.怎么操作呢? 使用 reset 撤销 如果是最近提交的 commit 要丢弃重写可以用 res ...

  3. git 实用操作

    查看某文件的某些行的变化历史: $ git log --pretty=short -u -L 2003,2005:Executor.cpp http://stackoverflow.com/quest ...

  4. GIT实用操作指令(更新中)

    提取多次提交的文件 git archive --format=zip HEAD `git diff --name-only 较早的提交ID 较晚的提交ID` > diff.zip

  5. 版本控制工具——Git常用操作(上)

    本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...

  6. 45个 GIT 经典操作场景,专治不会合代码

    大家好,我是小富~ 技术交流关注公众号:程序员内点事 传送门:原文地址 git对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree这样牛X的客户 ...

  7. H5 App设计者需要注意的21条禁忌

    我们通常在做H5 APP设计的过程中,遇到很多看似很小,且很容易被忽略的问题,正是这些小问题,一次次的撩拨用户的耐心,让用户对你的APP心生怨念.现在WeX5君呕血为大家整理出H5 APP设计的21条 ...

  8. 使用ThinkPHP开发中MySQL性能优化的最佳21条经验

    使用ThinkPHP开发中MySQL性能优化的最佳21条经验讲解,目前,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更 ...

  9. 【《Effective C#》提炼总结】提高Unity中C#代码质量的21条准则

    作者:Williammao, 腾讯移动客户端开发工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/290.h ...

随机推荐

  1. Number常用方法函数

    Number类型应该是ECMAScript中最令人关注的数据类型了,这种类型使用IEEE754来表示整数和浮点数,并针对Number相关特点定义了一系列相关的方法函数. isFinite() 在Jav ...

  2. python selenium-7自动发送邮件

    https://jingyan.baidu.com/article/647f0115b78f8d7f2148a8e8.html 1.发送HTML格式的邮件 import smtplib from em ...

  3. shell 3数组

    shell数组 shell支持一维数组(不支持多维数组),并且没有限定数组的大小. 定义数组 shell中,用括号来表示数组,数组元素用空格分隔,下标从0开始,元素的类型 方式1 数组名=(值1 值2 ...

  4. REST-assured 2发送文字到接口

    获取token https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRECT #java package ...

  5. SpringBoot学习记(一)第一个SpringBoot Web服务

    工具IDEA 一.构建项目 1.选择Spring Initializr 2.填写项目信息 3.勾选webService 4.勾选Thymeleaf 5.项目建立完成,启动类自动生成 二.写个Contr ...

  6. Java 迭代器 工具类

    迭代器:Iterator接口 //获取集合中的对象Iterator<E> iterator() interface Iterator { boolean hasNext(); Object ...

  7. ETL,BPM与ESB三者的一些感悟

    1.ETL: 数据层之间,主要在数据库层面上进行数据抽取过程------数据库层 2.ESB 异构系统之间通过总线技术,实现系统交互---------------系统通信层 3.BPM 自动化流程处理 ...

  8. ETL编程模型(场景)

    使用场景: ETL是一个处理过程. 多个数据源之间进行数据同步 1:n:一对多同步数据 n:1:多个数据源到一个目的段 m;n:多个数据源多个目的段 ========================= ...

  9. 库、教程、论文实现,这是一份超全的PyTorch资源列表(Github 2.2K星)

    项目地址:https://github.com/bharathgs/Awesome-pytorch-list 列表结构: NLP 与语音处理 计算机视觉 概率/生成库 其他库 教程与示例 论文实现 P ...

  10. KDD 2018 | 最佳论文:首个面向Facebook、arXiv网络图类的对抗攻击研究

    8 月 19 日至 23 日,数据挖掘顶会 KDD 2018 在英国伦敦举行,昨日大会公布了最佳论文等奖项.最佳论文来自慕尼黑工业大学的研究者,他们提出了针对图深度学习模型的对抗攻击方法,是首个在属性 ...