Git教程
推荐一个特别好用的在线训练软件
http://pcottle.github.io/learnGitBranching/
Git 代码库
- Admin Frontend: "git clone ssh://git@192.168.6.4:2222/xmlife-operating.git"
- HTML: "git clone ssh://git@192.168.6.4:2222/xmlife-html.git"
-
iOS: "git clone ssh://git@192.168.6.4:2222/xmlife-ios.git"
- Android: "git clone ssh://git@192.168.6.4:2222/xmlife-android.git"
-
Server: "git clone ssh://git@192.168.6.4:2222/xmlife-server.git"
(注意: 请将自己的ssh public key传给 lmj@ipaitao.com 或 qc@ipaitao.com 以添加权限)
(注意:ssh key生成)
ssh-keygen -t rsa -C "your_email@example.com" |
根据个人的邮箱生成,生成一个公共ssh.pub和一个私有的ssh,将ssh放到.ssh(隐藏文件 cd ~/.ssh 文件路径)文件夹下边,公共的ssh.pub传给 lmj@ipaitao.com 或 qc@ipaitao.com 以添加权限(注意下边的sshkey用id_rsa)
Git 配置
git config --global --add user.email "请改成自己邮箱" git config --global --add user.name "改成RTX上的用户名" git config --global alias .co checkout git config --global alias .br branch git config --global alias .ci commit git config --global alias .st status -s git config --global alias .l "log --oneline --decorate -12" 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 --" |
Git 常用命令列表
https://github.com/yanrk/HelloWorld/blob/master/%3C%3CGit%E5%9B%BE%E8%A7%A3%3E%3E%E7%AC%94%E8%AE%B0
教程: http://www.bootcss.com/p/git-guide/
Git 命令的自动补全
- 下载 git-completion.bash , 将其放在 home 目录 https://github.com/markgandolfo/git-bash-completion
-
修改 .bashrc , 加入 "source ~/.git-completion.bash"
Git与Subversion的命令对比表
操作
|
Git
|
Subversion
|
---|---|---|
复制数据库 | git clone | svn checkout |
提交 | git commit | svn commit |
确认状态 | git status | svn status |
确认差异 | git diff | svn diff |
确认记录 | git log | svn log |
添加 | git add | svn add |
移动 | git mv | svn mv |
删除 | git rm | svn rm |
取消修改 | git checkout / git reset | svn revert (※1) |
创建分支 | git branch | svn copy (※2) |
切换分支 | git checkout | svn switch |
合并 | git merge | svn merge |
创建标签 | git tag | svn copy (※2) |
更新 | git pull / git fetch | svn update |
反映到远端 | git push | svn commit (※3) |
忽略档案目录 | .gitignore | .svnignore |
※1. SVN的revert是用来取消修改,但Git的revert是用来消除提交。所以即使是同样的命令,在SVN和Git里的含义是不同的。
※2. SVN的分支与标签在构造上是相同的,但在Git其构造明显是不一样的。
※3. SVN没有本地数据库/远程数据库的概念,所以提交会马上反映到远程里。但Git的本地数据库和远程数据库的反映方法是不一样的。
Git常用场景
- 假设拿到需求x, 现在开始开发:
- git checkout -b feature_x origin/master ( 新建一个branch用于feature x开发)
- bla bla bla .... coding..., 然后 git commit -am "feature x bla bla bla"
- 不定期使用 git commit -a --amend 来将最新更改合并到commit里.
- 在开发途中, 突然有紧急bug, 需要先进行处理:
- git commit -a --amend 确保所有更改已保存;
- git checkout -b bugfix1 origin/master ( 新建一个bugfix分支)
- bla bla bla .... coding..., 然后 git commit -am "bugfix bla bla bla"
- 之后确定bug已经修复之后: "git push origin HEAD:master" 将本分支里的commit同步到server的代码仓库
- 重新回到之前feature x的开发中:
- git checkout feature_x
- bla bla bla, continue coding...
由上面的操作可以看出, branch用来分离和保存没一个任务所修改的代码; 注意: 和SVN不同的是, Git的branch都是创建在本地, 所有不用担心branch的数量和对server的影响. 对于小的改动, 可以直接用本地的任何branch里面直接push到server的master分支. (对于大规模的改动, 和 覃超 Eric 周振 联系, 将本地修改push到server的独立新分支.