一 获取git仓库

1.1 初始化仓库

 [root@git ~]# cd /mystudy/
[root@git mystudy]# git init
[root@git mystudy]# git remote add origin https://gitee.com/imxhy/mystudy
 

1.2 克隆现有仓库

 [root@git mystudy]# git clone https://gitee.com/xiyouMc/pornhubbot
[root@git mystudy]# git clone https://gitee.com/xiyouMc/pornhubbot mystudy #clone项目,同时本地创建mystudy目录。
 

二 仓库相关

2.1 检查状态

工作目录下的文件只有两种状态:已跟踪和未跟踪。
已跟踪:指文件在上一次快照中有对应的记录,当前状态可能处于未修改,已修改或已放入暂存区。
未跟踪:目录中的除已跟踪的其他文件都属于未跟踪文件,既不存在于上次快照的记录中,也没有放入暂存区。
未跟踪——>已跟踪未修改——>暂存区(修改后暂存)——>git仓库(提交更新)
 [root@git mystudy]# echo 'My Project' > README
[root@git mystudy]# git status
 
提示:Untracked files:未跟踪文件列表,即之前快照(提交)中没有此文件,git默认不会自动纳入跟踪范围。

2.2 跟踪新文件

 [root@git mystudy]# git add README
[root@git mystudy]# git status
 
提示:Changes to be committed:已暂存状态的文件。

2.3 暂存已修改文件

 [root@git mystudy]# echo "This is my test file">>README
[root@git mystudy]# git status
 
提示:Changes not staged for commit:跟踪的文件内容发生变化,此次变更未放入暂存区。
git add:此命令可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。即“添加内容到下一次提交中”,而不是“将一个文件添加到项目中”。
 [root@git mystudy]# git add README		#添加至暂存区
提示:若使用git add添加至暂存区之后再次进行修改,文件会处于暂存区和非暂存区。暂存区保存上一次add后的版本,非暂存区标记最后一次修改版本,建议进行提交之前add一次。

2.4 状态简览

 [root@git mystudy]# git status -s
提示:
??:新添加暂未跟踪文件;
A:新添加到暂存区中的文件;
M:已修改过的文件,若出现在右边,则表示该文件被修改了但是还没放入暂存区,若出现在左边,则表示该文件被修改了并放入了暂存区。

2.5 忽略文件

 [root@git mystudy]# cat .gitignore
*.[oa] #忽略所有以.o或.a结尾的文件;
*~ #忽略所有以波浪符结尾的文件;
*.log #忽略所有以.log结尾的文件。
附1:.gitignore 的格式规范如下:
  • 所有空行或者以 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配,即简化正则表达式。
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
附2:简化正则表达式:
  • 星号(*):匹配零个或多个任意字符;
  • [abc] :匹配任何一个列在方括号中的字符;
  • 问号(?):只匹配一个任意字符;
  • [0-9]:匹配0至9范围内的任意数字;
  • **: 使用两个星号(*) 表示匹配任意中间目录,比如`a/**/z` 可以匹配 a/z, a/b/z 或 `a/b/c/z`等。

2.6 查看已暂存和未暂存修改

 [root@git mystudy]# echo "Hello" > README
[root@git mystudy]# echo "Hello" > CONTRIBUTING.md
[root@git mystudy]# git add README
[root@git mystudy]# git status
 
解释:修改以上两个问题,但对CONTRIBUTING.md文件未暂存,然后查看状态,是已修改未暂存。
 [root@git mystudy]# git diff		#通过git diff查看具体做了哪些修改。
提示:git diff命令比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。
注意:git diff本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。

2.7 提交更新

 [root@git mystudy]# git status
提示:提交之前建议检查是否所有需要提交的文件都已处于暂存区,否则提交的时候不会记录这些还没暂存起来的变化。
 [root@git mystudy]# git commit
解释:此种方式会启动文本编辑器以便输入本次提交的说明,说明通常位于开头空行位置。

2.8 跳过暂存区

默认git只会将所有暂存区的文件进行提交,但可通过git commit -a选项,git会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。

