一篇文章带你入门Git,将代码推送拉取到远程仓库

3,514 阅读5分钟

我正在参加「掘金·启航计划」

Git的概述

什么是Git

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

实际运用场景

  • 备份
  • 代码还原
  • 协同开发
  • 追溯问题代码的编写人和编写时间

版本控制方式

  1. 集中式版本控制工具:版本库是集中放在中央服务器中,必须联网才能工作,个人修改后提交给中央版本库。比如:SVN和CVS image.png

  2. 分布式版本控制工具:分布式版本控制系统没有“中央服务器”,每个人的电脑都是一个完整的版本库,不需要联网就可以工作,多人协作只需要各自的修改推送给对方,就能互相看到对方的修改了。比如:Git

优点

  • 速度快
  • 简单的设计
  • 对非线性开发模式的强力支持
  • 可以高效的管理Linux内核一样的超大规模项目

工作流程

image.png 命令:

  1. clone(克隆):从远程仓库中克隆代码到本地仓库。fetch(抓取):从远程库,抓取到本地仓库,不进行任何合并动作(一般少很少用)

  2. checkout(检出):从本地仓库中检出一个仓库分支如何进行修正

  3. add(添加):在提交前先将代码提交到暂存区

  4. commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本

  5. pull(拉取):从远程仓库拉到本地库,自动进行合并(merge),然后放在工作区,相当于fetch+merge

  6. push(推送):修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

image.png

Git的安装和常用命令

安装

下载地址:Git - Downloads (git-scm.com)

安装成功后鼠标右击后出现:

image.png

注:

  • Git GUI:Git提供的图形界面工具
  • Git Bash:Git提供的命令行工具

获取本地仓库

打开Git Bash创建一个新的git仓库: mkdir git-test01

在目录中执行 git init 就可以创建一个 Git 仓库了,这时候可以在文件夹中可以看到.git文件,但是.git文件默认是隐藏的,需要将将window设置显示隐藏的项目,如图:

image.png

基础操作指令

  • git add : 工作区(workspace) --> 暂存区(index)
  • git add .:把所有项目提交到暂存区
  • git branch:查看分支
  • git commit: 暂存区(index) --> 本地仓库(repository)
  • git commit -m “注释内容”:提交暂存区到本地仓库
  • git checkout:切换分支
  • git status:查看修改的状态
  • git log:查看日志
  • git reset --hard commitID:版本回退
  • git reflog:这个指令可以查看已经删除的提交记录

git-log的配置:为了更好的查看日志,精简的方式看日志

在系统用户下创建一个.bashrc文件 文件里面的内容:

//用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
//用于输出当前目录所有文件及基本信息
alias ll='ls -al'

然后打开git bush输入:source ~/.bashrc

image.png

配置成功后的效果图对比:git log 和 git-log

image.png

git的分支管理

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。 使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

查看分支:git branch

image.png

添加一个分支:git branch 分支名

image.png

分支直观的展示:git-log

image.png

切换分支:git checkout 分支名,其中HEAD表示的就是在当前的分支

image.png

添加分支并且切换到该分支:git checkout -b 分支名

image.png

合并分支

合并分支一般都是把其他分支添加到master上,所以首先需要切换到master分支

输入:git merge 分支名

image.png

当想删除分支的时候可以用指令:git branch -d 分支名

Git远程仓库

如果想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。一般用GitHub或者giteegitlab

创建远程程库

以gitee为例,创建一个仓库

image.png

配置SSH公钥

生成密钥

ssh-keygen -t rsa

然后不断回车,如果公钥已经存在会自动覆盖

获取密钥

cat ~/.ssh/id_rsa.pub

把生成的公钥粘贴到gitee

image.png

查看是否配置成功:ssh -T git@gitee.com

image.png

添加远程仓库

配置gitee为例:

添加远程仓库(origin后面跟上远程仓库的地址):

git remote add origin https://gitee.com/gao-bintao/git_test.git

查看是否添加成功:

git remote

image.png

推送到远程仓库

git push origin master

然后刷新gitee就可以看到上传的文件了

image.png

克隆(clone)

把远程的仓库克隆到本地仓库

git clone 项目的地址

抓取和拉取

抓取: git fetch [remote name] [branch name]

  • 将仓库里的更新都抓取到本地,不会进行合并
  • 如果不指定远程名称和分支名,则抓取所有分支

拉取:git pull [remote name] [branch name]

  • 将远程仓库的修改拉到本地并自动进行合并,相当于fetch+merge
  • 如果不指定远程名称和分支名,则抓取所有并更新当前分支

总结

对于git的学习有利于实战中团队协作的开发,同时拉取代码也变得更快。热爱编程的小伙伴也可以在gitee和GitHub上面找到优秀的开源项目。