首页 > 技术文章 > Git

eileenleung 2013-12-30 20:29 原文

一、安装配置

  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

 

推荐阅读