git常用场景

278 阅读2分钟

一、只想合并某个文件,不想合并整个分支

两个分支:master,dev。 我们想将dev的config.js文件合并到master,先切换到master。 复制config.js的相对路径,src\components\Video\config.js,将 \ 改为 / ,再输入以下命令就行了。

git checkout dev src/components/Video/config.js

二、在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 commit --amend  // 这之后会进入vim编辑器,直接shift+:,输入wq保存退出就行

四、git push之后代码出问题了,想回退到之前的版本

微信图片_20210928152637.png

git log 或者 git reflog      // 查看版本号
git reset --hard 6324d95     // 版本号也可以写成 HEAD~4,回退到6324d95的版本,本地仓库之前提交的代码都会删除
git push origin dev --force  // 强制提交,因为本地版本低于远程仓库,git push是不行的。如果想在master分支强制提交,命令可能会因为没有权限而被中止,需要在gitlab修改该分支的提交权限。

五、提交新建的项目到远程

在服务器建立新仓库A,会生成一条该库的地址

git remote add origin xxx // xxx是仓库A地址 将本地仓库和远程仓库A关联
git add . 
git commit -m xx
git push -u origin master // 将本地master推送到远程master分支,将两个分支关联起来

六、修改文件名大小

git配置默认忽略大小写,如果配置为不忽略大小写:git config core.ignorecase false,在拉取合并分支时容易引起冲突。建议使用

// 将文件从旧文件名修改为新文件名,可以加`-f`强制更新,该命令相当于`git remove oldfile,git add newfile`
// 复制文件相对路径,把 \ 改为 /
git mv path/oldfilename path/newfilename 

七、只想合并dev分支的某个提交到master

// 切换到master
$ git log dev
$ git cherry-pick <-n> <commitHash> // -n 只更新工作区和暂存区,不产生新的提交

八、新建的项目关联远程仓库

git remote add origin 远程仓库 git push -u origin master