Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
作为一个标准的程序猿,Git的使用是必须掌握的。为什么呢?高端大气上档次装B必备技能,哈哈~
这里就记录一下自己在使用Git的过程中遇到的问题以及总结,如有不对处还请指正,谢谢。
安装 Git
Linux 上安装Git
Linux 各版本通用的源码安装:
先从官网下载源码然后解压,依次执行./config, make , sudo make install 即可
cd /opt
mkdir software
cd software
wget https://www.kernel.org/pub/software/scm/git/git-2.10.5.tar.gz
tar -zxvf git-2.10.5.tar.gz
cd git-2.10.5
./config
make
sudo make install
安装过程中请耐心等待,安装成功后在命令行输入 git --version 显示出版本号那么恭喜你,安装成功!
Mac 上安装Git(本文的环境)
采用Homebrew 的方式安装,如果你的机器上没安装 Homebrew 建议先安装 Homebrew,然后根据其文档进行安装 Git 即可
Windows 上安装Git
在 Windows 上安装使用 Git, 是不是首先就想到了 exe 文件呢,哈哈~ Windows 忠实粉。
我们到Git官网上去下载 Git安装包, 然后默认安装一路到底就行,安装成功后找到 Git Bash 点击打开会弹出 Git命令窗口,恭喜你,安装成功了!
安装成功后还需要配置一下Git环境,在弹出的命令行中输入:
git config --global user.name "Your Name"
git config --global user.email "Your Email"
注意<font face="微软雅黑" color="red" size="3"> git config </font>命令的 <font face="微软雅黑" color="red" size="3"> --global </font> 参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
常用命令
-
git init
初始化本地工作目录,git init blog -
git clone 从远程的版本库克隆到本地,git clone git://github.com/jquery/jquery.git
-
git status 查看仓库状态
-
git remote 访问远程服务器上创建一个目录
- git remote -v 查看远程仓库
- git remote add [name] [url] 添加远程仓库
- git remote rm [name] 删除远程仓库
- git remote set-url --push [name] [newUrl] 修改远程仓库
- git pull [remoteName] [localBranchName] 拉取远程仓库到本地分支
- git push [remoteName] [localBranchName] 将本地分支代码推送到远程仓库
-
git add 将修改添加到暂存区
- git add . 添加所有的修改
- git add filename 添加指定文件的修改
- git add *.json 添加所有 json 文件
- git add book* 添加所有 book 开头的文件
-
git commit -m "comment" 将暂存区的代码提交到仓库,comment 可作注释
-
git pull 拉取远程仓库
-
git push 推送代码到仓库
-
git branch 分支
- git branch 查看本地所有分支
- git branch -r 查看远程分支
- git branch [newBranchName] 创建本地新分支
- git checkout [branchName] 切换到一个存在的分支
- git checkout -b [newBranchName] 创建新分支,并切换到新分支
- git branch -d [branchName] 删除指定分支(已和产生该分支的主分支合并)
- git branch -D [branchName] 强制删除指定分支,无论是否合并
- git push origin [branchName] 创建远程分支(本地分支push到远程)
-
git checkout
- git checkout . 丢弃工作区所有的修改退回到原始状态,不包括添加到暂存区的修改
- git checkout filename 丢弃指定文件的修改回到原始状态
- git checkout branchName 切换到指定分支
-
git reset 版本回退
- git reset HEAD filename 丢弃指定文件添加到暂存区的修改
- git reset --hard HEAD^
- git reset --hard HEAD^^
- git reset --hard HEAD~100
- git reset --hard 321456
-
git log 查看 git 的 commit 信息,包括注释在内
-
git diff 在文件修改了未提交之前查看修改的部分
-
git merge branchName 合并指定分支到当前分支
-
git stash 将当前工作区的修改暂存起来,就像堆栈一样,可以随时将某一次缓存的修改再重新应用到当前工作区
- git stash 暂存当前修改内容到堆栈
- git stash list 查看当前暂存堆栈列表
- git stash apply@{x} 应用任意一次修改到当前工作区,其修改内容还继续保留在暂存列表,并未丢弃
- git stash pop 弹出最近的暂存,弹出后列表里将不再有了,如果当前工作区不干净,弹出时有冲突,则暂存列表会继续保留修改
- git stash save [comment] 保存时打标记,使得你用git stash list的时候显示这些标记,方便你回忆是修改的什么
- git stash drop stash@{x} 丢弃某次修改
-
.gitignore 提交时忽略的文件配置
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,这个时候就需要用到此文件了。在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。例如:
.DS_Store Thumbs.db db.json *.log node_modules/ public/ .deploy*/
分支管理(项目管理)
当我们创建一个项目的代码仓库的时候,会默认创建一个主分支 master 分支,但实际应用中,对于一般的线上项目而言,我们基本上都会按照项目环境进行创建相应的分支,比如:
环境 | 分支 |
---|---|
开发环境 | development |
测试环境 | test |
预发布环境 | stage |
生产环境 | online |
当我们需要进行协同开发的时候,从远程仓库将代码克隆到本地,然后创建属于自己的develop 分支,待完成编码之后将代码 merge 到 test 分支提交到远程仓库供测试人员进行初步测试,初步测试通过之后发布之前将代码合并到stage 分支进行预发布测试,再次测试通过之后,将代码 merge 到 online 分支发布上线。具体的各分支以及开发人员之间的协同与配合,请自行查阅。
代码托管平台
GitHub
<img src="http://blog-img.muxiao520.com/github.JPG" width="150" height="100">
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。其使用的基于Web的代码托管服务,是目前全球最大的开源社交编程及代码托管网站。
我一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的。其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。
注册
打开Github 官网,填写资料点击 Sign up for Github
创建代码仓库
注册成功之后,登录点击头像按钮选择 Your profile -> Repostories -> New 创建一个代码仓库;
[图片上传失败...(image-fcae98-1572965169660)]
SSH 配置
本地装好 git 之后,需要我们生成 SSH key 和我们的 github 账户进行关联,执行 ssh-keygen -t rsa -C "email@foxmaol.com" 然后一路到底即可,就会在你的.ssh 文件夹下生成两个文件 id_rsa 和 id_rsa.pub,分别为私钥和公钥。
回到github网站上来点击 头像 -> Settings -> SSH and GPG keys -> New SSH key,其中 title 可以自定义填写,将刚才生成的公钥里的内容全部复制下来粘贴到 Key 的输入框中点击下方 Add SSH key 即可
然后就可以通过 SSH 的方式 clone你自己github上的仓库了
Bitbucket
<img src="http://blog-img.muxiao520.com/bitbucket.jpg" width="200" height="100">
BitBucket 是一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户。
特点:
- 无限制的私有仓库个数
- 无限制的磁盘空间
- 同时支持https/ssh
- Bug 跟踪
- 项目Wiki
- API 支持
- 灵活的权限控制
- 可自定义域名
- RSS 修改记录输出
- 自定义下载
对于个人来说最重要的就是<font face="微软雅黑" color="red" size="3">无限制的私有仓库个数</font>啦,有一些不希望别人看到源码的项目就可以托管到这里来,使用和 Github 一样的。 Bitbucket 官网
Coding
<img src="http://blog-img.muxiao520.com/coding.jpg" width="150" height="100">
Coding 是一个面向开发者的云端开发平台,目前提供代码托管,运行空间,质量控制,项目管理等功能。此外,还提供社会化协作功能,包含了社交元素,方便开发者进行技术讨论和协作, 是目前国内体验最接近 github 的产品。
也可以创建私有项目,还提供了webIDE,所有的工作可全部在云端完成。
Coding,让开发更简单!
Coding 官网
码云
<img src="http://blog-img.muxiao520.com/%E7%A0%81%E4%BA%91.jpg" width="100" height="100">
关于码云的使用,推荐到廖雪峰老师的博客使用码云-廖雪峰看一下,其写的很详细了,在这里谢谢廖雪峰老师。 码云官网
GitLab
<img src="http://blog-img.muxiao520.com/gitlab.jpg" width="100" height="100">
gitlab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。
GitLab 官网
关于这几个托管平台的比较,请参考GitHub & Bitbucket & GitLab & Coding 的对比分析-FIR-im官方
多平台同时使用
如何进行多个代码托管平台在一台电脑上同时使用呢?我们知道本地电脑与平台之间的通信校验是通过 ssh 配置进行的,那么我们就要来配置我们的 ssh了。
在上边我们已经介绍过如何生成 ssh key 以及如何添加到我们的平台账户里。
做到多平台同时使用首先我们要为每个平台生成一个 key(如果注册邮箱一样可以使用同一套公钥私钥)并将公钥添加到平台的 SSH 配置中, 接下来就是编写我们的.ssh/config,如下
Host github.com
User git
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_git
Host bitbucket.org
User git
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_bit
Host coding.net
User git
HostName coding.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_coding
编写完进行保存,这样我们就可以通过 SSH 的方式克隆各平台的仓库并提交我们的代码了,具体的各参数的意义请参考 如何使用特定的SSH Key提交GIT
推荐工具
借鉴
搭建 Git 服务器-廖雪峰
如何使用特定的SSH Key提交GIT
通过SSH 密钥连接GitHub/Bitbucket
GitHub & Bitbucket & GitLab & Coding 的对比分析--FIRim官方
引自: 昭熙小乐的博客
网友评论