git笔记

简介: git笔记

在linux上我们建议你用二进制的方式来安装git,可以使用发行版包含的基础软件包管理工具来安装,如果你是 是CentOS或者Fedora的操作系统,可以使用yum命令来安装git:                     $ sudo yum install git 如果你是ubuntu或者是Debian可以使用apt-get的命令来安装git:                     $ sudo apt-get install git 要了解更多选择,Git 官方网站上有在各种 Unix 风格的系统上安装步骤,网址为 http://git-scm.com/download/linux

在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 http://git-scm.com/download/win,会检查你的操作系统是32位的还是64位的,并自动开始下载对应的安装包。 另一个简单的方法是安装 GitHub for Windows。 该安装程序包含图形化和命令行版本的 Git。 它也能支持 Powershell,提供了稳定的凭证缓存和健全的换行设置。 你可以在 GitHub for Windows 网站下载,网址为 http://windows.github.com

MAC上安装git

方法一:通过homebrew安装git 首先homebrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 安装git: brew install git 方法二:通过xcode 直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”, 在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

配置git

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会 使用这些信息,并且它会写入到你的每一次提交中,不可更改:        

$ git config --global user.name “jf-linux”        

$ git config --global user.email 786572829@qq.com 再次强调,如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行 没有 --global 选项的命令来配置。 很多 GUI 工具都会在第一次运行时帮助你配置这些信息。 你也可以使用git config --list来查看git的所有配置。

创建git服务器

虽然我们说git是一个分布式的版本管理工具,不像svn 那样离开了中央服务器的仓库就干不了活了,但是如果有个 中央服务器存在,还是方便了多人之间的协作。那如何创建 git的中央服务器呢?

一:创建git账号和git用户组
    $ sudo adduser git  #添加git用户
     $ sudo passwd git   #添加git的密码
     $ sudo groupadd git #添加git用户组
     $ sudo usermod -G git git #添加git用户到git用户组
二、创建git仓库
    $ cd /srv     # srv目录下存放git的仓库
     $ mkdir nginx-docs.git # 创建nginx-docs.git目录
     $ cd nginx-docs.git
     $ git init --bare # bare选项指示该仓库为裸仓库
     $ sudo chown -R git:git /srv/nginx-docs.git # 修改权限为git用户

三、禁止git用户登录shell,这样git通过sh服务登录会被拒绝

四、克隆远程仓库     比如在我的windows电脑上打开git bash shell,

输入:     git clone git@47.106.79.26:/srv/nginx-docs.git

    即clone命令为:     git clone git@<您的 CVM IP 地址>:git仓库路径     在这个过程中需要输入用户名和密码,我们可以通过rsa认证的方式省略掉密码的输入

五、免密输入的配置     就是通过rsa认证,生成公钥和私钥,然后把客户端的公钥告诉git服务器,具体步骤如下:     在客户端机器上,比如我在windows机器上已经配置用户名和密码,见上一章的git配置说明,然后打开git bash shell,生成rsa的秘钥对,ssh-keygen –t rsa命令后一路按回车,此时会在c:/Users/lizhiyong/.ssh/目录下生成id_rsa.pub和id_rsa文件,id_rsa.pub是公钥文件,id_rsa是私钥文件

  在git服务器上:     $ su git     $ ssh-keygen –t rsa     $ touch authorized_keys 然后把客户端的id_rsa.pub追加到这个文件里。这样后, 我们就不需要每次都输入git密码了。

 git的原理 -  git的四个区域

Workspace: 工作区,就是你平时存放项目代码的地方

Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

git原理 – 工作流程

git的工作流程一般是这样的:

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件add到暂存区域;

3、将暂存区域的文件commit到git仓库;

4、本地的修改push到远程仓库,如果失败则执行第5步

5、git pull将远程仓库的修改拉取到本地,如果有冲突需要修改冲突。回到第三步 因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

git原理 – 文件的四种状态

Untracked:   未跟踪, 此文件在文件夹中,但并没有加入到git库,不参与版本控制, 通过git add 状态变为Staged。

Unmodify:   文件已经入库且未修改, 即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改, 而变为Modified,如果使用git rm移出版本库, 则成为Untracked文件。

Modified:文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过git add可进入暂存staged状态,使用git checkout 则丢弃修改,返回到unmodify状态, 这个git checkout即从库中取出文件,覆盖当前修改

Staged:暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态。

合并提交

git commit --amend            相同功能多次提交复用上次提交信息

git rebase -i

p,pick:使用该次提交

r,reword:使用该次提交,但重新编辑提交信息

e,edit:使用该次提交,但停止到该次提交

s,squash:将该commit和前一个commit合并

f,fixup:将该commit和前一个commit合并,但不保留该提交的注释信息

x,exec:执行shell命令

d,drop:丢弃该commit

冲突解决

原则:不要影响其他人提交的功能,也不能破坏自己提交的功能。    协商解决。

<<<<<<< HEAD和=======中间的是你自己的代码, ======= 和>>>>>>>中间的是其他人修改的代码自己确定保留那一部分代码,最后删除<<<<<<< HEAD ,======= ,>>>>>>>这种标志。

1        解决冲突

2        git add .

3        git commit . -i -m "fix: "

4        git push将解决冲突后的文件推送到远程。

版本控制管理分支介绍

我们管理代码的时候,在集中式管理(比如SVN)中会创建Trunk、Branches、Tag等一些目录,分别放置开发代码、代码分支 以及代码的里程碑,那么在git中我们也使用分支和tag来管理代码。分支就是就是一个代码的副本,可以基于分支进行独立开发。 比如我们创建Bug分支或者Feature分支,等开发好了再合并到主干上。好了使用git可以非常方便灵活地管理分支和基于分支工作:     git branch   # 查看分支

