文档章节

Git Ubuntu 命令行下使用

s
 sidiansh
发布于 2016/03/31 13:38
字数 1667
阅读 121
收藏 0
点赞 1
评论 0

Git

demo

环境: Ubuntu 


1.安装

    sudo apt-get install git

2.创建版本库

    创建一个空目录

$ mkdir learngit
$ cd learngit
$ git init

        初始化空的 Git 版本库于 /home/administrator/文档/learngit/.git/

        空仓库建好了

    把文件添加到版本库

        将文本文件添加至 版本库

$ git add readme.txt

            --可以多次添加/一次添加多个文件(空格分割)

        用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "wrote a readme file"

            [master (root-commit) cb926e7] wrote a readme file

             1 file changed, 2 insertions(+)

             create mode 100644 readme.txt

                -m后面输入的是本次提交的说明

3.时光机穿梭

$ git status    掌握仓库当前的状态
$ git diff readme.txt     查看区别

    版本回退

$ git log    显示从近到远的提交日志
$ git log --pretty=oneline    每个日志显示为一行


        # 用HEAD表示当前版本,上一个版本就是HEAD^

        # 上上一个版本就是HEAD^^

        # 往上100个版本,HEAD~100

$ git reset --hard HEAD^

        HEAD is now at ea34578 add distributed


        # 回退后最新的版本在 git log中不能在看见

        # 可以在原命令行窗口下找到需要的版本号,复制前面几位

$ git reset --hard 664d1c0

        HEAD 现在位于 664d1c0 append GPL

$ git reflog    记录每一次命令

        25300b3 HEAD@{0}: reset: moving to HEAD^

        664d1c0 HEAD@{1}: reset: moving to 664d1c040bc

        25300b3 HEAD@{2}: reset: moving to HEAD^

        664d1c0 HEAD@{3}: commit: append GPL

        25300b3 HEAD@{4}: commit: add distributed

        5eaef37 HEAD@{5}: commit: This is demo

        0412150 HEAD@{6}: commit (initial): wrote a readme file

    撤销修改

        add 前

$ git checkout -- readme.txt

        add 后

$ git reset HEAD readme.txt        将暂存区的内容回退到工作区

        commit 后 推送远程库前 回退

$ git reset --hard HEAD^

    删除文件

        工作区删除->暂存区删除->版本库删除

$ rm test.txt
$ git rm test.txt
$ git commit -m "remove test.txt"

4.远程仓库

        创建SSH Key

$ ssh-keygen -t rsa -C "youremail@example.com"

            在用户主目录里找到.ssh目录    隐藏着的,通过 

$ ls --all

            查看全部文件可以看到

            id_rsa是私钥,不能泄露出去,

            id_rsa.pub是公钥,可以放心地告诉任何人。

        登陆GitHub,打开“Account settings”,“SSH Keys”页面:

            点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

    添加远程库

        登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

        在Repository name填入 learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

        把本地仓库的内容推送到GitHub仓库。

        git remote add origin git@github.com:sidianshui/learngit.git

        添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

        把本地库的所有内容推送到远程库上:

$ git push -u origin master

            关联后,第一次推送master分支的所有内容;

        只要本地作了提交,就可以通过命令:

$ git push origin master

    远程库克隆

        先创建远程库,然后,从远程库克隆

        右上角“Create a new repo”按钮,

        名字叫gitskills

        勾选 Initialize this repository with a README

            自动为我们创建一个README.md文件

$ git clone git@github.com:sidiansh/gitskills.git

        进入gitskills目录看看,已经有README.md文件

5.分支管理

    创建与合并分支

        查看分支:git branch

        创建分支:git branch <name>

        切换分支:git checkout <name>

        创建+切换分支:git checkout -b <name>

        合并某分支到当前分支:git merge <name>

        删除分支:git branch -d <name>

    解决冲突

        当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

        用git log --graph命令可以看到分支合并图。

    分支管理

        fast forward合并就看不出来曾经做过合并。

        禁用Fast forward模式

            准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward:

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

                本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

    Bug分支

        保存现场

