[关闭]
@KalingYu 2016-04-26T13:37:32.000000Z 字数 5126 阅读 496

title: Git常用命令和Git团队使用规范指南
date: 2016-04-22 16:22:32
categories: 学习 | Study

description: Git是目前世界上最先进的分布式版本控制系统

前言

在2005年的某一天,Linux之父Linus Torvalds 发布了他的又一个里程碑作品——Git。它的出现改变了软件开发流程,大大地提高了开发流畅度,直到现在仍十分流行,完全没有衰退的迹象。其实一般情况下,只需要掌握git的几个常用命令即可,但是在使用的过程中难免会遇到各种复杂的需求,这时候经常需要搜索,非常麻烦,故总结了一下自己平常会用到的git操作。本文根据团队实践记录Git入门指南和Git常用命令,文章中不仅记录了Git的搭建和使用教程,还参考了大量Git团队使用规范上的经验,希望大家可以结合自己团队的实际应用场景让Git协作优雅的落地。

Git是目前世界上最先进的分布式版本控制系统

更新记录

2016年04月22日 - 初稿

阅读原文 - Git常用命令和Git团队使用规范指南

扩展阅读

Git Book - https://git-scm.com/book/zh/
git简明指南 - git - the simple guide
常用 Git 命令清单 - 常用 Git 命令清单
猴子都能懂的GIT入门 - 猴子都能懂的GIT入门
Git教程 - Git教程 - 廖雪峰的官方网站

SVN与Git的最主要的区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

Git搭建和使用

Git上手并不难,深入学习还是建议多实践,可以参考扩展阅读中廖雪峰的Git教程

Git服务端

服务端搭建Git很简单,有更多需求不妨试试Gogs和Gitlab

使用Gogs轻松搭建可能比GitLab更好用的Git服务平台 - 使用Gogs轻松搭建可能比GitLab更好用的Git服务平台

  1. #安装git
  2. sudo apt-get install git
  3. yum install git
  4. #创建一个git用户,用来运行git服务
  5. sudo adduser git
  6. #创建证书使用公钥免密码登录(可选)
  7. ssh-keygen -t rsa
  8. vi ~/.ssh/authorized_keys
  9. #初始化Git仓库
  10. sudo git init --bare sample.git
  11. sudo chown -R git:git sample.git
  12. #禁用shell登录
  13. vi /etc/passwd
  14. git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
  15. #在客户端上克隆远程仓库
  16. git clone git@server:/srv/sample.git

管理公钥推荐使用Gitosis
Gitosis - GitHub - res0nat0r/gitosis: Manage git repositories, provide access to them over SSH, with tight access control and not needing shell accounts.
Gitosis配置手记 - http://debugo.com/gitosis/

管理权限推荐使用Gitolite
Gitolite - GitHub - sitaramc/gitolite: Hosting git repositories -- Gitolite allows you to setup git hosting on a central server, with very fine-grained access control and many (many!) more powerful features.

Git客户端

Git客户端可以按个人习惯来选择,遵守团队协作中的Git规范标准才是更重要的

Git - https://git-scm.com/
TortoiseGit - https://tortoisegit.org/
SourceTree - Free Mercurial and Git Client for Windows and Mac

  1. #以最基本的Git命令行为例,先下载Git
  2. Git - Downloads
  3. #配置git提交用户名和邮箱,定义别名方便区分
  4. git config --global user.name "你的姓名"
  5. git config --global user.email "you@example.com"
  6. #克隆仓库
  7. git clone cap@172.28.70.243:/cap/cap.git
  8. $ git clone cap@172.28.70.243:/cap/cap.git
  9. Cloning into 'cap'...
  10. warning: You appear to have cloned an empty repository.
  11. Checking connectivity... done.
  12. #测试推送
  13. touch README
  14. git add README
  15. git commit -m "add readme"
  16. git push origin master
  17. Counting objects: 3, done.
  18. Writing objects: 100% (3/3), 199 bytes | 0 bytes/s, done.
  19. Total 3 (delta 0), reused 0 (delta 0)
  20. To cap@172.28.70.243:/cap/cap.git
  21. * [new branch] master -> master

Git常用命令