2.9 移除文件

  • 正常git删除操作:即从git移除同时从工作目录删除使用git rm。
  • rm删除后的git移除:rm文件后,再使用git rm [文件]。
  • 放入暂存区之后rm删除文件的git移除:git rm -f [文件]。
  • 从git仓库删除但保留在本地目录:git rm --cached [文件]。

2.10 移动文件

 [root@git mystudy]# git mv README README.md
相当于以下三条命令:
 $ mv README README.md
$ git rm README
$ git add README.md
 

三 查看提交历史

 [root@git mystudy]# git log

四 撤销操作

4.1 重新提交

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交。
 
 [root@git mystudy]# git commit -m 'first commit'
[root@git mystudy]# echo "This is my test 3 file" > README3.md
[root@git mystudy]# git add README3.md
[root@git mystudy]# git commit --amend -m 'second commit'
解释:第一次提交后,发现我们需要再添加一个文件进行提交,可通过以上方式,会使用第二次提交代替第一次提交结果。

4.2 取消暂存区文件

 [root@git mystudy]# echo "This is my test 4 file" > README4.md
[root@git mystudy]# echo "This is my test 5 file" > README5.md
[root@git mystudy]# git add *
[root@git mystudy]# git status
[root@git mystudy]# git reset HEAD README5.md #从暂存区取消特定文件
 

4.3 撤销对文件的修改

 [root@git mystudy]# echo "version 1.1" > version.md
[root@git mystudy]# git add version.md
[root@git mystudy]# git commit -m 'version commit'
[root@git mystudy]# echo "version 2.2" > version.md
[root@git mystudy]# git status
 
 [root@git mystudy]# cat version.md
version 2.2
[root@git mystudy]# git checkout -- version.md
[root@git mystudy]# git status
 
解释:创建一个文件,提交之后再次修改,然后撤销此次修改,回滚至上一次提交的版本。

五 远程仓库的使用

为了能在任意 Git 项目上协作,管理自己的远程仓库非要有必要。远程仓库是指托管在因特网或其他网络中的你的项目的版本库。通常有些仓库对你只读,有些则可以读写。与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。

5.1 查看远程仓库

 [root@git mystudy]# git remote -v

5.2 添加远程仓库

 [root@git mystudy]# mkdir /mystudy2
[root@git mystudy]# cd /mystudy2
[root@git mystudy2]# git init
[root@git mystudy2]# git remote add mystudy2 https://gitee.com/imxhy/mystudy2
[root@git mystudy2]# git fetch mystudy2 #使用别名拉取仓库存在但本地没有的文件
 
解释:git remote add <shortname> <url> 添加一个远程Git仓库,同时指定一个你可以轻松引用的简写。

5.3 从仓库抓取与拉取

git fetch [remote-name]:从仓库中拉取所有本地没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
注意:必须注意 git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。

5.4 推送至远程仓库

 [root@git mystudy2]# git push mystudy2 mystudy2/master

5.5 查看远程仓库

 [root@git mystudy2]# git remote show mystudy2
解释:会列出远程仓库的URL与跟踪分支的信息。显示当前正处于master分支,并且如果运行git pull,则会抓取所有的远程引用,然后将远程master分支合并到本地master分支。它也会列出拉取到的所有远程引用。

5.6 远程仓库移除与重命名

 [root@git mystudy2]# git remote rename mystudy2 study2
[root@git mystudy2]# git remote
study2
 
提示:修改远程仓库名字后会同时修改分支名,如mystudy2/aaa会变味study2/aaa。
 [root@git mystudy2]# git remote rm study2
[root@git mystudy2]# git remote
 

六 git别名

6.1 设置别名

 [root@git mystudy]# git config --global alias.co checkout
[root@git mystudy]# git config --global alias.br branch
[root@git mystudy]# git config --global alias.ci commit
[root@git mystudy]# git config --global alias.st status
 
解释:如上所示,使用别名后,在执行git commit 时,只需要输入 git ci。

