git命令总结, git相关知识点总结

944 阅读4分钟

1. 常用git命令

git log // 查看历史版本
git log --pretty=oneline // 让历史信息精简显示 (👍)
git reset --hard f6a7c803a6931a9eca011d4e097389e0845cbe49 // 强制回退到某个历史版本。
git reset --hard HEAD // 放弃本地所有文件的修改 (👍)
git branch -d <branchname> // 删除本地的branchname分支
git checkout <branchname> // 切换分支到branchname
git checkout .  // 放弃所有文件修改
git stash // 储存(避免脏提交)。把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash pop // 改完之后返回继续之前工作。 恢复工作现场(恢复隐藏的文件,同时删除stash列表中对应的内容)
git co(checkout) -b develop // 创建开发分支develop
git st(status) //  查看当前分支工作区、暂存区的工作状态
git ci(commit) // 提交本次修改
git branch -r // 查看所有远程的分支
git branch <branchname> // 创建branchname分支
git commit ./xx // 等同于git add ./xx + git commit(建议使用👍)
git merge --abort // 终止本次merge,并回到merge前的状态(👍)
git merge 文件名  // 放弃某个文件的修改(👍) 举例:  git checkout src/views/jtys/jtys-home.vue
git reflog // 查看你的历史变更记录(👍)
git config --global user.email "you@example.com" // 提交你的git邮箱
git config --global user.name "Your Name" // 提交你的git用户名
git reset HEAD  // git add 后如何撤销
git branch -m new-name // 修改当前分支名用 git branch -m 新分支名,也可以通过 git branch -m 原分支名 新分支名
git remote add origin https://github.com/user/repo.git // 本地关联远程仓库
git config --global http.proxy http://127.0.0.1:1080 // 设置代理
git config --global --unset http.proxy // 取消代理。 如果是多个用 --unset-all
git pull --rebase origin master   git pull --ff-only   // git pull 拉取的两种方式

2. 我的项目使用的git命令

1. 正常提交。 假如现在在dev本地分支上, 向test远程分支提交

git branch // 先查看在哪个分支。
git checkout dev // 如果不在dev分支上, 切换到dev
git status // 查看修改的文件的状态
git add . // 将dev所作的代码修改提交到缓存仓库
git commit -m '提交'  // 提交日志
git checkout test // 切换到线上test分支
git pull origin test // 从线上test分支拉取最新代码
git stash // 如果有冲突, 就要解决冲突
git stash popup // 将冲突拉取到本地。 在ide中输入 <<<<<
去查找所有冲突, 并解决冲突
# git add . // 如果有冲突并解决后需要再次提交修改到缓存仓库
# git commit -m '修改后提交' // 提交日志
git merge dev // 将dev本地分支上的代码, 合并到test分支上
git push origin test // 将合并后的代码, 提交到test远程分支上
npm run build // 最后看情况,是否打包发布到线上
git remote set-url origin git@github.com:user/repo.git // 关联远程仓库

3. git 一些常见的错误

3.1 Swap file .MERGE_MSG.swp already exists

出现场景: 合并后,执行 git pull 或者 push 或者 merge 命令操作的时候

造成这种情况的原因有以下两种可能

(1)另外一个应用正在打开此文件。这种情况,要小心修改,防止出现同一个文件,两种修改版本的出现。完了之后可以选择退出或者更加小心的继续 。

(2)编辑该文件的时候,该文件不正常关闭了。这种情况,如果需要,可以选择 :recover 或者 vim -r project-path/.git/MERGE_MSG 命令来恢复文件关闭前的修改。

上述两种情况确认完毕后,删除 MERGE_MSG.swp 文件,就可以避免该错误提示。

问题解决:
第一步:回到合并前状态

git merge -abort  // 中止合并
rm .git/.MERGE_MSG.sw* //删除 vim 非正常关闭产生的文件

第二步:重新合并 合并提交信息页面,使用 :wq! 或者 :q! 正常退出 VIM ,就能正常合并啦

3.2 git提交报错

fatal: unable to access 'https://github.com/xxx': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

代理的问题, 我的解决代码git config --global --add remote.origin.proxy "127.0.0.1:7890"

stackoverflow.com/questions/4…

3.3 fatal: unable to access 'github.com/liulihao88/…': Failed to connect to 127.0.0.1 port 7890: Connection refused

代理的问题。 把代理删除即可。 以下是我解决这个问题所进行的操作

git config --global -l // 查看当前git的设置。 可以看到有没有代理
git config --global --unset-all remote.origin.proxy // 取消remote.origin.proxy所有代理
git config --global --unset http.proxy  // 取消一个http.proxy的代理

3.4 git修改了仓库地址后如何提交

// 1. 删除远程地址
git remote rm origin
// 2. 添加远程地址
git remote add origin URL
// 3. 正常提交
git push -u origin master

3.5 git checkout . 如何恢复

如果在git checkout . 之前操作了 git stash。 是可以恢复的

git stash
git checkout .
git stash list
git stash apply stash@{0}

3.6 git本地创建分支并推送到远程

git checkout -b test  // 本地创建分支并切换到这个分支
git push -u origin test // 将dev分支推送到远程

4. git移除远程仓库某个文件夹

比如移除dist文件夹

git rm -r -n --cached "dist/" //-n:加上这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。
git rm -r --cached  "dist/"      //最终执行命令. 
git commit -m" remove dist folder all file out of control"    //提交
git push origin master   //提交到远程服务器

可以修改 .gitignore 文件 添加 ./dist/ 并提交 .gitignore 文件到远程服务器,这样就可以不对dist目录进行版本管理了