$ git stash

        修复 BUG合并后

        查看已有现场

$ git stash list

            stash@{0}: WIP on dev: 6224937 add merge

        恢复现场

$ git stash apply 恢复,但是恢复后,stash内容并不删除,
$ git stash pop,恢复的同时把stash内容也删了:

        删除现场

$ git stash drop

        多次stash

            先用git stash list查看

$ git stash apply stash@{0}

    Feature分支

        每添加一个新功能,最好新建一个feature分支

        未合并,强行删除:

$ git branch -D feature-vulcan

    多人协作

        查看远程库的信息

$ git remote

            origin

$ git remote -v

            origin  git@github.com:michaelliao/learngit.git (fetch)

            origin  git@github.com:michaelliao/learngit.git (push)

        本地推送分支,使用

            git push origin branch-name

        推送失败

            先用git pull抓取远程的新提交

        如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,

        建立本地分支和远程分支的关联

            git branch --set-upstream branch-name origin/branch-name

        在本地创建和远程分支对应的分支

            git checkout -b branch-name origin/branch-name

6.标签管理:

    创建标签

$ git tag <name>

        查看所有标签: 标签按字母排序

$ git tag

        对历史提交创建标签

            查找需要的 commit id

$ git log --pretty=oneline --abbrev-commit

            创建标签

$ git tag v0.9 6224937

            查看标签信息

$ git show <tagname>

        创建带有说明的标签

        :    用-a指定标签名,-m指定说明文字:

$ git tag -a v0.1 -m "version 0.1 released" 3628164

        可以用PGP签名标签;

            git tag -s <tagname> -m "blablabla..."

    操作标签

        删除

$ git tag -d v0.1

        推送标签到远程

$ git push origin <tagname>

        一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tags

        删除远程标签

            先本地删除

            在远程删除

$ git push origin :refs/tags/<tagname>


7.自定义Git

    忽略特殊文件

        Git工作区的根目录下创建一个特殊的.gitignore文件

        把要忽略的文件名填进去,Git就会自动忽略这些文件。

        所有配置文件可以直接在线浏览:

        https://github.com/github/gitignore

        ex:

            # Python:

            *.py[cod]

            *.so

            *.egg

            *.egg-info

            dist

            build

    配置别名

        st就表示status:

$ git config --global alias.st status

            --global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

$ 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"

    配置文件

        --global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。

        每个仓库的Git配置文件都放在.git/config文件中:

$ cat .git/config

            别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。

        而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:

$ cat .gitconfig


© 著作权归作者所有

共有 人打赏支持
s
粉丝 1
博文 37
码字总数 17462
作品 0
济南
Ubuntu16 安装配置git + 安装eclipse 添加命令行快速启动

关键字: github ssh eclipse 你的名字.jpg 虚拟机中安装Ubuntu中需要安装配置git,每次配置的时候总是又重新去百度,下面简单记录,有什么问题还望指正。 1.在Ubuntu中,可以安装一个经常使...

RookieDay
2016/12/06
0
0
Git开发实战(一)之Git的安装配置与基本操作

一、Git的安装 1.Linux apt-get insatll git ubuntu yum install git centos/redhat 2.Mac OS xcode应该自带了 3.Windows 也有客户端(实际上就是windows上的命令行)git官网 git-scm.com 4.......

aibinxiao
2017/10/23
0
0
【Git 第3课】 安装Git