符号约定

  1. #初始设置
  2. git config --global user.name "<用户名>" #设置用户名
  3. git config --global user.email "<电子邮件>" #设置电子邮件
  4. #本地操作
  5. git add [-i] #保存更新,-i为逐个确认。
  6. git status #检查更新。
  7. git commit [-a] -m "<更新说明>" #提交更新,-a为包含内容修改和增删,-m为说明信息,也可以使用 -am。
  8. #远端操作
  9. git clone <git地址> #克隆到本地。
  10. git fetch #远端抓取。
  11. git merge #与本地当前分支合并。
  12. git pull [<远端别名>] [<远端branch>] #抓取并合并,相当于第2、3步
  13. git push [-f] [<远端别名>] [<远端branch>] #推送到远端,-f为强制覆盖
  14. git remote add <别名> <git地址> #设置远端别名
  15. git remote [-v] #列出远端,-v为详细信息
  16. git remote show <远端别名> #查看远端信息
  17. git remote rename <远端别名> <新远端别名> #重命名远端
  18. git remote rm <远端别名> #删除远端
  19. git remote update [<远端别名>] #更新分支列表
  20. #分支相关
  21. git branch [-r] [-a] #列出分支,-r远端 ,-a全部
  22. git branch <分支名> #新建分支
  23. git branch -b <分支名> #新建并切换分支
  24. git branch -d <分支名> #删除分支
  25. git checkout <分支名> #切换到分支
  26. git checkout -b <本地branch> [-t <远端别名>/<远端分支>] #-b新建本地分支并切换到分支, -t绑定远端分支
  27. git merge <分支名> #合并某分支到当前分支

Git常用命令 - http://gityuan.com/2015/06/27/git-notes/

以下所有的命令的功能说明,都采用上述的标记的A、B、C、D的方式来阐述。

  1. #初始化
  2. git init //创建
  3. git clone /path/to/repository //检出
  4. git config --global user.email "you@example.com" //配置email
  5. git config --global user.name "Name" //配置用户名
  6. #操作
  7. git add <file> // 文件添加,A B
  8. git add . // 所有文件添加,A B
  9. git commit -m "代码提交信息" //文件提交,B C
  10. git commit --amend //与上次commit合并, *B C
  11. git push origin master //推送至master分支, C D
  12. git pull //更新本地仓库至最新改动, D A
  13. git fetch //抓取远程仓库更新, D C
  14. git log //查看提交记录
  15. git status //查看修改状态
  16. git diff//查看详细修改内容
  17. git show//显示某次提交的内容
  18. #撤销操作
  19. git reset <file>//某个文件索引会回滚到最后一次提交, C B
  20. git reset//索引会回滚到最后一次提交, C B
  21. git reset --hard // 索引会回滚到最后一次提交, C B A
  22. git checkout // index复制到workspace B A
  23. git checkout -- files // 文件从index复制到workspace B A
  24. git checkout HEAD -- files // 文件从local repository复制到workspace C A
  25. #分支相关
  26. git checkout -b branch_name //创建名叫“branch_name”的分支,并切换过去
  27. git checkout master //切换回主分支
  28. git branch -d branch_name // 删除名叫“branch_name”的分支
  29. git push origin branch_name //推送分支到远端仓库
  30. git merge branch_name // 合并分支branch_name到当前分支(如master)
  31. git rebase //衍合,线性化的自动, D A
  32. #冲突处理
  33. git diff //对比workspaceindex
  34. git diff HEAD //对于workspace与最后一次commit
  35. git diff <source_branch> <target_branch> //对比差异
  36. git add <filename> //修改完冲突,需要add以标记合并成功
  37. #其他
  38. gitk //开灯图形化git
  39. git config color.ui true //彩色的 git 输出
  40. git config format.pretty oneline //显示历史记录时,每个提交的信息只显示一行
  41. git add -i //交互式添加文件到暂存区

Git使用规范

Git 使用规范流程 - http://www.ruanyifeng.com/blog/2015/08/git-use-process.html
团队中的 Git 实践 - https://ourai.ws/posts/working-with-git-in-team/
构家网 git 团队协作使用规范 v2 - http://wenku.baidu.com/view/e1430d1b7f1922791788e81e

Git使用规范提醒

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注