/********************************************************************** * Git notes * 说明: * 大概两年前开始知道版本控制器,自己也偶尔会用用github,但因为工 * 作到目前为止都没有使用git之类的版本控制器,所以也一直没总结,现在 * 公司打算用git来管理源代码,所以花点时间总结一下,方便查看。 * * 2016-4-10 深圳 南山平山村 曾剑锋 *********************************************************************/ \\\\-*- 目录 -*-////////// | 参考文档: | 一、git安装: | 二、git工作模式: | 三、git basis: | 四、remote repo: | 五、branch: | 六、tag: | 七、自定义git: | 八、搭建git服务器: ------------------------------ 参考文档: Git教程 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 一、git安装: sudo apt-get install git 二、git工作模式: 1. git init文件夹是工作区(Working Directory); 2. git init文件夹下的.git文件夹是版本库(Repository); 3. .git文件夹又分为stage、实际的仓库; 三、git basis: 1. 配置git当前用户名、邮箱: git config --global user.name "Your Name" git config --global user.email "email@example.com" 2. 创建git仓库: git init 3. 文件添加到仓库: 1. git add [[file name]...] 2. 仅仅是将文件放入git的stage中; 4. 提交文件到本地仓库: 1. git commit -m <"Prompt information for this commit"> 2. 仅仅是将stage中的内容放入仓库中; 5. 查看当前状态: git status 6. 查看当前修改的文件与仓库中文件差异: git diff <file name> 7. 查看历史记录: 1. 信息比较全的方式: git log commit id 是SHA1计算出来的字符串; 2. 信息精简:git log --pretty=oneline 8. 版本回退: 1. 回退一个版本: git reset --hard HEAD^ 2. 回退二个版本: git reset --hard HEAD^^ 3. 回退多个版本: git reset --hard HEAD~<回退多少个版本数> 例: git reset --hard HEAD~100 9. 版本前移: git reset --hard <commit id> 例: git reset --hard 3628164 // commit id 只需要前面一部分就够了 10. 查看commit id用于版本前移: git reflog 11. 撤销工作区修改: 1. git checkout -- <file name> 2. 如果stage中有内容,就用stage中的内容; 3. 如果stage中没内容,就用仓库中的最新的内容; 12. 删除文件: git rm <file name> 13. 恢复删除的文件: git checkout -- <file name> 四、remote repo: 1. 远程仓库: 1. ssh-key:ssh-keygen -t rsa -C "youremail@example.com"; 2. 主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件; 3. id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人; 4. 登陆GitHub,打开“Account settings”,“SSH Keys”页面; 5. 点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容; 6. 在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。 2. 添加远程仓库: 1. git remote add origin <远程仓库地址> 2. 远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库; 3. git push -u origin master 1. 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。 2. 如果远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令: git push origin master 3. 从远程库克隆: git clone <远程仓库地址> 五、branch: 1. 创建分支: 1. 仅创建分支: git branch <分支名> 2. 创建并跳转到对应的分支: git checkout -b <分支名> 2. 分支跳转: git checkout <分支名> 3. 查看分支: git branch 4. 合并分区: git merge <分支名> 5. 删除分支: git branch -d <分支名> 6. 查看本地远程仓库: 1. git remote 2. git remote -v 7. 推送分支到远程仓率: 1. git push origin master 2. git push origin <分支名> 8. 创建远程origin的dev分支到本地 git checkout -b dev origin/dev 9. 获取最新提交: 1. git branch --set-upstream dev origin/<branch> 2. git pull 六、tag: 1. 创建标签: 1. git tag v1.0 2. git tag v0.9 6224937 3. git tag -a v0.1 -m "version 0.1 released" 3628164 2. 查看标签: git tag 3. 删除标签: git tag -d v0.1 4. 推送标签: 1. git push origin v1.0 2. git push origin --tags 5. 删除远程标签: 1. 先从本地删除:git tag -d v0.9 2. 删除远程标签也是push,但是格式如下:git push origin :refs/tags/v0.9 七、自定义git: 1. Git显示颜色 git config --global color.ui true 2. 忽略的文件: 1. .gitignore 2. 参考:https://github.com/github/gitignore 3. 配置别名: 1. git config --global alias.st status 2. git config --global alias.co checkout 3. git config --global alias.ci commit 4. git config --global alias.br branch 5. git config --global alias.unstage 'reset HEAD' 6. git ci -m "bala bala bala..." 7. git unstage test.py 4. 显示log: 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" 5. 配置文件: 1. 文件位置:.git/config 2. cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = git@github.com:michaelliao/learngit.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [alias] last = log -1 八、搭建git服务器: 1. 安装git: sudo apt-get install git 2. 创建一个git用户,用来运行git服务: sudo adduser git 3. 创建证书登录: 收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。 4. 初始化Git仓库: sudo git init --bare sample.git 5. 修改权限: sudo chown -R git:git sample.git 6. 禁用shell登录: cat /etc/passwd git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell 7. 克隆远程仓库 git clone git@server:/srv/sample.git