初学Git——命令总结
首先,感谢廖雪峰老师制作的Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000,下面命令是我自己的理解,若有不正确的地方,欢迎指正,谢谢!
1. Git简介
// 1. 创建版本库
$ cd:e // 切换盘符
$ cd .. // 回到文件上一层(注: cd与..中间有个空格)
$ cd ~ // 回到当前目录的主目录
$ mkdir Git // 创建文件夹Git
$ touch fileName // 新建文件
$ vi fileName // 编辑文件
$ press i button // 开始进入编辑状态
$ press the Esc button // 退出vim编辑区
$ :wq // 退出编辑状态, 回到命令窗口
$ mkdir learngit // 创建文件夹learngit
$ pwd // 显示当前路径/e/Git/learngit
$ git init // 将当前目录变成一个Git可以管理的仓库
$ touch+文件名 // 直接新建一个文件
$ git add readme.txt // 将文件添加到Git仓库(把文件修改添加到暂存区)
$ git commit -m "wrote a readme.txt." // 将文件提交到仓库(把暂存区的所有内容提交到当前分支)
$ git add file1.txt // 添加file1.txt文件
$ git add file2.txt file3.txt // 同时添加file2.txt和file3.txt两个文件
$ git commit -m "add 3 files." // 一次性提交3个文件
2. 时光穿梭机:
// 2.1 版本回退
$ git status // 查看当前仓库状态(仓库下的工作区文件是否被修改过)
$ git diff readme.txt // 查看工作区的readme.txt与缓存区的readme.txt的区别
$ git log // 查看最近到最远的提交记录(详情: commit id + Author + Date + comment)
$ git log --pretty=oneline // 查看最近到最远的提交记录(简写:commit id + comment)
$ git reset --hard HEAD^ // 回到上一个版本(HEAD: 当前版本,HEAD^: 上一个版本,HEAD~100: 往上100个版本)
$ git reset --hard 1234567 // 回到指定版本号commit id(此处:commit id 假设为1234567******,Git会根据commit id的前几位自动寻找对应的版本)
$ cat readme.txt // 查看readme.txt的内容
$ git reflog // 查看每一次命令记录历史,确保能回到任意版本
// 2.2 工作区与暂存区
$ git diff readme.txt // 比较工作区(working directory)和暂存区(stage/index)的区别
$ git diff --cached // 比较暂存区(stage/index)和分支(master)的区别
// 2.3 管理修改(详见1. 创建版本库中的命令)
// 2.4 撤销修改
$ git checkout -- readme.txt // 撤销修改:1. 文件在添加到缓存区前修改,则回退到原工作区状态;2. 文件在添加到缓存区后修改,则回退到原缓存区状态。也即是将readme.txt撤回到最近一次git add或git commit状态(注:--表示在当前分支,如果没有,则切换到另一个分支)
$ cat readme.txt // 查看文件内容
$ git reset HEAD readme.txt // 1. 回退到最新版本;2. 将暂存区的修改回退到工作区
// 2.5 删除文件
$ rm test.txt // 删除工作区文件(类似于手动删除)
$ git status // 查看当前工作区与缓存区状态
$ git rm test.txt // 情况1:确认删除
$ git commit -m "remove test.txt" // 情况1:确认删除后,提交到版本库
$ git checkout -- readme.txt // 情况2:误删,需要回退(即:用版本库里的版本替换工作区的版本)
// 3. 远程仓库
// 3.1 添加远程库
git remote add origin git@server-name:path/repo-name.git // 关联一个远程仓库,如:$ git remote add origin git@github.com:ChrisLeejing/learngit.git
git push -u origin master // 第一次推送master分支的所有内容
注:在GitHub上创建新仓库时,如果勾选了README.md选项时,可能会出现下面错误,提示:远程仓库有readme.txt,而本地仓库没有README.txt,此时应该先进行合并文件,再进行推送。
git pull --rebase origin master // 推送之前,进行合并
合并文件之后,发现本地仓库中多了README.md文件,此时再进行推送修改到远程仓库就可以了。
再次执行:git push -u origin master, 即可推送本地仓库到远程仓库了
查看GitHub上的文件,已经更新!
git push origin master // 以后每次本地修改更新后,推送最新修改
// 3.2 从远程库克隆
$ git clone git@github.com:ChrisLeejing/gitskills.git // 以SSH方式克隆
$ git clone https://github.com/ChrisLeejing/gitskills.git // 以Https协议方式克隆
// 4. 分支管理
// 4.1 创建与合并分支
git branch // 查看所有分支(当前分支以‘*’标记)
git branch <name> // 创建分支(如:git branch dev)
git checkout <name> // 切换分支
git checkout -b <name> // 创建切换分支(如:git checkout -b dev)
git merge <name> // 合并分支到当前分支上
git branch -d <name> // 删除该分支
// 4.2 解决冲突
git log --graph // 查看分支合并图
git log --graph --pretty=oneline --abbrev-commit // 查看分支合并缩略图
// 4.3 分支管理策略
git merge --no-ff -m "注释" dev // 合并后的分支有历史记录,而Fast-Forward合并之后,分支没有历史记录
// 4.4 Bug分支
git stash // 隐藏分支工作现场,为修复bug准备
git stash list // 查看有哪些分支隐藏的工作现场,为恢复工作现场做准备
git stash apply // 恢复工作现场,但不删除存储的stash内容,结合git stash drop进行删除
git stash drop // 删除存储的stash内容,恢复到隐藏前的工作现场
git stash pop // 恢复到隐藏前的工作现场,相当于git stash apply和git stash drop
git stash apply stash@{0} // 可以多次stash,通过git stash list查看所有的stash,然后可以恢复到指定的隐藏的工作现场
// 4.5 Feature分支
注:当添加一个feature时,最好新建一个分支:git checkout -b <name>
git branch -D <name> // 强行删除一个没有被合并到主分支的分支
// 4.6 多人协作(最好结合工作场景理解)
git remote -v // 查看远程库详细信息
git push origin dev // push本地dev分支到远程dev
git push origin master // push本地master分支到远程master(时刻保持同步)
git pull // 将最新的pull/dev(master)爬下来
git checkout -b branch-name origin/branch-name // 在本地创建和远程分支对应的分支
git branch --set-upstream-to=origin/<branch> dev // 建立本地分支和远程分支的关联
// 4.7 Rebase
git rebase // 将本地未push的分支提交整理成直线,利于查看
// 5. 标签管理
// 5.1 创建标签
git tag <tagname> // 创建标签
git tag // 查看所有标签
git tag <tagname> commitId // 为某次提交创建指定标签
git show <tagname> // 查看指定标签具体内容
git tag -a <tagname> -m "v0.1 released" commitId // 为某次指定的提交创建标签,同时添加标签注释
git tag -d <tagname> // 删除某个标签
git push origin <tagname> // 推送某个标签到远程库
git push origin --tags // 一次性推送所有标签到远程库
git tag -d v0.9 // 删除远程库标签(第一步:删除本地库标签)
git push origin :refs/tags/v0.9 // 删除远程库标签(第二步:从远程库删除标签)
// 6. 使用GitHub
在GitHub上,可以自己fork任意开源仓库,自己拥有fork后的仓库的读与写操作权限,可以推送pull request给官方仓库贡献代码。
// 7. 使用码云(与GitHub类似,用到的时候,再注册使用练习,毕竟GitHub更加NB一些!)
// 8. 自定义Git(这里只是简单入门)
git config --global color.ui true // 让Git显示颜色
// 8.1 忽略特殊文件
忽略某些文件时,需要编写.gitignore文件,文件本身要放到版本库中,Git可以对.gitignore做版本管理!(注:不需要从头写.gitignore
文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore)
// 8.2 配置别名
git config --global alias.st status // 将st作为status的别名,以后就可以git st查看暂存区与工作区的状态了(还有类似co:checkout, ci:commit, br:branch,--global:是针对于当前用户起作用的,如果不加,则只针对于当前仓库)
cat .gitignore // 查看当前文件所有配置信息(包括别名信息)
// 8.3 搭建Git服务器(暂时用不上,用的时候,再复习一下)
到此,Git教程学完,感谢廖雪峰老师!为了让自己不遗忘,记下自己练习的Git命令地址:E:\Git\learngit\note.txt
初学Git——命令总结的更多相关文章
- 初学Git命令
初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 使用命令git add <file>,注意,可反复多次使用,添加多个文件: 使用命令git commit ...
- 初学git(一):创建本地“仓库”
初学git(一):创建本地“仓库” 作为一个初学者,我是跟着廖学峰老师的官方博客学习,这里只是做个笔记,哈哈,关于git的历史.和其他版本控制的对比啥的,我就不说了.另外,我这里用的是Mac OS X ...
- 初学git && 使用总结
参考文章:http://www.ruanyifeng.com/blog/2014/06/git_remote.html git基础操作 http://www.ruanyifeng.com/blog ...
- 初学git
初学git,总结了一点东西,可能有理解和操作的不到位的地方,还有就是这个是我之前写在word上的,因为CSDN上不能直接上传,所以拷贝的过程中也可能有其他问题.发的的朋友还望指正... 1.找到“参与 ...
- 常用 Git 命令使用教程
下面整理一下自己在开发过程中经常使用到的 Git 命令.使用 GUI 工具的同学,也可以对照起来看看. Git 配置 1. 在安装完成 Git 后,开始正式使用前,是需要有一些全局设置的,如用户名.邮 ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- 工作中常用的git命令
一 常用Git命令 git clone:(区分SSH or HTTP) git init:初始化仓库 二 Git命令详解 Git Bash下,cd /c git clone,从远程Git版本库克隆一份 ...
- 常用 Git 命令清单
我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...
- 常look的Git命令
常用的Git命令 命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git a ...
随机推荐
- for循环,foreach, map,reduce用法对比+for in,for of
for不做赘述,相当简单: foreach方法: forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数. 注意: forEach() 对于空数组是不会执行回调函数的. array.f ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)K Kingdom Roadmap
K: 给你n个点以及n-1的条边, 问你最少要加多少条边,使得每两个点割去一条联通的边,还可以使的这两个点连通. 有个一个结论,最少添加的边数为(叶子节点数+1)/ 2. 我们可以只考虑叶子节点数应该 ...
- 一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制
这个是可以的,一个“.java”源文件里面可以包含多个类,但是只允许有一个public类,并且类名必须和文件名一致. 每个编译单元只能有一个public 类.这么做的意思是,每个编译单元只能有一个公开 ...
- JVM参数配置详解-包含JDK1.8
堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:6 ...
- 解决hibernate 序列化死循环的问题
用ie8时,请求json,eclipse直接死机!!!! 调试时,可以用chrome,看到无限循环的报错...类似 {"empty":true,"total": ...
- 【工具安装】kali linux 安装教程
日期:2019-07-14 16:36:21 介绍:使用最新版的 VMware 来安装 kali linux 0x01.下载镜像 首先需要安装 VMware,安装步骤点这里. VMware 安装教程 ...
- 2018.03.29 python-matplotlib 图表生成
'''Matplotlib -> 一个python版的matlab绘图接口,以2D为主,支持python,numpy,pandas基本数据结构,高效图标库''' import numpy as ...
- linux打包
1.打成tar包 sudo tar -zcf boot.tar /boot/ 2.打成zip包 sudo zip -r boot.zip ./*
- python 封装dlib模型进行人脸识别系统的登录认证
1.直接上干货 #!/usr/bin/python # -*- coding: utf-8 -*- import time import dlib import numpy as np class f ...
- pyspark的安装配置
1.搭建基本spark+Hadoop的本地环境 https://blog.csdn.net/u011513853/article/details/52865076?tdsourcetag=s_pcqq ...