文档章节

学习Git,这篇文章足矣

爬墙
 爬墙
发布于 2016/01/30 22:29
字数 1434
阅读 699
收藏 55
点赞 2
评论 3
#常用命令
看这个:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html?bsh_bid=5983510

#--------------------

#初始化,增加版本库
git init

#或者直接远程克隆
git clone http://

#--------------------

#加入文件
git add -A  #或者--all增加所有,适用第一次初始化,,Git2.0起,all是git add的默认参数,可用git add .代替
git add .   #增加新增和修改的,排除删除的
git add -u  #增加更新和删除的,排除新增的
git add -i  #查看所有修改过或已删除文件但没有提交的文件
git add -h  #其他参数可以用这个命令查看

#--------------------

#commit提交到仓库
git commit -m ""  #快捷命令可以写成 git ci -m 需要系统设置

#查看commit提交记录
git log --pretty=oneline
git log --graph --pretty=oneline --abbrev-commit

# 修改上一次的commit
git commit --amend
#会弹出一个vi修改界面,在最上面修改保存即可

#--------------------

#拉取和提交到远程仓库
# 下载远程仓库的所有变动
$ git fetch [remote]

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]

# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all

 

阮一峰和廖雪峰双峰大神教程可解决Git所有基础问题:

Git基础:

廖雪峰Git教程

阮一峰Git远程操作详解

阮一峰常用Git命令清单

 

Git进阶

阮一峰Git使用规范流程

阮一峰Git分支管理策略

阮一峰Git工作流程(flow)

阮一峰Github的清点对象算法

合并merge和rebase的区别

git命令cheat sheet

带'(撇号)和其他的commit实际上还是存在两个分支上,只是以线性显示出来。

撤销所有修改和新增:

# 如果还未add到暂存区
git checkout -- .
git clean -xdf

# 如果已经add到暂存区
git reset --hard
git clean -xdf

# git clean -xdf #意思是清理所有未跟踪文件,也就是新增的未add的文件,注意忽略文件也会被删除,危险

 

查看commit记录

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

 

修改历史commit

# 修改上一次的commit
git commit --amend
#会弹出一个vi修改界面,在最上面修改保存即可

#修改多次历史commit,说实话,能搞,但是太繁琐了,难怪王垠说git是反人类

===================

 

理解git的核心图形

 

所有git 命令后面加入 -h参数可以看到说明

git add -h
git remote -h

 

一次性增加所有文件命令,在add之前最好先规划好忽略文件,命令参考资料

git add -A  #或者--all增加所有,适用第一次初始化,,Git2.0起,all是git add的默认参数,可用git add .代替
git add .   #增加新增和修改的,排除删除的
git add -u  #增加更新和删除的,排除新增的
git add -i  #查看所有修改过或已删除文件但没有提交的文件
git add -h  #其他参数可以用这个命令查看

git add -i 命令详情参考:http://hubingforever.blog.163.com/blog/static/171040579201231110371044/

 

在add之前应该先增加忽略文件.gitignore文件,最好先设置忽略一下常见的系统文件:参考网站,也可以参考github提供的例子

# 全局忽略.DS_Store(Mac下)及其他文件,
# 创建全局设置文件,然后在~/.gitconfig 中引用即可
vi ~/.gitignore_global

# 文件内容:
####################################
######## OS generated files ########
####################################
.DS_Store
.DS_Store?
#ide配置文件
.idea
*.swp
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
####################################
############# Packages #############
####################################
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

#git引入全局文件
vi ~/.gitconfig

#加入一下内容
[core]
        excludesfile = /Users/hero/.gitignore_global

 

第一次从本地push到服务器的时候,出错代码:error:failed to push some refs to ...,git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去,解决办法:参考网站

# 第一种,加参数-f强制覆盖
git push -f

#第二种,将服务器上的和本地合并,然后再push上去
git fetch
git merge

 

git远程操作五大命令,参考网站

git clone   #克隆
git remote  #管理远程主机,-h可以看到所有参数,remove可以移除已有的远程主机git remote remove origin
git fetch
git pull
git push

日常操作:

新建:

  1. 先在git的网站新建好项目
  2. 然后在本地克隆:git clone url
  3. 将本地代码拷贝进去
  4. 将所有代码放到git清单:执行git add -A
  5. git commit -m "初始化"
  6. 将本地推送到服务器端:git push -u origin master

拷贝:

  • git clone url 

