git 常用场景及常用命令
一、只想合并某个文件,不想合并整个分支怎么办?
两个分支:master,dev。
我们想将dev的config.js文件合并到master,先切换到master。
复制config.js的相对路径,src\components\Video\config.js,将 \ 改为 / ,再输入以下命令就行了。
//在master分支
git checkout dev src/components/Video/config.js
//然后进行 git add .等一系列操作?
二、在master分支commit之后,发现自己应该在dev提交,怎么办?
git reset --soft HEAD^ // 撤回commit,不撤回git add。HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1
git stash // 缓存暂存区的更改,并清空暂存区
git checkout dev
git stash pop // 将缓存应用到该分支的工作区间,并删除该缓存
......
三、commit之后发现还有一个文件要改,但又不想commit两次,怎么办?(还没有git push操作之前)
git commit --amend //这之后会进入vim编辑器,直接shift+:,输入wq保存退出就行。
四、git push之后代码出问题了,想回退到之前的版本,怎么办?
git log 或者 git reflog // 查看版本号
git reset --hard 6324d95 // 版本号也可以写成 HEAD~4,回退到暗黑样式优化的版本,本地仓库之前提交的代码都会删除
git push origin dev --force // 强制提交,因为本地版本低于远程仓库,git push是不行的。如果想在master分支强制提交,命令可能会因为没有权限而被中止,需要在gitlab修改该分支的提交权限。
//或者 git push -f
git log 与 git reflog 区别
git log 可以显示当前分支所有提交过的版本信息(不包括已经被删除的commit记录和rest操作)。注意:只能是当前分支操作的信息。
git reflog 可以显示所有分支的所有操作记录信息(包括已被删除的commit记录和rest操作)
总之,git log 与 git reflog区别:
(1)、能不能查询到被删除的commit记录和rest操作,log不能;reflog能。
(2)、log基于当前分支;reflog所有分支。
git rest --hard / --soft 区别
//git rest --hard 会清空工作目录和暂存区的改动
//git rest --soft 会保留工作目录的内容,所带来新的文件差别放在暂存区
git rest --soft 使用场景
在master分支commit之后,发现应该在dev上提交
git rest --soft HEAD^ // 撤回commit,不撤回git add .
// HEAD^表示上一个版本,即上一次的commit
git stash // 缓存暂存区的更改,并清空暂存区
git checkout dev
git stash pop // 将缓存应用到该分支的工作区,并删除缓存
常用命令
新项目到手一系列操作
在自己盘里新建文件夹,右击第二个,打开控制面板Git Bash Here
$ git clone 地址(git库位置)
//打开文件夹(如 cd ***)
$ git checkout dev
$ npm install
$ git checkout -b feature-ww //feature-ww自己创建的分支名,新建分支并切换到该分支上,在该分支上写代码
$ git pull origin dev //把gitlab上dev分支上的内容拉取到本地,拉取dev上最新代码
//拉取下来的代码如npm i 不成功,可以以管理员身份运行
$ git push -u origin feature-ww //使自己建立的分支与远程分支关联!!!
// 右击 Git Bash here
git checkout dev // 切换到分支
git pull origin dev // 拉取最新代码
//修改
//提交
git add .
git commit -m "本地修改命名"
git pull
git push
//相当于vscode编辑器中的将"暂存所有更改" -变成+ 更改 ✓提交"命名"回车
合并分支
// feature-ww分支合并到dev分支
git add .
git commit -m "命名"
git checkout dev
git pull origin dev
git merge feature-wu // feature-ww合并的那个分支
git push origin dev
将分支上的内容不提交,暂存到本地
git add .
git stash //暂存内容
git stash pop // 暂存内容释放
查看当前状态,删除分支
git branch // 查看本地分支有哪些(已创建的本地分支)
git branch -r // 查看远程分支
git branch -d [name] // 删除分支,-d只能删除除了已经参与合并的分支,对于未有合并的分支是无法删除的,强制删除一个分支-D
git branch -a // 所有分支查看
一个新项目在git上创建New Project ->create Project,然后将代码片段推到git上
git remote add origin ***(仓库地址) // 本地项目,添加到远程git仓库地址
git add .
git commit -m "***"
git push -u origin master // 把本地仓库提交
git回退线上代码
git log // 查看要回退的版本号
git rest --hard 查看到回退的版本号 // 回退到之前的版本
git push -f // 远程回退