git branch develop  # 创建develop分支
    git checkout –b feature/FT-123456  # 创建FT-123456的一个feature分支
    git checkout develop   # 切换分支   git switch 
    git merge feature/FT-123456   # 合并分支
    git branch –d feature/FT-123456   # 删除FT-123456的feature分支
    git push –u origin hotfix/ISSUE-345678    # 推送分支

版本管理的标准流程

Master : 稳定压倒一切,禁止尚review和测试过的代码提交到这个分支上,Master上的代码是可以随时部署到线上生产环境的。 Develop :开发分支,我们的持续集成工作在这里,code review过的代码合入到这里,我们以下要讲的BUG fix和feature开发都可以基于develop分支拉取,修改完之后合入到develop分支。 Feature :功能开发和change request的分支,也即我们每一个feature都可以从devlop上拉取一个分支,开发、review和测试完之后合入develop分支。 Hotfix :紧急修改的分支,在master发布到线上出现某个问题的时候,算作一个紧急布丁。从master分支上拉取代码,修改完之后 合入develop和master分支。 Release :预发布分支,比如0.1、0.2、1.12版本,我们一般说的系统测试就是基于这些分支做的,如果出现bug,则可以基于该release分支拉取一个临时bug分支。 Bug : bug fix的分支,当我们定位、解决后合入develop和Release分支,然后让测试人员回归测试,回归测试后由close这个bug

github介绍

GitHub是一个利用Git进行版本控制、专门用于存放软件代码与内容的共享虚拟主机服务。它由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。 总之,全球最大的同性交友网站

Repo:项目,绝大多数的开源项目都会放在github上,包括Linus Torvalds参与的linux内核,基于repo可以提       issue,可以review code,可以有wiki,branch,tag等等都支持,还可以star和fork这样的repo。 Explore:基于兴趣显示了一些开源项目 Topics:按照主题显示的一些项目,可以选择某个主题继续观察 Trending:流行repo,可以选择语言和周期来显示 Events:显示github官方的一些活动

如何搜索高质量的开源项目

   搜索的方法: 关键字        stars:> 1000        fork:>100        语言: java html

用git获取项目的时候提示git SSL certificate problem: unable to get local issuer certificate

这个问题是由于没有配置信任的服务器HTTPS验证。默认,cURL被设为不信任任何CAs,就是说,它不信任任何服务器验证。

只需要执行下面命令就可以解决:
git config --global http.sslVerify false

gitlab介绍

GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。很多公司都是基于gitlab进行版本管理的。

搭建gitlab

第一步:安装一些依赖软件
     sudo apt-get update
      sudo apt-get install -y curl openssh-server ca-certificates
      sudo apt-get install -y postfix  # postfix发送邮件,其它的邮件配置见:https://docs.gitlab.com/omnibus/settings/smtp.html
第二步:添加下载源:
     vim /etc/apt/sources.list.d/gitlab_gitlab-ee.list 打开该文件添加:
     deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main
第三步:安装gitlab
     sudo apt-get update
     sudo apt-get install gitlab-ce
第四步:配置gitlab
    vim /etc/gitlab/gitlab.rb
    external_url ‘http://192.168.2.129’ # 把external_url修改成访问的IP,当然更复杂的配置信息可以参考
          https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
    gitlab-ctl reconfigure  # 开始配置

在这个过程中,我们可能会遇到这个问题,是因为我们的配置external_url配置的url不正确

reconfigure成功会出现以下内容:

第五步:启动重启查看状态:                   gitlab-ctl restart/start/status/stop     # 通过gitlab-ctl help都能查看到该信息

比如gitlab-ctl status,会显示以下信息:

启动gitlab后,访问http://192.168.2.129出现502错误:

此时我们可以使用gitlab-ctl tail来查看gitlab的服务日志,通过日志可以看到8080端口被别的进程占用了

此时需要修改gitlab的配置信息,如下: vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb  # 然后把listen的8080端口改成8088,然后重启gitlab

gitlab-ctl restart

如果不出什么意外,我们再次打开http://192.168.2.129会出现下面这个页面,这个时候需要配置我们root账户 的密码了:

目录
相关文章
|
Shell 开发工具 git
Git笔记(三)---- Git分支操作
Git笔记(三)---- Git分支操作
132 0
|
Shell 开发工具 git
[笔记]Git 介绍以及入门基本功能(一)
[笔记]Git 介绍以及入门基本功能
|
7月前
|
存储 XML Shell
Git笔记
Git笔记
47 0
|
7月前
|
开发工具 git
git使用笔记-修改url并与远端库合并
git使用笔记-修改url并与远端库合并
44 1
|
Shell 网络安全 开发工具
git理解之超薄笔记
git理解之超薄笔记
84 1
git理解之超薄笔记
|
Shell 开发工具 git
[笔记]Git 介绍以及入门基本功能(二)
[笔记]Git 介绍以及入门基本功能(二)
|
Shell 网络安全 开发工具
git版本管理加合并笔记
git版本管理加合并笔记
|
开发工具 git
常见git操作笔记
常见git操作笔记
80 1
|
安全 程序员 开发工具
代码版本管理笔记 | Python 程序员也应该会的 Git 分支操作
代码版本管理笔记 | Python 程序员也应该会的 Git 分支操作
193 0
|
数据采集 安全 JavaScript
代码版本管理笔记 | Python 程序员也应该会的 Git 进阶操作
代码版本管理笔记 | Python 程序员也应该会的 Git 进阶操作
170 0