002.Git日常基础使用的更多相关文章

  1. 【GoLang】GO语言系列--002.GO语言基础

    002.GO语言基础 1 参考资料 1.1 http://www.cnblogs.com/vimsk/archive/2012/11/03/2736179.html 1.2 https://githu ...

  2. git学习基础教程

    分享一个git学习基础教程 http://pan.baidu.com/s/1o6ugkGE 具体在网盘里面的内容..需要的学习可以直接下.

  3. Git入门基础详情教程

    前言 写了一篇文章<一篇文章了解Github和Git教程>还觉得不错,继续写了<为了Github默默付出,我想了解你>,那么继续写Git 基础知识. Git 官网:https: ...

  4. Git使用基础篇

    Git使用基础篇 前言 Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多 ...

  5. Git使用基础篇(zz)

    Git使用基础篇 您的评价:          收藏该经验       Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体 ...

  6. Mac下Git的基础操作

    目前最火的版本控制软件是Git了吧,今天简单梳理一下Mac下Git的基础操作~~ 一.什么是Git Git是一个分布式代码管理工具,用于敏捷的处理或大或小的项目,类似的工具还有svn. 基于Git的快 ...

  7. git 日常使用从入门到真香

    目录 git 日常使用从入门到真香 一.Git简介 二.Git常用命令 三.git操作流程 四.报错处理 git 日常使用从入门到真香 一.Git简介 Git是一个开源的分布式版本控制系统,可以有效. ...

  8. Mac 下 Git 的基础命令行操作

    Mac 下 Git 的基础命令行操作 sudo apt-get install git-core //安装Git 用户配置 git config --global user.name "Yo ...

  9. Git及基础命令的介绍以及如何向本地仓库添加文件

    在介绍Git的使用之前,我们得要先来了解一下Git.那么什么是Git? Git是一个版本管理工具(VCS),具有以下的特点: 分布式版本控制: 多个开发人员协调工作: 有效监听谁做的修改: 本地及远程 ...

随机推荐

  1. requestMapping之地址映射

    转:http://www.cnblogs.com/qq78292959/p/3760560.html 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.PUT模式提交数据时, ...

  2. Vue实例的生命周期(钩子函数)

    Vue实例的生命钩子总共有10个 先上官方图: 下面时一个vue实例定义钩子函数的例子: var app=new Vue({ el:'#app', beforeCreate:function(){ c ...

  3. 阿里云ECS使用cloudfs4oss挂载OSS

    cloudfs4oss可以帮我们将OSS直接挂载到ECS上,就像一个目录一样方便访问.使用方法: 1.安装配置环境: yum install libcurl libcurl-devel openssl ...

  4. Python 算法实现

    # [程序1] # 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? l=[1,2,3,4] count = 0 for i in range(len(l)): fo ...

  5. JavaScript 获取 flash 对象

    关于js获取flash对象,网上有非常多的例子,我也尝试了不少方法. 虽然都能用,但是没有我最想要的东西, 后来看了下百度的,虽然很规范,各种情况都考虑到了,但是代码量却不是不容乐观, 前前后后将近2 ...

  6. Angular 下的 directive (part 1)

    directive  指令 Directive components  指令部分   使用指令自动引导一个AngularJS应用.ngApp指令指定应用程序的根元素,通常是放在页面的根元素如: < ...

  7. [python]小技巧集锦

    1.数组过滤,只适用于numpy alpha[alpha>0]:返回alpha中大于0的元素组成的数组 2.在范围内选取不等于某值的数值 j = i while j==i: j = int(ra ...

  8. pt-table-checksum 3.0.4检测不出主从差异数据

    群里好几位同学问 pt-table-checksum 3.0.4, 主从两个表数据是不一致,为啥检测不出来?前段时间自己也测试过,只是没整理成随笔^_- 一.基本环境 VMware10.0+CentO ...

  9. Linux awk工具简单学习记录

    awk是一个文本分析工具,它把文件逐行读入,以特定符号将每行切分(默认空格为分隔符),切开的部分再进行各种分析处理. awk其名称得自于它的创始人Alfred Aho .Peter Weinberge ...

  10. 20165320 2017-2018-2《Java程序设计》课程总结

    20165320 2017-2017-2<Java程序设计>课程总结 一.每周作业链接汇总 1.我期待的师生关系 20165320 我期望的师生关系 2.学习基础和C语言基础调查 2016 ...