逐步撤销

  • 已修改还未add:
    git checkout -- file #-- 要加上 不然就变成切换分支
  • 已add还未commit:
    git reset HEAD  #HEAD 代表是当前暂存区
    
    #如果之前没有提交过
    git rm -r --cached .
  • 已commit还未push:
    git reset --hard HEAD^ #--hard不保留修改,注意
    # 已commit表示暂存区已经提交到了仓库,HEAD^表示是上一版本
    # git reset --soft : 取消了commit  
    # git reset --mixed(默认): 取消了commit ,取消了add
    # git reset --hard : 取消了commit ,取消了add,取消源文件修改
  • 已push:
    git reset --hard HEAD^
    git push --force

git commit -m 输入换行符

先输入git commit -m 'some things

然后输入 \ 回车

可以连续回车,最后输入单引号'回车提交即可 

© 著作权归作者所有

共有 人打赏支持
爬墙
粉丝 11
博文 158
码字总数 68238
作品 0
美国
加载中

评论(3)

爬墙
爬墙

引用来自“chr1s”的评论

引用来自“茶_壶”的评论

俩峰

廖雪峰,打错字了
打错了,已经纠正
chr1s
chr1s

引用来自“茶_壶”的评论

俩峰

廖雪峰,打错字了
放个屁
放个屁
俩峰
svn 还是 git?

我个人是从svn到git,svn使用时间较长,git相对较短,基本都是基于“乌龟”。 从使用体验来说,svn简单明了,除了偶尔抽风必须删除本地副本重新拉取之外,一直很顺手;对其冲突的发现和强制合...

深蓝苹果 ⋅ 2016/04/12 ⋅ 2

Linux内核升级

一直在使用了Ubuntu12.04,其Linux内核为precise64 3.2.0-23。最近想学习docker,但官方建议最好在linux内核3.8以上版本进行操作。 linux内核升级非常简单,三个命令足矣! --检查当前内核版...

OpenIoT ⋅ 2015/06/20 ⋅ 1

转贴一篇读后感

IT人的学习方法论发表之后,收到了不少朋友的反馈。在此非常感谢大家的鼓励和支持。我的朋友Asuka就我谈到的心法和招式等内容结合自己的经历,写了一些感想。我觉得写的特别好,很多人都有这...

yongyu2000 ⋅ 2009/11/11 ⋅ 0

Android学习需要从应用层开始向下学吗?

本人希望进入Android的领域,目标在中间层,那么需要先从应用程序开始吗?还是直接从HAL进入? 若需要从应用层开始,达到什么程度再往下学? 若哪位前辈能点一下学习的步骤,紧紧方向足矣,感...

JunoSean ⋅ 2012/02/19 ⋅ 3

sftp常用命令介绍

某linux系统中有test.cap, 现在, 我需要把它移动到PC上, 然后用wireshark进行分析。 怎么移动呢? 没有什么samba啊, 不支持ftp啊, 也不支持tftp啊。 用sftp吧。 在PC上开启sftp服务器(下...

君满楼001 ⋅ 2017/12/03 ⋅ 0

java 实现微信搜索附近人功能

最近给andorid做后台查询数据功能,有一个需求是模仿微信的查找附近人功能。 数据库中存储每个用户的经纬度信息及用户信息,通过当前用户传递过来的经纬度查询这个用户半径N公里以内的用户信...

凯文加内特 ⋅ 2015/09/08 ⋅ 2

Eclipse调试Java程序的十大技巧 (Top 10 Java Debugging Tips with Eclipse)

在这篇教程中,我们将看到有关使用Eclipse去调试Java应用,调试能够帮助我们找到并修改应用的缺陷。我们将关注运行时问题,而不是编译时错误。有像GDB一样的命令行调试器也一样可用。在这篇教...

刀狂剑痴 ⋅ 2015/08/27 ⋅ 0

机房见闻和一些其他事

1. 今天下午,顶着35度的高温,我到上海电信的机房,取出已经存放3年(4年?)的一台服务器。但是,遇到了一件意想不到的事。 机房的门卫室里居然有警察!一共4个,都穿着便衣,其中一个正在...

阮一峰 ⋅ 2008/07/15 ⋅ 0

项目托管至GitHub上

1、免费申请一个github帐号:www.github.com; 2、下载git 1.7.6,百度之,http://git-scm.com/(git的主页)貌似已经被墙; 3、在github首页,点击页面右下角“New Repository”,填写项目名...

boonya ⋅ 2016/01/06 ⋅ 0

关于统计软件SAS的一点感想

这几天在学习使用SAS,写一点感想。 我是初级使用者,觉得SAS的用户界面很不友好,很难上手。 SAS是为字符界面开发的,后来当操作系统升级到图形界面后,它一直没有改变,保持原样。我使用的...

阮一峰 ⋅ 2004/10/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部