本地初始化:
要想使用Git对某个项目管理,必须Git init 进行初始化,作用在当前目录下生成一个隐藏的文件。
git init # 创建新仓库
git config --global user.email "[email protected]" # 设置全局email
git config --global user.name "Anderson" # 设置全局用户名
git config --global user.email "" # 清空配置的email
git config --global user.name "" # 清空配置的全局名
.git
文件夹保存本地仓库git相关的所有信息,如果要恢复成一个普通文件夹:
rm -rf .git # 删除.git这个隐藏文件即可
从远程 Git 仓库中克隆一个本地仓库:
git clone # 后面加上Git仓库的地址
工作流:
本地仓库由3个区域组成,工作区
持有你的源码等实际文件,暂存区
像个工作区和版本库之间的buffer,临时存储你的改动,本地版本库
记录着你每一次的提交,并维护若干分支。
查看文件工作状态
所有文件都处在两个状态之一:untracked 和 tracked。
untracked 的文件未被纳入git的版本控制,
tracked状态又可被细分为以下三个状态:
① unmodified:与版本库中的最新文件一致
② modified:刚刚修改的
③ staged:修改过,并已加入暂存区,等待提交的
工作区:我们写代码的地方,工作的目录就叫做工作区。
暂存区:
①暂时存储的区域,在git中,代码无法直接从工作区提交到仓库区。
②要想把代码从工作区提交到仓库区,必须先提交到暂存区,然后在提交到仓库区。
③暂存区存在的目的是,为了避免误操作。
仓库区:
①将保存在暂存区的内容永久转存到git仓库中,并生成版本号。
②生成的版本号,我们就可以根据这个版本号回退到,历史任意的一个版本。
git status # 查看文件状态
# 红色的表示工作区的文件需要提交
# 绿色的表示暂存区中的文件需要提交
git add index.vue # 将index.vue单个文件添加到暂存区
git add css # 将css目录下的所有文件添加到暂存区
git add all
gti add . # 这两个都表示,将所有的文件都添加到暂存区
只要修改了工作区的文件,就要把修改的文件,给添加到暂存区
git commit -m "提交的说明文字" # 将文件从暂存区提交到仓库,这将会生成版本号存档
注意点:如果没有写说明文字,是提交不成功的。
拉取远程代码,对本地代码进行更新
git pull # 拉取代码
推送本地代码到远程仓库
git push # 推送到远程
// 把刚创建的分支推送到远程
git push --set-upstream origin 刚创建的分支名
列出所有本地分支:当前所在的分支前面会有一个 * 号
git branch # 查看所有的分支
切换分支
git checkout 分支名 # 切换分支
创建远程分支
git push origin 分支名 # 把刚创建的本地分支,创建一个远程分支
创建分支
git checkout -b 分支名 # 创建本地分支并切换分支
// 这条命令把创建本地分支和切换到该分支的功能结合起来了
git branch 分支名 # 基于当前分支创建一个本地分支
// 这条命令是创建一个新分支出来,剩下的操作还要切换到新分支、再把新分支与远程分支关联。
把本地分支与远程分支进行关联
git branch –set-upstream 本地分支名 origin/远程分支名
或者
git branch –set-upstream-to=origin/远程分支名
// 示例:git branch –set-upstream-to=origin/test # 把本地test分支与远程进行关联
删除分支
git branch -d 分支名称 # 删除分支
// 不能在当前分支删除当前分支,需要切换到其他分支才能删除。
// master 分支一般是主分支,不建议删除。
本地重命名分支
git branch -m 原始名称 新名称 # 本地分支重命名
//示例: 修改 test 为 newTest
// git branch -m test newTest
远程分支重名名
git branch -m 旧分支名称 新分支名称 # 先重名名本地分支
git push --delete origin 旧分支名称 # 删除远程分支
git push origin 新分支名称 # 把本地分支推到远程,这时候系统会自动关联分支
合并分支
git merge 分支名 # 合并分支
// 在当前分支合并其他分支
如果合并冲突时,需要手动解决冲突或者回退代码;解决完冲突之后,需要再次git add 一下。
查看仓库的提交历史记录
git log # 查看历史记录,这个看不了已回退的版本记录
git reflog # 查看所有的版本信息,包括已回退的版本
回退版本,将代码回退到历史的某一个版本,需要历史的版本号
git reset --hard 版本号 # 将代码回退到历史的某一个版本,需要版本号
回退暂存区的代码, git add 后的
git reset HEAD # 后面什么都不加,就是回退全部的
git reset HEAD 文件名 # 回退单个文件名
回退仓库区的代码,git commit 后的
git reset --soft HEAD^ # 回退commit的提交,仅仅是撤回commit操作,但写的代码仍然保留
// HEAD^意思是上一个版本,
// 也可以写成HEAD~1,如果你进行了2次commit,想都撤回,可以使用HEAD~2。
git reset --mixed HEAD^
// 不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
git reset --soft HEAD^
// 不删除工作空间改动代码,撤销commit,不撤销git add .
git reset --hard HEAD^
// 删除工作空间改动代码,撤销commit,撤销git add .
修改commit 注释
git commit -m 新注释 --amend
// git commit 加上 --amend 参数,并用 -m 指明新的注释,执行后便会覆盖掉老的注释
Git review回退
git checkout 分支名 # 切换到需要回退的分支
git log # 查看提交记录
git reset --hard # 代码回退
git reset --hard id # id为commit提交的记录
git review # 重新提交修改
Git rebase 回退
git reflog # 先查看本地提交操作编号
// 找到提交前的项目编号,例如4c173eb HEAD@{3}: commit: scan ,
// 执行:git reset --hard 4c173eb
Git cherry-pick回退
git cherry-pick --abort