小白第一次使用Git随笔
想研究Git很久了,一直没有找到很好的博客或论坛,近几天工作项目任务没有那么重,就想着找几篇文章把这玩意儿给解决掉,本博客是记录读廖雪峰老师所写的《Git教程》的随笔,以便巩固学习,若想学习到更详细的教程,请到廖老师的文章学习。
- 安装Git。这个自然不用多说了,笔者用的是Window系统,直接下载一个Git,然后下一步下一步安装就行了。
- 安装完成后,在cmd命令行中执行两个命令:第一个是git config --global user.name "你的用户名";第二个是git config --global user.email "你的邮箱";之所以执行这两个命令是因为Git是分布式的,需要每台机器标识出自己的机器名;参数global是指这台机器上所有的仓库都使用这个配置。注:若使用cmd执行这两个命令出错的话,可在应用程序(也就是开机-所有程序)中找到刚才安装的Git文件夹点击打开Git CMD,在这个命令行工具中执行刚才的两个命令。
- 创建版本库。所谓的版本库,其实也就是一个文件夹,例如我在C盘创建一个名叫GitRepository的文件夹,然后点着shift键右鼠标-选择在此处打开命令行,或者打开cmd然后cd到这个目录下,执行git init命令,把这个目录变成Git的管理仓库。新建一个文件在这个目录下,例如新建一个readMe.txt文档。然后执行git add readMe.txt命令让这个文件被git所管理,这个命令执行结束后没有任何提示是正确的;然后执行git commit -m "版本说明信息"。
- 理解几个概念问题:工作区即当前目录,当执行完init命令后,该目录下会多出一个.git文件夹叫版本库,此版本库里有两个比较重要的东西,一个叫暂存区(Stage),一个是git自动为我们创建的master分支以及指向master的一个指针叫HEAD;当多次执行add时,git的操作是把所add的内容放入暂存区,当执行commit时git会把内容放入分支中。
- git status查看本仓库中各文件信息的状态;git diff 文件名 比较一个文件变化的记录。
- git log显示从最近到最远的提交信息,如果不想一次性看那么多,可以加--pretty=oneline这个参数。
- 版本回退,git中HEAD表示当前的版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本,如果想返回到第100个版本,可以使用HEAD~100。回退到上一个版本的命令git reset --hard HEAD^;指定回到某一版本可以用commit id进行回退,commit id就是在git log中看到的那一串字符串,不必写完,只需要写前几位就可以查到了,命令是:git reset --hard id号。如果从HEAD回退到commit id,这个时候在git log中便看不到了HEAD,若想再回到HEAD,可以用git reflog查看每一步的操作,找到commit id然后回退回去。
- git checkout -- file,回滚工作区的修改。如果该文件已commit,则回到暂存区时的状态,若该文件在暂存区,则回到工作区即没有进行修改之前的状态。此命令的--很重要,若没有的话表示切换分支。git reset HEAD file把暂存区的修改撤消掉,重新回到工作区。
- git rm删除版本库中的文件,然后执行git commit.
- 远程仓库GitHub。因为Git与GitHub之间的传输通过SSH协议,所以需要生成SSH密钥,生成方式在Git Bash里执行
ssh-keygen -t rsa -C "youremail@example.com"命令
命令会在指定的盘符下生成一对公私密钥,把pub密钥中的内容复制到GitHub的Account Setting里可以推送文件到GitHub了;
若有多台电脑需要上传文件到GitHub上,可以添加多个公钥到Account Setting上。 - 添加本地仓库内容到远程GitHub上
git remote add origin git@github.com:GitHub账户名/远程仓库名.git origin为GitHub默认的远程仓库名,可修改,通过此便可把本地仓库与远程仓库关联起来
通过以下命令可以把本进仓库内容推送到远程仓库上
git push -u origin master
- 从远程库克隆仓库到本地
git clone git@github.com:GitHub账户名/需要克隆的库名.git
- 创建分支
$ git checkout -b dev其中的-b参数表示创建分支并把当前分支切换为新创建的分支,相当于git branch dev;git checkout dev;两个命令的集合;
- 查看分支:git branch会以列表的形式把所有分支都列出来,并在当前分支的前面加一个“*”号
- 合并分支:git merge 分支名;通过这种方式合并的形式是Fast_Forward模式
- 删除分支:git branch -d 分支名
- 查看分支合并图:git log --graph
- 分支策略:在合并分支的时候添加--no-ff来禁用Fast_forward模式,可以看到曾经有合并过分支的历史记录
git merge --no-ff -m "merge with no-ff" dev
- Bug分支:当正在开发一个任务,还没有完成的时候,有一个Bug需要修改,此时要把当前进行的工作储存起来,可用git stash命令;然后从需要修复Bug的分支上如master分支上创建临时分支,先切换到master分支,然后创建临时分支,如git checkout -b issue-101;修复完成后切换到master分支上,然后把issue-101分支合并到master分支上;回到刚才的储存工作空间,用git stash list查看储存的列表;恢复刚才的存储用git stash apply但是此时stash并没有删除,若想删除可以用git stash drop;这两个命令可以用git stash pop来代替;也可多次stash,然后用git stash list来查看stash列表,然后用
git stash apply stash@{0}来恢复具体的某一个stash
- Feature分支:每添加一个新功能,为了不搞乱master分支,可以新建一个Feature分支,当开发完成后合并到master分支,然后删除该featrure分支;但当没合并分支时,此功能又不需要了,此时用
git branch -D 分支名 删除该分支,注意D必须大写
- 查看远程库的信息用:git remote命令,若想查看更详尽信息可加上-v参数
- 推送分支就是把本地该分支上的信息推送到远程库上:git push origin master,若想推送到dev上则把master改为dev就行了
多人协作的工作模式通常是这样:
首先,可以试图用
git push origin <branch-name>
推送自己的修改;如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并;如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功!
如果
git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。这就是多人协作的工作模式,一旦熟悉了,就非常简单。
- git rebase命令可以把提交的分叉记录整理成一条线
- git给每个版本打标签:首先切换到需要打标签的分支上,然后使用git tag 标签名打标签,可以使用git tag查看所有的标签;查看所有的提交记录命令:
git log --pretty=oneline --abbrev-commit;对某一个提交ID打标签:git tag 标签名 CommitID;可以用git show 标签名来查看标签的详细信息;还可以添加两个参数
-a 标签名,-m 说明文字信息,如:git tag -a 标签名 -m "打了一个标签" CommitID - 删除标签:git tag -d 标签;因为标签是打在本地的,所以可以直接删除,若想把标签推送到远程仓库,可以用git push origin 标签名或一次性推送全部标签到远程仓库:git push origin --tags;要删除远程标签比较麻烦,需要先删除本地标签,然后再删除远程的标签,命令是:git push origin :refs/tags/标签名
- 自定义git字体颜色:git config --global color.ui true
- 忽略特殊的不想提交的文件:在git仓库下创建一个.gitignore文件,然后把需要忽略的文件名添加进去,然后把这个.gitignore文件提交;这个时候如果想提交在这个名单中的文件到远程仓库中,可以用:git add -f 文件名 进行强制提交;
git check-ignore -v App.class 检查ignore文件中哪个规则出了问题
小白第一次使用Git随笔的更多相关文章
- 适合小白/外行的git与github最基础最浅显教程
首先声明,这是适合小白/外行/初学者/学生看的最基础最简单的git与github教程,已经能使用svn,git等工具的朋友请不要看这篇文章来浪费时间了. 想进一步学习git的,推荐去廖雪峰博客学习. ...
- 第一次使用Git上传本地项目到github上
对于程序原来说都听说过GitHub,GitHub有许多开源的的项目和一些前沿的技术.因为自己在刚刚开始使用Git把自己写的一些小dome放到GitHub上遇到许多的坑,这么长时间过去了,想对第一次使用 ...
- 【FIRST USE】第一次用git把代码上传到github
第一次使用某个东西总是充满了伤痛,我第一次用sed的时候,毁掉了我的所有源代码,第一次用git的时候一直提示不正确,后来解决了问题,便记录下来. 首先说明我的环境,我用的是虚拟机,上面运行的64位的c ...
- 【Git】安装以及第一次使用Git和GitHub傻瓜教程
1.下载安装git(windows7) 下载git:https://www.git-scm.com/download/win 点击exe文件一路next就可以. 2.配置(参考:http://git. ...
- 第一次使用Git心得体会
用书本上的概念讲,Git是一个分布式的版本控制工具,每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,能够不依赖于网络和中心服务器.也就是说Git能够不需要服务器而在 ...
- Android Studio第一次提交git使用
安装: Git客户端网址:http://git-scm.com/download/ 根据自己的使用平台下载对应的客户端.这里以Mac系统为例,当客户端软件安装配置完毕后,打开AS的配置面板,找到Git ...
- 第一次使用Git
这次的作业是关于GIT的,一开始我并不知道GIT是啥,百度了一下才知道Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds ...
- 第一次使用Git Bash Here 将本地代码上传到码云
当我们安装成功git工具时候,初次使用Git时,需要Git进行配置. 1.点击桌面上的这个图标,打开Git Bash:如图所示 2.配置自己的用户名和邮箱 git config --global us ...
- Git随笔 -- 初始化远程仓库
1. 新建文件夹(作为本地仓库与之远程仓库关联),进入文件夹空白处右键选择Git Bash(安装程序下载).[或者在开始菜单里找到Git Bash并打开,使用命令进入文件夹:cd 文件夹名称.] 2. ...
随机推荐
- elixir 模块
模块定义 defmodule 函数定义 def 私有函数 defp --相当于其他语言 private iex(29)> defmodule Math do...(29)> def ...
- VMware桥接模式下主机和和虚机间互相ping不通的处理方法
在 "编辑"->"虚拟网络编辑器" 里面的vmnet0 桥接模式 里面是自动连接,把他改为真实的物理网卡即可,如下图:
- Python解析SWAN气象雷达数据--(解析、生成ASCII、Image、netCDF)
解析 from datetime import * import time import calendar import json import numpy as np from struct i ...
- hadoop HA集群搭建步骤
NameNode DataNode Zookeeper ZKFC JournalNode ResourceManager NodeManager node1 √ √ √ √ node2 ...
- statistics_level 参数的应用
转自 http://blog.csdn.net/zengmuansha/article/details/5149398 statistics_level 参数是oracle9.2开始引入的一个控制系统 ...
- CSS深入理解之absolute(HTML/CSS)
absolute和float是同父异母的兄弟,因为它们具有相同点:包裹性与破坏性 absolute的特点 1.独立的,并且可以摆脱overflow的限制,无论是滚动还是隐藏: 2.无依赖,不受rela ...
- 2 python全局变量如何指定(是在模块内,还是函数内)
示例代码1 xx=1 def __recurrence(): # #前面的0到sentence_length-1的下标,存储的就是最原始的词向量,但是我们也要将其转变为Tensor global xx ...
- Java设计模式----观察者模式详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- spring boot(16)-mail发邮件
上一篇讲了如何处理异常,并且异常最终会写入日志.但是日志是写在服务器上的,我们无法及时知道.如果能够将异常发送到邮箱,我们可以在第一时间发现这个异常.当然,除此以外,还可以用来给用户发验证码以及各种离 ...
- SQL Server配置数据库邮件
需求描述 在生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,可以以发邮件告知,邮件作为一种非常便利的预警实现方式,在及时性和易用性方面也有着不可替 ...