参考链接【zrong's blog】
仓库选择
- github 全世界都在用
- 码云 git.oschina.net 国内服务
- 自建仓库 gitblit 简单方便 正在使用中
- 自建仓库 gitlab 功能强大
基本使用
git init .
git add .
git status .
git commit -m "本次提交的说明信息"
在安装oh-my-zsh后,一些简化命令
gst='git status'
gc='git commit -v'
gcm='git checkout master'
gcmsg='git commit -m'
gco='git checkout'
......
使用远程
查看远程
git remote
git remote -v origin
删除远程tag
git push origin --delete tag <tagname>
分支使用
查看分支列表:
git branch ( ps: 带*号的表示当前工作分支)```
创建分支
git branch <分支名称>```
切换分支
git checkout <分支名称>```
重命名分支
git branch -m iu IU_HOTEL```
推送分支至远端
git push origin <分支名称>```
在本地查看远程分支
git branch -a 或者
git branch -r
将远程分支拉取到本地
git pull origin/branch_name```
有的项目,网络无法连接到代码服务器。只能做压缩包的方式,做补丁。于是想当然的需要"git提取出两个版本之间的差异文件并打包",然而,gitblit和gitlab找了半天,都不存在这个功能。后来只能手写了。
git diff这个命令可以比较两个提交之间的差异,使用–name-only参数可以只显示文件名。
git diff b3c4c1 f0c72c --name-only
...
backend/app/Http/Controllers/Api/ResourceController.php
backend/app/Http/Controllers/Web/ScheduleController.php
backend/app/Utils/helper.php
backend/public/component/c_header.js
backend/public/info-dutyroster.html
backend/public/system-mainmenu.html
backend/resources/views/station/schedule.blade.php
backend/routes/api.php
backend/storage/app/mainmenu.json
然后配合xargs,使用zip命令打包即可
git diff b3c4c1 f0c72c --name-only | xargs zip update.zip
删除错误提交的commit
起因:不小心将并非本次提交的文件都提交了(仅限于commit)
方法:git reset <commit-id> --soft
说明:回退到指定的版本,只回退commit信息。文件修改内容都还在。如果要提交,可以直接commit
其它参数:
soft mixed hard,会对working tree和index和HEAD进行重置:
- mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
- soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
- hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
日常错误
git push
(gnome-ssh-askpass:3530): Gtk-WARNING **: cannot open display:
在一台服务器上,准备把代码回传,但提示此类提示。运行如下命令后解决
unset SSH_ASKPASS