学习使用 git 管理项目版本,使用 github 做远程仓库保管代码已经很久了,但一直没有成建制地记录 git 相关知识点,所谓不动笔墨不读书,特地开一篇新博文记录些基础知识,以及实际使用过程中遇到的问题。
基础
首先还是推荐大神的文章《git-简明指南》,这几乎是我见过的直观的简洁的git教程。
常用指令
如果你是第一次学习git,那我建议你创建一个github项目仓库边学边练。
- git 全局配置
1 | git config -global user.name "feke9432" |
创建文件夹
1
mkdir test
切换到 test
1
cd test
新建readme.md
1
touch readme.md
新建仓库
1
2
3
4git init
// 表示创建一个裸库,主要应用场景是作为公共仓库
git init --bare查看仓库信息
1
git status
检出仓库(下载别人的仓库里的代码)
1
git clone [地址 || 别人的远程地址]
添加远程仓库
1
git remote add orgin 远程地址
显示所有远程分支
1 | git show-ref <--[tag|heads|...]> |
- 删除远程分支
1 | git push origin :<分支名> |
添加改动到缓存区
1
git add <filename>
将文件移除缓存区
1
git rm --cached filename
删除 文件
1
rm test.txt
我一般直接添加全部改动
1
git add . || git add *
提交到head 区(本地仓库),并提交改动注释
1
git commit -m"改动注释信息"
推送改动到远端服务器,比如github
1
git push origin master
master 是主分支,如果你想推送其他分支
1
git push origin 其他分支名
如果你想要切换到其他分支使用
1
git checkout 分支名
如果还分有分支,要新建
1
git branch 分支名
你当然也可以一步解决创建到切换
1
git checkout -b 分支名
如果你要删除一个分支
1
2
3git branch -d 分支名
// 强制删除
git branch -D 分支名如果你想删除一个远程分支
1
git push origin --delete total-router
如果你想要查看现有分支,不输入具体分支名就好
1
git branch
如果你想将自己的工作内容提交到主分支上的话
1
git merge 分支名
从远端获取最新改动
1
git pull
如果提示你合并或者获取产生冲突,你可以查看冲突
1
git diff
如果你想为项目标记版本标签
1
git tag 版本号 提交id的前十位
如果你不知道提交id,打印本地记录查找id
1
git log
如果你只需要最简信息,用于版本回退
1
git reflog
你当然也可以只看某一个人的提交记录
1
git log --author=用户名
压缩输出,每条一行
1
git log --pretty=online
如果你想回退版本
1
git reset --head 版本id
如果你想回退远程版本
1
2
3git reflog //=> 获取 id
git reset --head 版本id // => 先回退本地版本
git push -f // => 强制推送本地版本到远程,也就是说远程没有回退,实际是强制推送了旧版本切换远程分支协议 (ssh => http)
1
2
3git remote -v // 查看当前协议内容
git remote set-url origin 新连接
git remote -v // 再次查看切换是否成功http 协议时免密操作
1
2
3git config --global credential.helper store // 永久记住密码
git config –global credential.helper cache // 默认记住15分钟
git config credential.helper ‘cache –timeout=3600’ // 定义配置记住1小时
git => everything up-to-date 解决
隔了三天灭有上传博客文件,突然不能提交了。。。求助谷歌后,可能是git认为我的改动已经上传过了,但实际我没有。。。
解决办法简单来说就是:新建分支,上传到新分支,然后回主分支合并刚刚新建的分支到主分支就可以上传了,最后记得删除无用侧分枝。
简单代码步骤
git check -b newBranch => git add . => git commit -m”some thing” => git checkout master => git merge newBranch => git branch -d newBranch
git 忽略大小写问题
开发代码中很多时候是要求区分大小写的,所以为了不必要的困扰,执行以下语句:
1 | git config core.ignorecase false |
git 提交 themes/next 失败
报错信息:1
2
3
4
5
6Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: themes/next (modified content)
解决办法:
1 | // 删除缓存后重新添加 |