GIT 安装和使用
GIT 安装和使用
一、GIT 介绍
Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有事务。
GIT 下载页面 https://git-scm.com/downloads
GIT 工作流程
- Workspace(工作区):就是电脑里看到的目录。
- Stage/Index(暂存区):一般存放在 ".git目录下" 下的index文件中。
- Repository(本次仓库/版本库):工作区有一个隐藏目录.git
- Remote(远程仓库):Github 或者是公司内部搭的服务器
二、GIT 安装
下载完成后,选择安装路径,进行安装,我是用的是Git 2.23.0
选择组件
选择默认编辑器
选择命令行工具
选择客户端
选择安全连接方式
检出和提交换行格式
默认终端
其它选项
实验性功能
安装成功
三、GIT 使用
1. 配置
- 检查是否安装成功。在桌面右击Git Bash Here,出现终端,输入命令
git --version
查看版本号。 - Git 配置文件
- ``/etc/gitconfig
文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有
--system选项的
git config` 时,它会从此文件读写配置变量。 ~/.gitconfig
或~/.config/git/config
文件:只针对当前用户。 可以传递--global
选项让 Git 读写此文件。- 当前使用仓库的 Git 目录中的
config
文件(就是.git/config
):针对该仓库。 - 每一个级别覆盖上一级别的配置,所以
.git/config
的配置变量会覆盖/etc/gitconfig
中的配置变量。 - 在 Windows 系统中,Git 会查找
$HOME
目录下(一般情况下是C:\Users\$USER
)的.gitconfig
文件。 Git 同样也会寻找/etc/gitconfig
文件,但只限于 MSys 的根目录下,即安装 Git 时所选的目标位置。
- ``/etc/gitconfig
- 配置用户名和邮箱
- 设置用户名:
git config --global user.name "abc"
- 设置邮箱:
git config --global user.email "xxx@xx.com"
- 查看用户名:
git config user.name
- 查看邮箱:
git config user.email
- 设置用户名:
- 查看当前配置信息
git config --list
- 使用帮助信息
git help 命令
2. 创建版本库
版本库又名仓库,英文名repository,这是一个目录,目录里的文件被Git 管理。所以创建一个版本库只需要在一个空目录里使用 命令即可。
git init
但是要注意,git 只能跟踪文本文件的改动,避免出现编码问题,所有文本最好使用标准的 无BOm 的UTF-8 编码。
添加文件到git 仓库
- 先任意编辑一个文本文档。比如一个readme.txt,随意填写一些内容。
# 首先将文件添加到 sage
git add readme.txt
# 提交到 Repository 的当前分支,我们创建 git版本库的时候,会自动创建一个master 分支。
git commit -m "My first submission."
# 查看还有那些文件没有提交
git status
# 修改readme.txt 文件,可以使用 git status 查看是否有修改。查看workspace 与 Repository,当stage 不是空,对比的是 workspace 和 stage 的差异。
git diff readme.txt
# 显示摘要而非整个 diff
git diff --stat
# 查看 Repository 和 stage 的差异。
git diff --cached readme.txt
git diff --staged
# 查看 Repository 和 workspace 的差异
git diff HEAD -- readme.txt
# 然后再使用以上几步,进行提交
版本回退
# 查看历史记录,记录会按时间顺序逆序展示
git log
# 如果感觉输出信息太多,可以使用参数
git log --pretty=oneline
# HEAD 表示当前版本,id 就是那个很长度字符串。上个版本就是 HEAD^,上上个就是 HEAD^^。以此类推,如果比较多,可以使用 HEAD~100
git reset --hard HEAD^
# 如果要想恢复,需要使用 id,每个人的都不一样,id 不用写完,但是要和已有的不冲突
git reset --hard fb110
# 如果回退后,希望恢复,但是忘记id了,可以查看命令记录,有相应的id号。顺序也是按照时间逆序
git reflog
# 撤销workspace的修改,将Repository的最近文件覆盖workspace。没有--,就变成了“切换到另一个分支”的命令
git checkout -- readme.txt
# 撤销 stage 的修改。使用已提交到Repository的最近文件覆盖stage
git reset HEAD -- readme.txt
# 如果已提交到Repository,则需要使用版本回退
git reset --hard HEAD^
# 自己错删文件,需要恢复
git checkout -- test.txt
# 确定要删除库中的文件
git rm test.txt
git commit -m "remove test.txt"
每次提交的信息以时间逆序排列,HEAD 就是最新记录的指针,可以快速的找到需要的记录。
3. 远程仓库
创建SSH Key
ssh-keygen -t rsa -C "xxx@xx.com"
将用户目录下的.ssh 目录下的公钥内容复制到 https://github.com/settings/keys 中即可,title 任意。
由于现在是 Remote 上的仓库是空的,所以 Repository 连接 Remote
# 将 Repository 与 Remote 相连。添加后,远程库的名字就是origin,这是Git默认的名称。
git remote add origin git@github.com:username/repositoryname.git
# 现象 remote 复制到本地
git clone git@github.com:JackingQueen/FirestTest.git
# 将 Repository 的当前分支 master 推送到 origin
git push -u origin master
4. 分支管理
创建与合并分支
# 创建other1分支
git branch other1
# 切换other1分支
git checkout other1
# 快速创建并切换分支,相当于上面两个命令
git checkout -b other1
# 创建并切换分支也可以使用
git switch -c other1
# 查看当前分支
git branch
# 合并other1分支到当前分支,这次合并是“快进模式(Fast-forward)”,不是每次合并都能Fast-forward
git merge other1
# 切换回 master
git checkout master
# 切换回已有分支也可以使用
git switch master
# 删除 other1分支
git branch -d other1
解决冲突
# 以上是在当前分支要超过合并分支的时候,可以使用快进模式,但是如果两个分支对同一文件进行了不一样的操作,就会出现冲突
git switch -c other2
# 加入新内容 123456789
vi test.txt
git add test.txt
git commit -m "o2 commit"
git switch master
# 加入新内容 123abc
vi test.txt
git add test.txt
git commit -m "master commit"
# 此时将other2 合并到 master将出现冲突,合并失败
git merge other2
# 使用命令查看冲突文件
git status
# 活着使用 git log 来看
git log --graph --pretty=oneline --abbrev-commit
# 查看合并文件冲突的地方,手动解决完冲突后在提交
git add test.txt
git commit -m "test merge"
# 删除 other2 分支
git branch -d other2 # 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
# 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
git merge --no-ff -m "merge with no-ff" dev
bug 分支 和 Feature 分支
#####bug 分支#####
# 当前工作正执行到一半,但是突然有新的 bug 需要修复,可以先使用 stash 将现场储藏起来,等到以后恢复现场继续工作
git stash
# 查看刚刚的工作现场
git stash list
# 第一种:恢复后,stash内容并不删除
git stash apply
# 需要使用命令来删除
git stash drop
# 第二种:恢复的同时把stash内容也删了
git stash pop
# 再次查看,就看不到什么内容了
git stash list
# 将某个提交 复制到当前分支,需要使用这次提交的 id。比如 把bug提交的修改“复制”到当前分支,避免重复劳动
git cherry-pick 4c805e2 #####Feature分支#####
# 开发一个新feature,最好新建一个分支。如果要丢弃一个没有被合并过的分支
git branch -D dev
多人协作
# 查看远程库的信息
git remote
# 显示更详细的信息
git remote -v
# 推送分支
# bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug
# feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
# master分支是主分支,因此要时刻与远程同步
git push origin master
# dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步
git push origin dev # clone时,只能看到本地的master分支
git remote add origin git@github.com:JackingQueen/FirestTest.git
# 如果push 失败,就先抓取分支
git pull
# 如果 pull 也失败,就设置dev和origin/dev的链接
git branch --set-upstream-to=origin/dev dev
# 最后在 pull ,然后 push # rebase操作可以把本地未push的分叉提交历史整理成直线
git rebase
git log --graph --pretty=oneline --abbrev-commit
5.标签管理
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动)。
# 创建标签
git tag v1.0
# 查看所有标签
git tag
# 根据 commid 打标签
git tag v0.9 f52c633
# 查看标签信息
git show v0.9
# 可以携带参数。用-a指定标签名,-m指定说明文字。
git tag -a v0.1 -m "version 0.1 released" 1094adb
# 删除本地标签
git tag -d v0.1
# 推送标签
git push origin v1.0
# 一次性推送全部尚未推送到远程的本地标签
git push origin --tags
# 删除远程标签,先删本地,再删远程
git tag -d v0.9
git push origin :refs/tags/v0.9
6. 自定义
- 修改颜色:
git config --global color.ui true
- 忽略特殊文件:在Git工作区的根目录下创建一个特殊的
.gitignore
文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。.gitignore
文件本身要放到版本库里,并且可以对.gitignore
做版本管理! - 配置别名:
git config --global alias.st status
GIT 安装和使用的更多相关文章
- CentOS 7 Git安装
Git安装 yum -y install git 安装后,在srv目录下建立Git的目录. 初始化一个git空仓库 git init --bare project.git 增加用于访问git仓库的用户 ...
- Git安装
前面说了很多废话,说得再好,还不如实践一次.要想使用Git,首先得安装.这次实验主要是实践怎样安装Git. 安装与检查是否安装成功 1. 在Linux(Ubuntu)上安装 上篇的Git简介已经介绍过 ...
- Git安装与配置
一.简介 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的 ...
- 版本管理之Git(二):Win7上Git安装及简单配置过程
一.安装包 msysgit(Windows版本的Git) 下载地址:http://code.google.com/p/msysgit/downloads/list?q=full+installer+o ...
- git安装及命令使用和github网站
最近参与别人的github项目时,学习了git的使用,首先需要在https://github.com/网站上注册账号和邮箱,然后fork一个开源项目,然后下载目前Windows下最新版本的git,下载 ...
- Git 安装
安装参考资料: http://lzw.me/a/msysgit-tortoisegit-win-git.html http://blog.csdn.net/qwiwuqo/article/detail ...
- 转 git安装配置
Win7上Git安装及配置过程 一.安装说明 1.Git在windows平台上安装说明. Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件 ...
- git学习1:git安装和配置
Git是什么?世界上最先进的分布式版本控制系统,记录了一个文本文件的每次一修改信息,比如,一篇散文,从草稿到最终出版,经历过无数次修改,修改了标点符号形成一个版本,老师帮助修改形成一个版本,同学帮忙修 ...
- ubuntu下git安装及使用
ubuntu下git安装及使用 其实,好几个月前,就已经安装好了,可是一直搁置在那儿,所以密码等一些其它细节都忘的差不多了,所以今天就重新部署了一下,并开始积极使用......... 1,git ...
- 分布式管理系统-git安装及配置
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功! 安装完成后,还需要最后一步设置,在命令行输入: $ git config - ...
随机推荐
- 攻防世界-web -高手进阶区-PHP2
题目 首先发现源码泄露 /index.phps 查看源代码 即: <?php if("admin"===$_GET[id]) { echo("<p>no ...
- Android Okhttp POST提交键值对
以前的项目网络连接那块一直坚持使用HttpClient,总是会出现一些莫名奇妙的问题,现在新的项目使用了OKHttp网络框架,发现超级好用,上网再了解下,发现OkHttp口碑真的不错,对比之下Http ...
- java获取客户端请求IP地址(公网ip)
之前写了一个获取ip地址的方法,但是放网上一查显示此Ip地址是局域网ip地址,要是想获取请求端的真实公网ip地址怎么样了,看了一些别人的博客后发现,想要获取客户端的公网ip必须借助第三方. packa ...
- MySQL报错合集解决办法: server has gone away, @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON
server has gone away: 如下图 执行以下命令 show global variables like '%timeout%'; set global interactive_time ...
- AIX运维常用命令
目前传统的磁盘管理仍有不足:如果下Unix系统中的存储容量需要扩展,文件系统就必须停止运行,然后通过重构分区的手段来进行分区和文件系统的扩容.一般采用的方法是先备份该文件系统并删除其所在的分区,然后重 ...
- SSIS-WMI监视文件夹
在文档交互数据时,通常会排个job每隔几分钟执行来解析文档,但是jOb不能排的太频繁了,所以文档不能及时的被解析. 在SSIS中可以使用WMI这个组件来监视文件夹,一旦有新文档丢入就马上执行解析程序, ...
- HTTP中分块编码(Transfer-Encoding: chunked)
转自: 妙音天女--分块传输编码~ 参考链接: HTTP MDN--HTTP协议 一.背景: 持续连接的问题:对于非持续连接,浏览器可以通过连接是否关闭来界定请求或响应实体的边界:而对于持续连接,这种 ...
- VUE的路由器的总结
vue的路由器,我们在使用vue进行开发的时候,是必须用到的一个vue自带的组件,下面进行vue经常的操作的一些说明 1.vue-router的安装 在命令行里面使用 cnpm install vue ...
- 201871010102-常龙龙《面向对象程序设计(java)》第二周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- Comet OJ 夏季欢乐赛 Gree的心房
Comet OJ 夏季欢乐赛 Gree的心房 题目传送门 题目描述 据说每一个走进Gree哥哥心房的小姑娘都没有能够再走出来-- 我们将Gree哥哥的心房抽象成一个n \times mn×m的地图,初 ...