大概两年前开始知道版本控制器,自己也偶尔会用用github,但因为工作到目前为止都没有使用git之类的版本控制器,所以也一直没总结,现在公司打算用git来管理源代码,所以花点时间总结一下,方便查看。
/**********************************************************************
* 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