Git

分布式的版本控制系统

此文档为简单版想看详细GIT请到 coder-pig | 阮一峰

如有不足请包涵

安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效):

git config --global user.name "用户名" # 设置用户名
git config --global user.email "用户邮箱"   #设置邮箱

创建仓库

先创建一个文件夹在cmd进入该文件夹,初始化仓库

git init

注意看不到 .git文件需要打开显示隐藏文件夹,只供观看以免操作到该文件产生问题,看完后隐藏避免操作到该文件夹

核心框架

三个部分:

  1. 工作目录:本地目录(你创建的文件夹)
  2. 暂存区域:准备提交到仓库的内容
  3. Git仓库:从暂存区域,提交到Git仓库的内容

流程:
在工作目录中添加修改文件 ==>将需要提交的文件,放入暂存区域 ==>将暂存区域的文件提交到git仓库

将文件提交到暂存区域

git add 文件名 #文件夹加/
git add --all 或者 add . #将所有文件保存到暂存区

将暂存区域文件提交到Git仓库
注意必须写注释

git commit -m "注释信息"

取消暂存

git restore --staged 文件名

Git 状态

git status

on branch master (默认分支master)
nothing to commit. workingtree clean 没有提交的目录
Changes to be committed 有一些改变没有去提交

在创建新的文件时没有提交到Git仓库 使用该命令时会报错(或者提交到暂存没有提交到仓库),需要提交到暂存区域在从暂存区域(或者已经提交到暂存)提交到git仓库

如果提交到暂存区后再对文件进行修改时,需要重新提交到暂存区。不然提交到Git仓库的会是暂存区(旧版本)的内容而不是你修改文件(新版本)后的内容
本地内容(修改后新内容)和暂存(旧内容)相当于二个不同的区域,只有当二个区域的内容相同提交到Git仓库的内容才会是更新的内容


回滚版本 每次提交(本地=>暂存=>仓库)就相当于是一个版本

git log #版本查询(日志)

git reset #指定版本 也可以进行版本号方式回滚需要输入前6位就可以了
>#将git仓库与暂存区域回滚到了指定版本,并未修改本地目录(目录下的内容(文件))

git reset --soft HEAD~1 #指定版本 
>#只是将你的git仓库内容回滚到了指定版本,需要从新提交暂存

git reset --hard 版本号 #指定版本
>#将本地、暂存、git仓库都回滚到指定版本

commit的版本号,可以写HEAD

版本的表示:HEAD

git reset HEAD~1 #回滚到上一个版本 1表示往上一个版本 2以此类推

重命名文件

原文件 ==>重命名文件

直接对文件进行修改 git检测就会以为你

  1. 删除了文件原文件
  2. 新增了文件

如果需要修改文件名

git mv 旧文件名 新文件名 #需要提交commit

删除文件

git rm 文件名 #并没有对你的删除进行提交需要commit 在为提交前都可以进行回滚

恢复文件

git restore --stage 文件名 #恢复的是暂存区域的文件
git restore 文件名 

日志

git log #版本查询(日志)当前分支
git log --oneline --decorate --graph --all #可以查看到精简版的日志与分支信息(版本号7位、所属分支、注释)

查看

git show 提交id # 查看某次commit的修改内容
git diff 文件名 #查看修改内容
git rev-parse 分支名 # 查看分支commit的版本号,可以写HEAD

标签

Git 中的tag指向一次commit的id,通常用来给开发分支做一个标记,如标记一个版本号。

git tag 标签名 #例如 版本号(v1.0)默认为HEAD也可以指定一个commit id
git tag -a 标签名 -m "描述"
git tag #查询所有标签
git show 标签名 #查询该标签信息
git reset --hard 标签名 #版本回退
git tag -d #删除标签
git checkout 标签名 #切换到指定tag
>远程
#通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作:
git push origin 标签名 # 提交指定标签到git服务器
git push origin –tags # 将本地所有标签一次性提交到git服务器
git push origin :refs/tags/标签名 #删除远程标签
git push origin --delete tag 标签名 #删除远程标签
git fetch origin tag 标签名 #获取远程版本
git分支

创建分支

git branch 分支名

查询当前所有分支

git branch -a  # *号表示你当前所在的分支

切换分支

git checkout 分支名

合并分支

git merge 分支名

在a分支文件修改内容然后切换b分支修改内容合并时会发生冲突需要手动合并,在提交到暂存在到仓库,不会对b分支有任何操作,只是把b分支内容合并到a分支

并没有想象的那么智能
在文件名 大小 一致 可能没有办法判断你是否修改了
还有二进制文件 word excel 图片 视频等

删除分支

git branch -d 分支名 # 删除分支,分支上有未提交更改是不能删除的
git branch -D 分支名 # 强行删除分支,尽管这个分支上有未提交的更改

恢复误删分支

git log --branches="被删除的分支名" # 找到被删分支最新的commitb版本号
git branch 分支名 版本号(前七位即可) # 恢复被删分支

分支重命名

git branch -m 老分支名 新分支名 

命令别名

git config --global alias.别名 原命令(如status)

远程

创建ssh

 ssh-keygen -t rsa -C "你的设置邮箱地址" #注册登录上 把.ssh文件id_rsa.pub内容复制到SSH创建key

在本地使用如下命令:

git remote add origin http或者ssh地址 #链接到远程仓库

本地推送到远程仓库

git push -u origin 分支名 #确认链接选yes(注意不要只写y) 第二次该命令操作可无需在加 -u

推送到远程仓库后,添加新的本地内容后提交到git仓库后在次 git push origin 分支名即可

clone(克隆)

创建一个文件夹cmd 或者 Git Bash 输入以下命令:

git clone 远程仓库地址 # 克隆项目到当前文件夹下
git clone 远程仓库地址 目录名 # 克隆项目到特定目录下

克隆后必须进入到你克隆下来了的文件夹才能使用Git命令,因为你创建的文件夹并没有 .git 包,进入克隆的文件夹自带.git包(可以打开隐藏文件夹进行查看)

当然你也可以不用创建文件夹进行克隆减少进入子文件夹

克隆后在远程仓库添加新的内容(注意添加文件记加后缀)用以下命令:
获取克隆后最新的内容

git pull origin 分支名 #同步远程仓库的更新
git push –u origin 分支名 –f #强制推送

查看

git branch -r # 查看远程所有分支
git pull origin 分支名 --allow-unrelated-histories #在推送时候报错查看原因
cat .git/config #进入git的配置文件所在,打开.git/config配置文件
git config --list #查看当前的config配置

删除远程分支

git push origin :分支名
git push origin --delete 分支名

重命名远程分支 先删除远程分支,然后重命名本地分支,接着再Push到远程仓库

多人协作:

这里仅总结一下多人协作时,哪些分支需要推送,哪些分支不需要推送。
-般来讲,遵循以下的规则: .
●master: 该分支是主分支,因此要时刻与远程同步。
●dev:该分支是开发分支,团队所有成员都需要在.上面工作,所以也需要与远程同步。
●bug: 该分支只用于在本地修复bug, 就没必要推到远程了,除非老板要看看你每周到底复了几个bug。
●feature: 该分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值