Git基础使用
Git-基础使用介绍

一、什么是Git
Git 是一个开源的分布式版本控制系统 ,说白了就是Git的各个仓库区域保存了我们的数据快照,方便我们后悔时回退到之前的版本。使用GIt指令可以将数据保存到暂存区、本地仓库和远程仓库,当在工作区想要回退时,使用指令即可将想要的版本覆盖到工作区。
二、初始化
初始化
$ git init # 将当前目录初始化为git仓库,生成.git文件。
$ git remote add [name] [url] # 添加远程仓库,name:本地仓库名,url:远程仓库url
$ git config --global user.name 'longan'
$ git config --global user.email test@runoob.com
分支
$ git branch # 列出所有本地分支
$ git branch -a # 列出所有本地分支和远程分支
$ git branch dev # 创建dev分支,-b创建同时切换分支
$ git branch -d <分支名> # 删除分支 -D强制
# 修改分支名1
$ git checkout -b new old # 通过复制old分支新建new分支
$ git branch -d old # 删除old分支
# 修改分支名2
$ git branch -m new-name # 为当前分支改名
$ git branch -m dev new-name # 为指定分支改名
$ git branch --set-upstream-to origin origin/master # 本地远程分支关联
三、版本控制
工作区↔暂存区(index)
# 工作区 --> 暂存区
git add [file1] [file2] ... # 添加一个或多个文件到暂存区。
git add [dir] # 添加指定目录到暂存区,包括子目录。
git add . # 添加所有文件到暂存区。
# 暂存区 --> 工作区
# 如果工作区已混乱,想将暂存区的数据同步到工作区。
$ git checkout -- filename # 放弃修改,即将暂存区数据同步到工作区
$ git rm --cached <file> # 将文件从暂存区移除(不参与版本控制),不改变工作区
$ git rm <file> [-f] [–r<dir>] # 从暂存区和工作区中删除,-f强制删除,-r递归删除
# 仓库中存在的怎么弄到工作区
$ git restore # 撤销工作区的修改,即将暂存区的数据拉到工作区(回到上一次add的状态)
暂存区(index)↔本地仓库
# 暂存区 --> 本地仓库
$ git commit -m [message] # 将暂存所有区内容添提交到本地仓库中
$ git commit [file..] -m [message] # 提交指定文件
$ git commit -a # -a 参数设置修改文件后不需要手动执行git add命令,直接提交
$ git commit -am [message] # 快速提交
# 本地仓库 --> 暂存区、工作区
# 工作区和暂存区已混乱,从本地仓库恢复,同时改变工作区和暂存区
$ git checkout HEAD -- <filename>
# 如果工作区、暂存区和本地仓库最新的版本都存在错误,想回到上一个正常版本。
#(将本地仓库的HEAD指针指向上一个版本)
$ git reset [--soft | --mixed | --hard] [HEAD]
# --soft 仅仅移动当前Head指针,不会改变工作区和暂存区的内容
# --mixed 是reset的默认参数,移动head指针,改变暂存区内容,但不会改变工作区
# --hard 当前head指针、工作区和暂存区内容全部改变
本地仓库↔远程仓库
# 本地仓库 --> 远程仓库
$ git push <远程主机名> <远程分支名>:<本地分支名>
$ git push <远程主机名> <远程分支名>
# 远程仓库 --> 本地仓库
$ git pull origin # git fetch + git merge
$ git fetch [alias] # 从远程下载新分支和数据到本地仓库
$ git merge [alias]/[branch] # 将本地仓库的新分支和数据更新到工作区
$ git clone [url] # 拷贝一份远程仓库,也就是下载一个项目。
git checkout
#(1)用来切换分支
$ git checkout #切换到上一个使用的分支
$ git checkout dev #换到dev分支
#(2)切换到指定快照(commit)
$ git checkout <commitID>
#(3)将工作区指定的文件恢复到上次commit的状态。
$ git checkout -- <filename> #暂存区覆盖工作区
$ git checkout HEAD~ -- <filename> #将某个commit的文件覆盖暂存区和工作区
$ git checkout -p #-p参数表示进入交互模式,只恢复部分变化
#(4)切换到某个tag
$ git checkout tags/1.1.4
# 或者
$ git checkout 1.1.4
# -b用于生成一个新的分支。
$ git checkout -b new
git reset
# git reset命令用于将当前分支指向另一个位置。
# 1,2,3,4,5
# HEAD:当前指针指向位置--5
# HEAD^:当前指针前一个位置--4
# HEAD~2:当前指针前两个位置--3
# 将当期分支的指针倒退三个 commit,
$ git reset --soft HEAD~3 # 倒退指针的同时,不改变工作区和缓存区
$ git reset --mixed HEAD~3 # 默认,移动head指针,改变暂存区内容,但不会改变工作区
$ git reset --hard HEAD~3 # 倒退指针的同时,改变工作区和暂存区
#如果不指定回滚的位置,那么等同于撤销修改。
$ git reset [-- <filename>] # Undo add 撤销上一次向暂存区添加的所有文件,工作区不变
$ git reset --soft # 无任何效果
$ git reset --soft HEAD^ # 撤回commit,不重置工作区和缓存区,回到HEAD前一个commit
$ git reset --hard # 回到上一次提交的状态,同时撤销暂存区和工作区的修改
$ git reset --hard HEAD~3 # 撤回commit,重置工作区和缓存区
#参数
$ git reset --hard # 等同于git reset --hard HEAD。
# -p表示键入交互模式,指定暂存区的哪些部分需要撤销。
# 从暂存区移除指定文件,但不改变工作区中的该文件
$ git reset -- <file>
$ git rm --cached <file>
四、其他
$ git log # 查看历史提交记录。
$ git blame <file> # 以列表形式查看指定文件的历史修改记录。
$ git diff # 查看工作区和暂存区的区别
$ git branch -v # 查看本地与远程分支的关联情况
$ git remote -v # 显示所有远程仓库
$ git remote show [remote] # 显示某个远程仓库的信息
$ git remote rename old new # 修改仓库名
$ git remote rm name # 删除远程仓库
$ git mv [file] [newfile] # 移动或重命名一个文件、目录或软连接。
$ git mv -f [file] [newfile] # 如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数。
$ ssh-keygen -t rsa -C "youremail@example.com" 为ssh生成rsa秘钥
idea中安装git以后,代码文件颜色含义:mipsle
红色,未加入版本控制 --未add git add 加入版本控制变绿色
绿色,已经加入控制暂未提交 --已add未commit,git commit 提交到仓库变白色,修改文件1,再commit,文件1变蓝色
白色,加入,已提交,无改动 --编辑白色文件变蓝色
蓝色,加入,已提交,有改动
灰色:版本控制已忽略文件。

浙公网安备 33010602011771号