- git是分布式版本控制系统,无需联网,自身有完整的版本库,有极其强大的分支管理。
- 初始化文件夹:git init
- 添加git管理文件:git add
- 提交 git commit -m "备注"
- 查看工作区的状态 git status
- 查看工作区修改内容 git diff
- 查看历史 git log (--pretty=oneline获取版本号)
- 当前版本HEAD 上一个版本HEAD^ 上一个版本HEAD^^ 上一百个版本HEAD~100
- 回退到上一个版本 git reset --hard HEAD^ git reset --hard commit_id
- 记录每一次命令 git reflog
- 工作区和暂存区和master
- 查看工作区和版本库里面最新版本的区别 git diff HEAD -- readme.txt
- 撤销修改 git checkout
- - readme.txt(没有--,就变成了“切换到另一个分支”的命令)
- 删除库文件 git rm删掉,并且git commit
- 远程连接 git remote add origin git@server-name:path/repo-name.git
- 推送内容(第一次用做关联) git push -u origin master
- Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
- 克隆 git clone git@github.com:michaelliao/gitskills.git
- 分支的切换其实应用到的是指针的设计理念,git不是对文件的管理,而是对文件修改内容的管理。
- 创建并切换 git checkout -b dev(相当于git branch dev;git checkout dev)
- 查看分支 git branch
- 合并到主分支 git merge dev
- Fast forward模式(默认) 看不出来曾经做过合并
- --no-ff模式 合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。git merge --no-ff -m "merge with no-ff" dev
- 删除分支 git branch -d(-D强制删除) dev
- 查看分支合并情况(图) git log --graph --pretty=oneline --abbrev-commit
- 主分支master、开发分支dev、可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作 git stash
- 工作现场列表git stash list
- 恢复 git stash apply stash@{0}
- 删除 git stash drop stash@{0}
- 恢复并删除 git stash pop stash@{0}
- feature分支(新功能分支)
- 远程git
- git会自动对应本地master和远程master
- 远程仓库的默认名称是origin
- 显示更加详细的信息 git remote -v
- 推送分支 git push origin master
- 从远程库clone时,默认情况下,只能看到本地的master分支,必须创建本地dev分支 git checkout -b dev origin/dev,然后推送至库dev分支git push origin dev。
- 抓取所有包(更新) git pull
- 关联本地和库分支 git branch --set-upstream-to=origin/dev dev
- rebase变基操作,rebase操作可以把本地未push的分叉提交历史整理成直线
- 创建标签 git tag <name> 查看 git tag 查看便签信息 git show <tagname>
- -a指定标签名,-m指定说明文字 git tag -a v0.1 -m "version 0.1 released" 1094adb
- 删除标签 git tag -d v0.1
- 推送标签 git push origin <tagname>
- 一次性推送全部尚未推送到远程的本地标签 git push origin --tags
- 删除远程标签:先删本地 git tag -d v0.9,再从远程删除 git push origin :refs/tags/v0.9
- git push与git pull是一对推送/拉取分支的git命令。
- 删除远程仓库 git remote rm origin
- git忽略文件 工作区下创建一个特殊的.gitignore文件
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
# My configurations:
db.ini
deploy_key_rsa
- 强制添加 git add -f App.class
- 检查.gitignore文件格式 git check-ignore -v App.class
- 最后一次提交 git last
- 设置别名(在.git/config文件中):
- (git lg)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"
- co = checkout ci = commit br = branch st = status
- 创建证书登录
- 收集所有用户公钥(id_rsa.pub文件),导入到/home/git/.ssh/authorized_keys文件,一行一个。
- 如果团队大,可以考虑用gitosis进行管理
- 由于是要用Python安装,所以得先yum install python-setuptools
- 获取git clone git://github.com/res0nat0r/gitosis.git
- 安装python setup.py install
- git clone git@47.104.87.133:girl.git
- git clone https://github.com/res0nat0r/gitosis.git