取消本地文件修改
1. 未使用 git add 缓存代码时。
可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 “--” ,不写就成了检出分支了!!)。
放弃所有的文件修改可以使用 git checkout . 命令。
此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。但是此命令不会删除掉刚新建的文件;因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。
2. 已经使用了 git add 缓存了代码。
可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD . 命令。
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。
3. 已经用 git commit 提交了代码。
可以使用 git reset --hard HEAD^ 来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset --hard commitid
你可以使用 git log 命令来查看git的提交历史。git log 的输出如下,之一这里可以看到第一行就是 commitid:
commit cf0d692e982d8e372a07aaa6901c395eec73e356 (HEAD -> master) Author: toyflivver <2440659688@qq.com> Date: Thu Sep 28 14:07:14 2017 +0800 多余的空行 commit 14aa4d7ad4ac6fba59b4b8261d32e478e8cc99ff Author: toyflivver <2440659688@qq.com> Date: Thu Sep 28 14:06:44 2017 +0800 正常的代码 commit da3a95c84b6a92934ee30b6728e258bcda75f276 Author: toyflivver <2440659688@qq.com> Date: Thu Sep 28 13:58:12 2017 +0800 qbf commit 267466352079296520320991a75321485224d6c6 Author: toyflivver <2440659688@qq.com> Date: Thu Sep 28 13:40:09 2017 +0800 qbf
可以看出现在的状态在 commitid 为 cf0d692e982d8e372a07aaa6901c395eec73e356 的提交上(有 HEAD -> master 标记)。
Please enter a commit message to explain why this merge is necessary.
请输入提交消息来解释为什么这种合并是必要的
git 在pull或者合并分支的时候有时会遇到这个界面,可以不管(直接下面3,4步),如果要输入解释的话就需要:
1. 按键盘字母 i 进入insert模式 2. 修改最上面那行黄色合并信息,可以不修改 3. 按键盘左上角"Esc" 4. 输入":wq",注意是冒号+wq,按回车键即可
git commit 提交规范
修改请求源为内网
Git 打标签发布
一般项目发布都有版本号,打标签就是为了记录此时版本下的代码,每次项目发布前给当前代码打上对应标签号,以后可以根据标签号找到任一版本的代码。
相关指令:
1. 获取远程标签
git fetch --tags // 拉取远程标签 git tag // 查看标签 git fetch origin tag 2.4.10 // 用于精确的拉取指定的某个版本,适合运维同学部署指定版本
2. 新建标签
git tag 2.4.10 //简单方法1 git tag -a 2.4.10 -m 'voc-web version 2.4.10' // 带备注的(常用)
3. 推送到远程
git push origin --tags
4. 删除标签
git tag -d 2.4.10 //删除了本地的2.4.10标签 git push origin :refs/tags/2.4.10 //删除了远程的2.4.10标签
其他
npm 常用操作
rm -rf node_modules 删除 node_modules目录 rm -rf package-lock.json 删除package-lock.json npm set registry http://registry.npm.taobao.org 修改 下载仓库为淘宝镜像 npm config set disturl https://npm.taobao.org/dist npm config set chromedriver_cdnurl http://cdn.npm.taobao.org/dist/chromedriver npm set phantomjs_cdnurl http://cdn.npm.taobao.org/dist/phantomjs npm cache verify 清除 npm 缓存 npm install
删除 .DS_Store 文件
.DS_Store 是 Finder 用来存储这个文件夹的显示属性的:比如文件图标的摆放位置。虽然有办法可以禁止 .DS_Store 文件的生成,但是没有必要,只需要在 Git 中忽略 .DS_Store 文件即可。
如果你的项目中还没有自动生成的 .DS_Store 文件,那么直接将 .DS_Store 加入到 .gitignore 文件就可以了。如果你的项目中已经存在 .DS_Store 文件,那就需要先从项目中将其删除,再将它加入到 .gitignore。
git rm -r --cached .DS_Store git commit -m 'delete .DS_Store'
发现远程库的 .DS_Store 已经没了。
然后在 gitignore 中忽略即可
删除 MERGE_MSG.swp 文件
.swp 文件和 git 无关,在使用 VIM 开始编辑某文件时,都会产生该文件对应的 .swp 文件。正常的退出,VIM 会自动删除此类型文件,非正常退出情况下, VIM 不会删除 ,.swp 文件会作为文件编辑状态的内容备份。
其实多次打开多次不正常关闭,会一直产生 .sw* 文件
第一步:回到合并前状态
git merge --abort // 中止合并 rm .git/.MERGE_MSG.sw* //删除 vim 非正常关闭产生的文件
第二步:重新合并 合并提交信息页面,使用 :wq! 或者 :q! 正常退出 VIM ,就能正常合并啦。
oh-my-zsh 插件
强烈推荐这个插件, 内置了一套简洁的 git 操作快捷指令,使我们操作 git 更快;基于zsh 终端环境,所以需要 mac 系统和 linux 系统。
其内置对快捷指令如下:
g - git gst - git status gl - git pull gup - git pull --rebase gp - git push gd - git diff gdc - git diff --cached gdv - git diff -w "$@" | view gc - git commit -v gc! - git commit -v --amend gca - git commit -v -a gca! - git commit -v -a --amend gcmsg - git commit -m gco - git checkout gcm - git checkout master gr - git remote grv - git remote -v grmv - git remote rename grrm - git remote remove gsetr - git remote set-url grup - git remote update grbi - git rebase -i grbc - git rebase --continue grba - git rebase --abort gb - git branch gba - git branch -a gcount - git shortlog -sn gcl - git config --list gcp - git cherry-pick glg - git log --stat --max-count=10 glgg - git log --graph --max-count=10 glgga - git log --graph --decorate --all glo - git log --oneline --decorate --color glog - git log --oneline --decorate --color --graph gss - git status -s ga - git add gm - git merge grh - git reset HEAD grhh - git reset HEAD --hard gclean - git reset --hard && git clean -dfx gwc - git whatchanged -p --abbrev-commit --pretty=medium gsts - git stash show --text gsta - git stash gstp - git stash pop gstd - git stash drop ggpull - git pull origin $(current_branch) ggpur - git pull --rebase origin $(current_branch) ggpush - git push origin $(current_branch) ggpnp - git pull origin $(current_branch) && git push origin $(current_branch) glp - _git_log_prettily

