博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git常用命令和Git团队使用规范指南
阅读量:6991 次
发布时间:2019-06-27

本文共 4737 字,大约阅读时间需要 15 分钟。

前言

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

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

更新记录

2016年04月22日 - 初稿

阅读原文 -

扩展阅读

Git Book -

git简明指南 -
常用 Git 命令清单 -
猴子都能懂的GIT入门 -
Git教程 -

SVN与Git的最主要的区别

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

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

Git搭建和使用

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

Git服务端

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

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

#安装gitsudo apt-get install gityum install git#创建一个git用户,用来运行git服务sudo adduser git#创建证书使用公钥免密码登录(可选)ssh-keygen -t rsavi ~/.ssh/authorized_keys#初始化Git仓库sudo git init --bare sample.gitsudo chown -R git:git sample.git#禁用shell登录vi /etc/passwdgit:x:1001:1001:,,,:/home/git:/usr/bin/git-shell#在客户端上克隆远程仓库git clone git@server:/srv/sample.git

管理公钥推荐使用Gitosis

Gitosis -
Gitosis配置手记 -

管理权限推荐使用Gitolite

Gitolite -

Git客户端

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

Git -

TortoiseGit -
SourceTree -

#以最基本的Git命令行为例,先下载Githttps://git-scm.com/download/#配置git提交用户名和邮箱,定义别名方便区分git config --global user.name "你的姓名"git config --global user.email "you@example.com"#克隆仓库git clone cap@172.28.70.243:/cap/cap.git$ git clone cap@172.28.70.243:/cap/cap.gitCloning into 'cap'...warning: You appear to have cloned an empty repository.Checking connectivity... done.#测试推送touch READMEgit add READMEgit commit -m "add readme"git push origin masterCounting objects: 3, done.Writing objects: 100% (3/3), 199 bytes | 0 bytes/s, done.Total 3 (delta 0), reused 0 (delta 0)To cap@172.28.70.243:/cap/cap.git * [new branch]      master -> master

Git常用命令

符号约定

  • <xxx> 自定义内容

  • [xxx] 可选内容

  • [<xxx>]自定义可选内容

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

Git常用命令 -

  • workspace: 本地的工作目录。(记作A)

  • index:缓存区域,临时保存本地改动。(记作B)

  • local repository: 本地仓库,只想最后一次提交HEAD。(记作C)

  • remote repository:远程仓库。(记作D)

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

#初始化git init //创建git clone /path/to/repository //检出git config --global user.email "you@example.com" //配置emailgit config --global user.name "Name" //配置用户名#操作git add 
// 文件添加,A → Bgit add . // 所有文件添加,A → Bgit commit -m "代码提交信息" //文件提交,B → Cgit commit --amend //与上次commit合并, *B → Cgit push origin master //推送至master分支, C → Dgit pull //更新本地仓库至最新改动, D → Agit fetch //抓取远程仓库更新, D → Cgit log //查看提交记录git status //查看修改状态git diff//查看详细修改内容git show//显示某次提交的内容#撤销操作git reset
//某个文件索引会回滚到最后一次提交, C → Bgit reset//索引会回滚到最后一次提交, C → Bgit reset --hard // 索引会回滚到最后一次提交, C → B → Agit checkout // 从index复制到workspace, B → Agit checkout -- files // 文件从index复制到workspace, B → Agit checkout HEAD -- files // 文件从local repository复制到workspace, C → A#分支相关git checkout -b branch_name //创建名叫“branch_name”的分支,并切换过去git checkout master //切换回主分支git branch -d branch_name // 删除名叫“branch_name”的分支git push origin branch_name //推送分支到远端仓库git merge branch_name // 合并分支branch_name到当前分支(如master)git rebase //衍合,线性化的自动, D → A#冲突处理git diff //对比workspace与indexgit diff HEAD //对于workspace与最后一次commitgit diff
//对比差异git add
//修改完冲突,需要add以标记合并成功#其他gitk //开灯图形化gitgit config color.ui true //彩色的 git 输出git config format.pretty oneline //显示历史记录时,每个提交的信息只显示一行git add -i //交互式添加文件到暂存区

Git使用规范

Git 使用规范流程 -

团队中的 Git 实践 -
构家网 git 团队协作使用规范 v2 -

Git使用规范提醒

  • 使用Git过程中,必须通过创建分支进行开发,坚决禁止在主干分支上直接开发。review的同事有责任检查其他同事是否遵循分支规范。

  • 在Git中,默认是不会提交空目录的,如果想提交某个空目录到版本库中,需要在该目录下新建一个 .gitignore 的空白文件,就可以提交了

  • 把外部文件纳入到自己的 Git 分支来的时候一定要记得是先比对,确认所有修改都是自己修改的,然后再纳入。不然,容易出现代码回溯

  • 多人协作时,不要各自在自己的 Git 分支开发,然后发文件合并。正确的方法应该是开一个远程分支,然后一起在远程分支里协作。不然,容易出现代码回溯(即别人的代码被覆盖的情况)

  • 每个人提交代码是一定要 git diff 看提交的东西是不是都是自己修改的。如果有不是自己修改的内容,很可能就是代码回溯

  • review 代码的时候如果看到有被删除掉的代码,一定要确实是否是写代码的同事自己删除的。如果不是,很可能就是代码回溯

转载地址:http://pnzvl.baihongyu.com/

你可能感兴趣的文章
小学四则运算
查看>>
DirBuster工具扫描敏感文件
查看>>
Date对象之将时间转为毫秒数的方法对比
查看>>
归并排序
查看>>
Unsupported major.minor version 51.0解决办法
查看>>
windows phone 7 基本导航
查看>>
sizeof(数组名) 及strlen(数组名)
查看>>
android visible invisible和gone的区别
查看>>
JsTree异步加载数据实现多级菜单
查看>>
部署jar到linux ,开机自启动
查看>>
Continuously INFO JobScheduler:59 - Added jobs for time *** ms, in my Spark Standalone Cluster
查看>>
Spark Streaming之dataset实例
查看>>
sql编程
查看>>
mybatis报错Type interface xxx.Dao is not known to the MapperRegistry
查看>>
第二章笔记
查看>>
简单的数据生成方法
查看>>
映射(map)
查看>>
【转载】nodejs+express+ejs+mongoose实例
查看>>
IOS SDWebImage 支持webp
查看>>
国内不谈java
查看>>