工作中你应该知道的关于git的一些操作

125 阅读2分钟

我正在参加「掘金·启航计划」

1,正在开发新功能,突然线上来了个紧急 bug。自己刚改的东西很多还没完善。这个时候想切个临时的新分支安排紧急的处理

可以先将文件 git stash 存在本地临时文件中 然后切换新分支 如果想回到自己修改的分支后想看到之前的修改文件 git stash show 展示出来 git stash pop 从栈中出来

git stash # 隐藏,暂存到临时栈
git checkout -b  tempBranch # 创建并切换到临时分支

git checkout myBranch # 临时分支开发完成切换到之前分支
git stash show # 展示现在分支的临时栈
git stash pop # 将修改记录从临时栈中pop出来

2,当 git add 之后,突然才发现add 有些不对。想回 add 之前的状态

将文件撤销回到最近一次修改的状态:

单个文件

命令git checkout -- file中的--很重要,没有--,就变成了“切换到另一个分支”的命令,在后面分支管理中会再次遇到git checkout命令 文件file 可以通过 git status 查看 modified知道完整的file

git checkout -- file  #回退单个文件 eg: git checkout -- src/App.css
git restore file # 回退单个文件 eg: git restore src/App.css

多个文件

git log --oneline查看版本号Head^

git reset HEAD^  # 回退多个文件 eg: git reset 589c649

3,git commit 操作完之后,想回退回去

git reset --soft  HEAD^  # 回退后保留在已经add这一步,之前修改的文件不变 eg: git reset  --soft 589c649

⚠️注意和git reset --hard HEAD^区别开,hard回到上一个版本,修改过的记录会被删除

git reset --mixed HEAD^ #回退到没有add的时候,和git reset HEAD^效果类似 eg: git reset  --mixed 589c649

4,git commit 操作完之后,才发现写错了一些描述,想要重新来写

在上一次commit之后继续

git commit --amend -m "重新书写上一次add new"

git log --oneline查看你会发现两次的id是不一样的,不过没关系,描述已经修改了。

image.png

5,在多人开发中,遇到了不同的开发工具或者开发的版本不同,但是又需要合并到一起的时候,单独提交某些文件git add file

  • 如果想要提交,就不要 add . /add all 了
git add src/setupProxy.js

6,如果是临时去帮忙,工作中当过一段时间后,发现推送代码推不上去了,可以看看是不是没有权限了

git remote -v
  • fetch代表可以拉取仓库,push代表可以推送。
  • 如果没有权限只能拉取的情况下不会显示push

image.png