【LX实习】Git 使用

329 阅读4分钟

1 简介

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:本地仓库
  • Remote:远程仓库

2 Git 常用命令

将远端仓库克隆到本地,如:远端仓库http地址是 github.com/krisli007/v…

git clone https://github.com/krisli007/vue2demo.git

查看在工作区和暂存区的新增文件和修改文件

git status

添加当前目录的所有文件到暂存区

git add .

添加指定目录所有文件到暂存区

git add [dir]

添加指定文件到暂存区

git add [file1] [file2] ... 

提交暂存区文件到本地仓库且写说明

git commit -m "xxx"

feat: 添加新特性
fix: 修复bug
refactor: 代码重构,没有加新功能或者修复bug
perf: 优化相关,比如提升性能、体验

style: 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑
docs: 仅仅修改了文档
test: 增加测试用例
chore: 改变构建流程、或者增加依赖库、工具等
revert: 回滚到上一个版本

git add 和 git commit 的合并使用

git commit -a -m "xxx" === git add . + git commit -m "xxx"

从远端仓库更新最新文件到工作区

git pull

把本地仓库新文件推送到远端仓库

git push

3 分支管理

列出所有本地分支

git branch

列出所有远程分支

git branch -r

列出所有本地分支和远程分支

git branch -a

创建分支:复制当前分支内容到新的分支上,更改新分支的内容不影响之前的分支

git branch <new_branch>

切换到指定已有分支,并更新工作区

git checkout <branch_name>

创建并切换新的分支

git checkout -b <new_branch>

将分支到远端,但不建立跟踪关系

git push origin <new_branch>

建立追踪关系,在现有分支与指定的远程分支之间

git push --set-upstream origin <new_branch>

合并指定分支到当前分支

git merge <branch_name>

图形化显示显示分支提交情况

git log --decorate --oneline --graph --all

* 7c5e107 (HEAD -> master) change the readme file again
| * d4f3e9c (feature) change the readme file
|/  
* 8709e13 README
* 710bdab game2

--all 表示显示所有分支,去掉可显示当前分支
目前是在master分支,/前是所有分支不同的文件,/后是共同的文件

删除分支

git branch -d <branch_name> //删除本地分支
git branch -D <branch_name> //强制删除分支
git push origin --delete <branch_name> //删除远程分支

4 工作常用

一般在工作上,都是已有仓库,自己将仓库拉取下来,默认拉取的是 master 分支,此时你需要拉取远端仓库已有的 product 分支

已有分支

需要本地分支和远程分支建立映射关系

git checkout -b <branch_name> origin/<branch_name> // 新建且切换本地分支且和远端同名分支关联

特性分支

二部曲

git checkout -b <new_branch> // 新建且切换到此分支

git push --set-upstream origin <new_branch> // 将本地分支和远端分支关联

5 其他命令

Git 的回滚

git reset

移动HEAD的指向(相当于撤销commit操作)

git reset --soft HEAD~

将快照回滚到暂存区域(将上一版本的文件覆盖掉暂存区域)

git reset --mixed HEAD~** (默认操作)  

将暂存区域还原到工作目录(将上一版本的文件覆盖掉工作目录,甚至会删除最新修改文件)

git reset --hard HEAD~

根据版本号回滚,如果要更新到工作目录记得要加上 --hard

git reset 版本号(前几位数就可以) // 

比较

比较暂存区域和工作目录

git diff

"---" 旧文件 "+++"新文件

比较两个历史快照

git diff ID1 ID2

比较当前Git仓库中和工作目录的快照

git diff HEAD

比较当前Git仓库中和暂存区域的快照

git diff --cached

删除文件

删除的只是工作目录和暂存区域的文件,也就是取消跟踪,在下次提交时不纳入版本管理,不能删除仓库的文件

git rm 文件名   

当工作目录和暂存区域的同一个文件有不同的内容时,该命令是强制删除两个文件

git rm -f 文件名

只删除暂存区的文件

git rm --cached 文件名  

重命名文件

git mv 旧文件名 新文件名