最近在对旧的笔记进行整理,综合整理了这篇git使用,为了方便以后查找。

基本使用

  • 创建新仓库
    mkdir test      ## 创建新文件夹
    cd test         ## 进入到此目录
    git init        ## 相当于初始化
    
  • 克隆新仓库
    git clone /path/to/repository   ## 克隆本地仓库
    git clone username@host:/path/to/repository     ## 克隆远端仓库
    
  • 添加与提交
    git add <filename>/*    ## 将计划改动添加到缓存区
    git commit -m "代码提交信息"      ## 然后将改动提交到HEAD
    
  • 推动改动
    git push origin master      ## 将HEAD中的改动推送到远端仓库,可以把 master 换成你想要推送的任何分支。
    git remote add origin <server>      ## 添加远程主机
    git remote rm <主机名>     ## 删除远程主机
    git remote -v       ## 查看远程主机的网址
    
  • 拉取更新
    git pull        ## 取回远程主机某个分支的更新,再与本地的指定分支合并
    等同于:
    git fetch origin        ## 将远程主机的更新取回本地,但不合并
    git merge origin/master ## 在本地分支上合并远程分支
    
  • 分支
    git checkout -b feature_x       ## 创建分支
    git checkout master             ## 切换回主分支
    git branch -d feature_x         ## 删除分支
    git push origin <branch>        ## 推送分支
    

提交项目

将本地项目提交到github 首先在github上创建新项目,例如web_ceshi,然后进入本地项目目录:

git init 
git remote add origin git@github.com:pangerl/web_ceshi.git
git add *
git commit -m 'XXX'
git push origin master

删除敏感信息

创建gitignore文件

git pull origin master
vim .gitignore
echo '.idea' >> .gitignore
git rm -r --cached .idea  #删除已经上传到github的文件夹
git commit -m '删除隐藏目录'
git push origin master

定制gitlog显示

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"

效果如下

[root@x ]# git lg
*   972c90a - (HEAD, origin/master, origin/HEAD, master, develop) Merge branch 'hotfix/v1.0.16.5' (12 mi
|\
| * 2c554d2 - (tag: v1.0.16.5, origin/hotfix/v1.0.16.5) 添加manager 登录后台按钮 (48 minutes ago) <LuciN
| * ebc506a - 权限管控调整 (17 hours ago) <LuciNyan>
| * 59251eb - 优化提交详情查询逻辑 (17 hours ago) <LuciNyan>
| * 5ca9417 - 调整请求重发时间 (18 hours ago) <LuciNyan>
| * 1366d58 - 优化 登录代码 & 解决initchart bug (18 hours ago) <LuciNyan>
| * 5926eb8 - 添加标题栏的 提交记录 (19 hours ago) <LuciNyan>
| * 81e52a7 - editor配置调整 (19 hours ago) <LuciNyan>
| * 1b7a4e2 - 修改commemt 区 (20 hours ago) <LuciNyan>
| * eeab502 - 个人中心提交记录添加搜索 (23 hours ago) <lianglei>
|/
*   29b4ff9 - Merge branch 'hotfix/v1.0.16.4' 美化后台页面 (2 days ago) <fabu>

经验笔记

撤销commit

  • 找到你想撤销的commit_id git log
  • 完成Commit命令的撤销,但是不对代码修改进行撤销,可以直接通过git commit 重新提交对本地代码的修改 git reset commit_id
  • 完成撤销,同时将代码恢复到前一commit_id 对应的版本。 git reset --hard commit_id
  • 推荐:直接回到上一个对应的版本 git reset --hard HEAD^

tag相关操作

  • 查看某tag详细信息 git show v1.2.3.2
  • 给指定的commit打tag git tag -a v1.11 7dc3060f2aeb93deaa2d8cf15a457ae913c48728 -m '给commit增加的标签'
  • 更新tag名称
    git tag -d fixNameChange
    git tag -a v1.2.3.2 -m '修改公众号'
    

在当前代码新建分支-b

git checkout bugfix/solutionArticleFeeling
git pull 
git checkout -b release/v1.0.7.4

强制覆盖本地代码

git fetch --all
git reset --hard origin/master 
git pull

将dev上的代码合并到master

git checkout master
git merge develop

解决中文乱码问题

git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8

删除远端分支

git branch -r|egrep -v 'master|develop'|awk -F'origin/' '{print $2}'|xargs git push origin --delete

如果报错,error: unable to delete 'origin/myBranch-1234': remote ref does not exist

则需要同步获取一下远端的分支:git fetch -p origin

或者直接使用 git fetch -p origin && git branch -r|egrep -v 'master|develop'|awk -F'origin/' '{print $2}'|xargs git push origin --delete

参考链接

http://www.bootcss.com/p/git-guide/

http://www.ruanyifeng.com/blog/2014/06/git_remote.html