1.安装git,也适用于升级

yum -y install gcc zlib-devel openssl-devel curl-devel \
expat-devel gettext-devel perl-ExtUtils-MakeMaker
mkdir -p /server/tools
cd /server/tools
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz
tar xf git-2.7.4.tar.gz
cd git-2.7.4/
make prefix=/usr/local/git all
make prefix=/usr/local/git install
rm -rf /usr/bin/git
ln -s /usr/local/git/bin/git /usr/bin/git
git --version

2.使用git

工作区:就是在你的电脑里能看到的目录,比如创建的test;

版本库:工作区中有一个隐藏目录.git,它不算工作区,而是git的版本库,git的版本库里面存放了很多的东西,其中最重要的就是称为stage的暂存区,有git为我们自动创建的第一个分支master,以及指向master的一个指针叫head.

mkdir test
git init
git config --global user.name "lixiang"
git config --global user.email "1746465163@qq.com"
git config --list

在test目录中创建一个文件,此时文件的状态是Untracked(未被追踪);

用git add之后,文件被放到暂存区,状态变为Staged(已暂存);

用git commit,文件被放到本地仓库,状态变为Unmodified(未被修改);

编辑了这个文件后,它会从本地仓库被拉取到工作目录,状态变为Modified(被修改了).

echo "This is your First Page" > index.html
git status
Untracked files
git add index.html
git commit -m "first commit"
# git rm --cached <file>演示
echo "pay module" > pay.html
echo "new center" > news.html
git add news.html pay.html
# 此时发现pay.html还没开发完,不想commit这个文件了,就需要在暂存区将其删除
git rm --cached pay.html

3.分支管理

git status
On branch master
git branch about # 会在当前所在的提交对象上创建一个指针
git checkout about # Switched to branch 'about' 切换到分支about
echo "about" > about.html
git branch # 查看自己当前所在的分支
git add .
git commit -m "about's index.html"
echo 'second page' > second.html
git add .
git commit -m "second page"
git checkout master # 此时master上有两次提交,about上有四次提交
git merge about # 在master上融合分支about
git branch --merged # 查看已融合的分支
git branch --no-merged # 查看未融合的分支

4.reset

echo "this is second line" >> index.html
echo "qwer" >> news.html
git add news.html
git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) modified: news.html Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) modified: index.html

查看日志

git log
commit 1ed03656c29f2742314f054c8aba8705c52016d5
Author: lixiang <1746465163@qq.com>
Date: Wed Dec 26 22:06:06 2018 +0800 second page commit 0e8f8c5878734792e9a94cc435cbeb7b4cd7b369
Author: lixiang <1746465163@qq.com>
Date: Wed Dec 26 22:03:11 2018 +0800 about's index.html commit ab0e299c14f1357df828647a1b0476f829a2815a
Author: lixiang <1746465163@qq.com>
Date: Wed Dec 26 20:37:51 2018 +0800 commit news commit 672cc2a692754391725d7179d4d217a552e666a8
Author: lixiang <1746465163@qq.com>
Date: Wed Dec 26 20:29:47 2018 +0800 first commit git reset --hard HEAD~1
HEAD is now at 0e8f8c5 about's index.html
ls
about.html index.html news.html

--soft:缓存区和工作目录都不会被改变(只回撤本地版本库)

--mixed:默认选项.缓存区和你指定的提交同步,但工作目录不受影响(回撤本地版本库和缓存区)

--hard:缓存区和工作目录都同步到你指定的提交(回撤本地版本库、缓存区和工作目录)

git reset --hard 1ed03656  # 回到第四次提交
# 如果嫌输出的信息太多,可以使用--pretty=oneline
git log --pretty=oneline
ls
about.html index.html news.html second.html
git diff HEAD -- filename可以查看工作区和版本库里面最新版本的区别

5.checkout和reflog

git reflog:把之前的ID都显示出来	

0e8f8c5 HEAD@{0}: reset: moving to HEAD~1
1ed0365 HEAD@{1}: reset: moving to 1ed03656
0e8f8c5 HEAD@{2}: reset: moving to HEAD~1
1ed0365 HEAD@{3}: merge about: Fast-forward
ab0e299 HEAD@{4}: checkout: moving from about to master
1ed0365 HEAD@{5}: commit: second page
0e8f8c5 HEAD@{6}: checkout: moving from master to about
ab0e299 HEAD@{7}: checkout: moving from about to master
0e8f8c5 HEAD@{8}: checkout: moving from about to about
0e8f8c5 HEAD@{9}: commit: about's index.html
ab0e299 HEAD@{10}: checkout: moving from master to about
ab0e299 HEAD@{11}: commit: commit news
672cc2a HEAD@{12}: commit (initial): first commit git checkout 1ed0365
git status
HEAD detached at 1ed0365
nothing to commit, working directory clean
# 此时用git log查看,有四次提交,但创建一个新分支-reset,切换到reset,
# 再切回master,发现status显示正常,但log只有三次,说明master没有真正回到第四次
git branch reset
git checkout reset
git checkout master
git merge reset
# 我觉得是checkout的问题,用reflog查出id,再用reset回滚应该也行
git reset --hard 1ed0365

