Git 是一个开源的分布式版本控制系统,用以敏捷、高效地处理项目版本管理。
git配置
安装git:sudo apt-get install git
配置用户信息:git config --global user.name “name”
配置邮箱信息:git config --global user.email “name@qq.com”
cmd着色开关:git config --global color.ui true
git config --global alias.co checkout
git 配置保存在.git/config文件中
创建仓库:git init/git clone
添加文件:git add
提交修改:git commit -m “message”
查看状态:git status
查看修改内容:git diff
查看提交log:git log [–graph][–pretty=oneline] [–abbrev-commit]
查看命令历史:git reflog
别名
git config --global alias.st status
git config --global alias.br branch
git config --global alias.co commit
git config --global alias.lg log
cat ~/.gitconfig
psf = !sh -c ‘git push origin HEAD:refs/for/$1’ -
git config --global alias.ls “log --no-merges --color --graph --date=format:‘%Y-%m-%d %H:%M:%S’ --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset’ --abbrev-commit”
忽略特殊文件:.gitignore
github提供的配置文件:https://github.com/github/gitignore
原则: 忽略系统自动生成的文件,比如缩略图等; 忽略编译系统生成的中间文件,可执行文件等; 忽略自己带有敏感信息的配置文件。
文件操作:工作区和暂存区
工作区是修改和存放当前代码的地方,通过add将工作区的修改添加到stage(即暂存区)。
暂存区的内容通过commit提交至当前分支上。
管理修改:每次修改如果不用git add到暂存区,那就不会加入到commit中。
撤销修改:
撤销工作区修改:git checkout – file
将暂存区的修改撤销到工作区:git reset HEAD file
删除文件:
rm test.txt /git rm test.txt /git commit -m “delete *”
若误删:git checkout – file
添加远程库github
- 注册github帐号
- 创建ssh Key
ssh-keygen -t rsa -C “xxx@qq.com”
cat id_rsa.pub - 将pub key添加至github
添加完后输入ssh -T git@github.com验证是否生效。 - 关联远程库
git remote add origin git@github.com:persue/gitcode.git
本地提交推送至远程库:git push origin master
从远程库拉取代码:git pull origin master
克隆远程库代码:git clone git@github.com:persue/persue.github.io.git
分支管理
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
解决冲突:
当git无法自动合并分支时,必须首先解决冲突,再提交,合并完成。
解决冲突就是把git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph命令可以看到分支合并图。
分支管理策略:
master分支应该非常稳定,仅用于发布新版本,平时不能在上面干活。
合并分支时添加–no-ff参数可以用普通模式合并,合并后有历史。
而fast forward合并就看不出来曾经做过合并。
git merge --no-ff -m “merge with no-ff” dev
修复bug:
修复bug时,通过创建新的bug分支进行修复,然后合并,最后删除。 当手头工作没有完成时,先把工作现场git stash以下,然后去修复bug,修复后,再git stash pop回到工作现场。
开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D name强行删除。
标签管理:
命令git tag tagname用于新建一个标签,默认为HEAD,也可指定commit id.
命令git tag -a tagname -m "logloglog …"可以制定标签信息。
命令git tag可以查看所有标签。
git push origin tagname可以推送一个本地标签;
git push origin --tags可以推送全部未推送过的本地标签;
git tag -d tagname可以删除一个本地标签;
git push origin :refs/tags/tagname可以删除一个远程标签。
参考文章: