Git 使用实战

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

github sign in

创建代码仓库

注册成功之后,登录点击头像按钮选择 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 即可

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 Windows 客户端

SourceTree

借鉴

搭建 Git 服务器-廖雪峰
如何使用特定的SSH Key提交GIT
通过SSH 密钥连接GitHub/Bitbucket
GitHub & Bitbucket & GitLab & Coding 的对比分析--FIRim官方

引自: 昭熙小乐的博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,362评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,577评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,486评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,852评论 1 317
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,600评论 6 412
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,944评论 1 328
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,944评论 3 447
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,108评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,652评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,385评论 3 358
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,616评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,111评论 5 364
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,798评论 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,205评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,537评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,334评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,570评论 2 379