git checkout有两个作用:在分支级别,是将指针切换到不同的提交对象;

git checkout -- filename:在文件级别,是撤销对文件的修改.

a.修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;

b.已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态.

原理:用版本库里的版本覆盖被修改的文件.

假如将文件提交到了暂存区,use "git reset HEAD <file>..." to unstage,用reset撤销缓存区的变更;

假如将文件commit到了本地版本库,可以用reset回滚;

假如将本地版本库推送到了远程版本库,可以推送一个符合你想要的标准的文件,一步步到最后,覆盖那个远程版本库上错误的文件.

6.删除文件

先创建文件,后add,再commit,然后删除工作区的文件
git add test.txt
git commit -m "del test"
rm -rf test.txt
现在你有两个选择:一是确实要从版本库中删除该文件,那就用删掉,并且git commit
git rm test.txt
git commit -m "remove test.txt"
如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,
你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容.
另一种情况是删错了,因为版本库里还有呢,可以把误删的文件恢复到最新版本:
git checkout -- test.txt
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以"一键还原".

7.标签管理

git tag -a v1.0 -m "version1.0 released"
git tag -d v1.0
# 如果要推送某个标签到远程
git push origin v1.0
# 一次性推送全部尚未推送到远程的本地标签
git push origin --tags
# 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除,然后,从远程删除
git tag -d v0.9
git push origin :refs/tags/v0.9

参考博客:https://www.cnblogs.com/kevingrace/p/5569728.html

git常用语句的更多相关文章

  1. 了解一下Git的常用语句

    简单学习了一下Git,整理了一点常用语句 http连接 git clone https://仓库地址 连接githup cd shop 进入文件夹 git config --global user.n ...

  2. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  3. Git 常用命令

    一.初始環境配置 git config --global user.name "John Doe"git config --global user.email johndoe@ex ...

  4. 记录 git 常用的操作命令总结

    记录 git 常用的操作命令总结 2016-12-15 16:44:04 作为一名开发者,熟悉使用 git 代码管理工具是一项必备的基本技能.git 相较 SVN 而言,其优点不言而喻.git 的功能 ...

  5. Git 常用命令详解

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  6. git常用的命令集合

    Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone g ...

  7. Git 常用命令大全

    Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库:$ git remote -v 添加 ...

  8. Git常用命令总结

    Git常用命令总结 git init      在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.   git clone ...

  9. Git 常用命令行

    最近在公司的服务器上安装了Git Sever,开始从SVN转向到Git了,整理了一些在Git常用的命令. 取得Git仓库 初始化一个版本仓库 git initClone远程版本库 git clone ...

随机推荐

  1. Tomcat上传文件报错:returned a response status of 403 Forbidden

    出现这样的错误是没有权限对服务器进行写操作.需要在这个项目所在的tomcat中配置可写操作即可: 在tomcat的web.xml添加下面代码: <init-param><param- ...

  2. oracle如何保证读一致性 第一弹

    oracle保证读一致性原理   1:undo segment的概念                   当数据库进行修改的时候,需要把保存到以前的old的数据保存到一个地方,然后进行修改,用于保存o ...

  3. Nordic Collegiate Programming Contest 2015​ G. Goblin Garden Guards

    In an unprecedented turn of events, goblins recently launched an invasion against the Nedewsian city ...

  4. Django one

    WEB-Django: Http协议: http协议:超文本传输协议,基于TCP/IP通信协议来传递数据 特点: 1.灵活:允许传输任意类型的数据对象.正在传输的类型有Content-Type标记 2 ...

  5. Android之高效率截图

    本文来自网易云社区 作者:孙圣翔 在一张Android手机上截图有好多办法,为了能够高效率的截图,我几乎把所有的方法都尝试了一般.走了好多路,也遇到了好多的问题. 只是想记录下这其中的不容易. 下面所 ...

  6. 理一理Spring如何对接JUnit

    测试代码 package org.simonme.srcstudy.spring3.demo.stub; import static org.junit.Assert.assertNotNull; i ...

  7. list里内置程序用法

    列表是我们编程工作中经常都会遇到的数据类型.以下是列表里面的一些常用操作,主要分为:增! 删! 改! 查! first 查: 1.索引(下标),其中有切片操作,但要注意下标都是从零开始: 2.查元素出 ...

  8. django 的序列化

    关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式. 我们从数据库取出数据的格式有三种:1.all()返回的是QuerySet对象:2 ...

  9. Xcode中断点的使用

    注:本文由破船译自:albertopasca.本文由HoNooD在iosfeed站点上做了推荐. 这里先推荐两篇Xcode相关的文章: Xcode Code Snippets iOS调试 — 基本技巧 ...

  10. Java设计模式(Design Patterns)——可复用面向对象软件的基础

    设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是为了可重用代码.让代码更容易被他 ...