一、安装配置
1、下载地址,官网文档,易懂文章(推荐阅读), 《Pro Git》中文版, Xcode 5 and Git
2、修改配置文件
$ git config --global user.name "GitHub Account Name"
$ git config --global user.name "GitHub Account Email"
$ 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 lg 来查看 log
二、杂七杂八知识
1、常用指令
git config --system(/etc/gitconfig): 系统中对所有用户都普遍适用的配置
git config —global (~/.gitconfig): 用户目录下的配置文件只适用于该用户
git config --list: 查看配置信息
git config user.name/others: 查看某个配置变量属性
git help <verb> 查看帮助
git log 查看提交记录
git log --pretty=oneline 以简便的形式查看记录
git reflog 记录用户的每一次命令
git status 查看修改的文件记录
git reset --hard HEAD^ 退回上一个版本(HEAD:为当前版本 HEAD^:上一个版本,HEAD^^: 上上一个版本)
git reset HEAD fileName 把缓存区的某些文件替换为版本库的文件
git diff fileName 查看修改文件和上一次提交了的版本的区别
git diff HEAD -- fileName 查看工作区和版本库里最新版本的区别
git checkout -- fileName 丢弃工作区的修改 (a、如果版本没有存到缓存区,就恢复到和版本库一模一样;b、如果已添加到缓存区,并做了修改,恢复到添加到缓存区的状态)
git rm fileName 从版本库中删除文件,之后马上执行 commit 操作。
$ git remote # 查看远程库信息
$ git remote -v # 查看远程库详细信息
2、SSH 的配置
3、分支
策略:
a) master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;应该创建一个 dev 分支,每个人又在 dev 分支上有自己的分支。在某个时候再合并到 dev 和 master 上。
b) 并不是一定要把本地分支往远程推送
-
-
-
master分支是主分支,因此要时刻与远程同步;
-
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
-
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
-
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
-
-
$ git branch # 查看当前的分支, 当前分支前会有 *
$ git checkout -b xxx # 创建 xxx 分支,并切换到该分支
# 分支工作完成切换回 master 分支
$ git checkout master # 切换分支
$ git merge xxx # 如果是 "Fast Forward", 是不会执行一次 merge 操作的
$ git merge --no-f -m "xxxxxxx" xxx # merge 的时候,commit 一次
$ git branch -d xxx # 删除分支
$ git log --graph --pretty=oneline --abbrev-commit # 查看分支合并情况
# 如果当前在 dev branch 任务只完成到一半,需要先处理 bug。(通常会创建新的 bug 分支进行修复,然后合并,最后删除。)
$ git stash # 则应该把当前工作现场存储起来。
# 切换回哪个分支上修改bug,修改完后 merge 那个分支。
# 继续刚才保留现场的工作。
$ git stash pop # 恢复到 stash 内容,并删除 stash
$ git stash list # 查看保留现场的记录
# 添加新功能 (最好新建一个 feature 分支,在上面开发,完成后,合并,最后删除该 feature 分支。)
$ git branch -D xxx # 强行删除一个还没有 merge 的分支。
$ git push origin xxx # push 其他分支到远程库
$ git checkout -b dev origin/dev # 创建远程 origin 的 dev 分支到本地
c) 多人协作的工作模式通常是这样:
-
-
- 首先,可以试图用git push origin branch-name推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;(如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。)
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
-
4、标签
创建的标签是存储在本地的,不会自动推送到远程。
$ git checkout xxx # 切到要加标签的分支上
$ git tag zzz # 打开一个新标签, 默认标签是打在最新提交的 commit 上。
$ git tag zzz commitID # 为指定的 commit 添加标签
$ git tag -a zzz -m "xxx" commitID # 为指定的 commit 添加标签,-a指定标签名,-m指定说明文字。
$ git tag -s zzz -m "xxx" commitID # 为指定的 commit 添加标签,-s添加 PGP 签名
$ git tag # 查询标签
$ git show zzz # 查看标签详细信息
$ git tag -d zzz # 删除标签
$ git push origin xxx # 推送某个标签到远程
$ git push origin --tags # 把本地的全部标签都推送到远程
# 删除已经推送到远程的标签 (先把本地的该标签删除掉,再删除远程的改标签)
$ git tag -d zzz
$ git push origin :refs/tags/zzz