Git,我们使用的一样吗?

1,676 阅读3分钟

我正在参与掘金创作者训练营第5期,点击了解活动详情,一起学习吧!

概要: 本文从前端角度,介绍Git命令使用case, 欢迎更多分享学习~

项目开发背景:

  • 所在前端项目组,属于业务组;
  • 常基于core team开发的架构、公共组件开发。
  • 每个业务组,需要fork code,然后提交merge master请求

项目之初

github fork 一份master

clone master

通过git clone github.com/master/webp… ,clone 下来 master 到本地

# check remote分支情况
> git remote -v 

git 添加配置

git config user.email xx
git config user.name xx

添加自己远程分支

> git add remote username https://github.com/<user>/webpack-demo.git
# check remote 分支情况
> git remote -v 

添加同事远程分支

> git add remote user2 https://github.com/<user2>/xxxx.git
# check remote 分支情况
> git remote -v 

# 拉取同事分支,并本地切换 
> git fetch user2 branch2:branch2 && git checkout branch2 

# 还可以这样
> git checkout -b branch2 user2/branch2

项目coding

git pull

拉取远程分支更新

> git pull 

提交历史太多,一次拉耗费时间太久

> git pull --depth=n(1,2,3...)

--depth虽然pull快,但是带来提交问题, 大概如下reject 问题

[remote rejected] master -> master (shallow update not allowed)

# 取消shallow update ,
git fetch --unshallow origin

# 重新git pull 即可
git pull 

git checkout

切换分支

> git checkout 

回到上一个使用的分支

> git checkout - 

git add

添加所在目录下所有修改的文件,准备提交到本地暂存区

> git add .

添加所在目录下某些文件,准备提交到本地暂存区

> git add ./xxx/xx.js 

git commit

把修改的文件提交到本地暂存区

> git commit -m "xxx"

git merge

进行master code合并

> git merge --no-ff master 

git rebase

进行变基操作

> git rebase master 

git stash

切换分支,但是又不想提交commit,暂存一下

 > git stash 
 
 # 本地暂存,添加备注
 > git stash save "xxx"

git stash pop

分支切换完毕,切换回来,把修改的文件重新run

# 查看本地暂存的所有
> git stash list 
stash@{0}: xxx
stash@{1}: xxx 
...

# 默认出栈中的第一个(下标0)
> git stash pop 

# 弹出其他下标 
> git stash pop {n} 

code push

git status

查看当前哪些文件没有管理

> git status 

git dif

查看文件哪些修改

> git diff xxx.js 

git log

查看commit历史记录

> git log 

简短的方式查看日志

> git log --pretty=short

git reset

提交记录太多,整合一下

# 拉去最新master code,并切换新分支
> git checkout master && git pull && git checkout -b fix-user-new-branch

# pull自己提交的code到新分支上
> git pull <user> fix-user-old-branch

# 把已提交的commit 记录整合到第一次提交的commitid
> git reset <commitid>

# 把历史commit都整合到一个commit> git add . && git commit -m "" && git push xx:xx

git reset --hard

本地有修改的文件,不想保留了,但是又不想一个个操作,批量重置

> git reset <commitId> --hard 

git push

提交code 到远程分支, 并新建分支branch_one

> git push <user> branch_one:branch_one

code commit记录太多,本地整合后,重新提交

# -f 强制提交
> git push <user> branch_one:branch_one -f 

git reflog

查看操作记录

> git reflog 

code review

github 支持 add comments, 添加完毕,可以request change and resolve

其余技巧

不在使用ssh-key ,改用access-token

git actions 支持构建静态站点