要用Git,首先肯定要安装它。简要说一下Win,Mac和Linux三种平台的安装方法。 Windows Git的官网(http://git-scm.com)提供了Windows下Git客户端的安装包。也可以去msysGit项目的页面上下载:...

Harry_sir
2015/12/26
18
0
【转载】如何安装Node.js

下面分别介绍在Mac, Ubuntu,Centos以及Windows下安装Node.js. Mac 在Mac下,如果你喜欢用homebrew,那么只用一行就可以装好: 否则,只能考虑手工安装了,步骤如下: 安装Xcode 安装git 运行下...

长平狐
2012/09/06
117
0
在Windows环境中使用版本管理工具Git

Git是一个分布式的版本控制系统,最初由LinusTorvalds编写,作者把他描述为一个“傻瓜式的版本管理系统”,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在R...

hans汉斯
2010/01/13
0
0
Docker在Ubuntu16.04上安装和部署Apache Storm

Docker在Ubuntu16.04上安装和部署Apache Storm 1、添加Docker源 sudo apt-get update 2、增加CA证书 sudo apt-get install apt-transport-https ca-certificates 3、添加GPG Key(一种加密手段......

collen7788
2017/12/06
0
0
linux下一些常用工具用法

ucore实验中的常用工具 在ucore实验中,一些基本的常用工具如下: 命令行shell: bash shell -- 有对文件和目录操作的各种命令,如ls、cd、rm、pwd... 系统维护工具:apt、git apt:安装管理各...

mskk
2016/10/07
32
0
php workerman 异步通讯框架

提示workerman只是一个代码包,如果php环境满足要求,下载后即可使用,实际上没有安装过程。 workerman对php环境的要求是: 1、php>=5.3.3,可以运行命令 php -v 查看版本 2、Linux系统要求p...

bengozhong
2015/08/13
0
0
Shell 命令行扩展--The Fuck

开发者都或多或少接触过 linux 接触过命令行,当然肯定也都被命令行狠狠地“fuck”过。我很多时候都是微不足道的原因导致了命令行出错,例如将 python 输入成 ptyhon,例如将 输入成 而导致出...

红薯
2015/05/09
2.4K
0
DOCKER windows安装

DOCKER windows安装 编者: xiaym 日期:2015年1月20日 排版工具: 马克飞象 QQ: 252536711 DOCKER windows安装 6.1 下载地址 6.2 用FTP工具上传tar包 6.3 安装 6.4 查看镜像 6.5 运行 1.下载...

沉淀岁月
2016/07/18
32
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Win10专业版安装GIT后使用Git Bash闪退解决办法

百度后把过程和最终解决办法记录下来: 百度首先出来的解决办法如下: 来自:https://segmentfault.com/q/1010000012722511?sort=created 重启电脑 重新安装 安装到C盘 尝试网上的教程 \Git...

特拉仔
12分钟前
0
0
设计模式

1.装饰器模式 概念 允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰者可以在所委托被装饰者的行为之前或之后加上自己的行为,以达到特定的目的。 实现 增加一个修饰类包裹原来的...

EasyProgramming
27分钟前
1
0
用python2和opencv进行人脸识别

一、安装cv2 sudo apt-get install python-opencv opencv-data 二、 Haar特征分类器 Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等等。 ...

wangxuwei
27分钟前
0
0
python模板中循环字典

{% for k,v in user.items %} {{ k}} {{ v}} {% endfor %}

南桥北木
55分钟前
0
0
Java8系列之重新认识HashMap

简介 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示: 下面针对各个实现类...

HOT_POT
59分钟前
0
0
获取调用方的className

/** * 获取调用方的class * @return */private static String getInvoke() { StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); S......

iborder
今天
0
0
深入了解一下Redis的内存模型!

一前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符...

Java填坑之路
今天
1
0
从实践出发:微服务布道师告诉你Spring Cloud与Spring Boot他如何选择

背景 随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加。在这个背景下,平台的技术架构也完成了从传统的单体应用到微...

老道士
今天
1
0
大数据学习的各个阶段

第一阶段:Linux课程讲解Linux基础操作,讲的是在命令行下进行文件系统的操作,这是Hadoop学习的基础,后面的所有视频都是基于linux操作的。鉴于很多学员没有linux基础,特增加该内容,保证零linux...

董黎明
今天
0
0
CVE-2013-0077 堆溢出分析

找了很久才发现这个环境比较容易搭建分析... 环境: 系统---Win XP SP3 漏洞程序:QQPlayer 3.7.892.400 出错DLL:quartz.dll 6.5.2600.5512 调试工具:x32db+gflag.exe 过程: 首先gflag设置...

Explorer0
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部