Git基础教程

目录

Git简介

Git安装步骤

Git常用操作

基础准备

git clone

git config

git init

git add

git commit

git status

git log 

git reset

git remote

git push

git pull

git branch

git checkout 

参考资料:


Git简介

Git 是一种开源的分布式版本控制系统。目前,较多开发人员使用其技术进行项目版本控制和协同开发等需要。Git可以做的事情如下:

  • 版本控制和分支管理
  • 本地仓库与原仓库提交,拉取,合并,推送
  • 协同开发,整个团队中所有人都可以访问;

本文主要从实用主义角度出发,介绍Git常用命令的操作方法,暂未对其背后原理进行深入探索。


Git安装步骤

windows下Git安装:

  1. 在官网(Git for Windows)或者国内镜像网站(git-for-windows Mirror)下载对应版本exe文件并安装。
  2. 安装完成过后,可在"开始"界面中找到"Git Bash"或者"Git CMD",表明安装成功。

上述安装过程可参考:Git 详细安装教程(详解 Git 安装过程的每一个步骤)


Git常用操作

基础准备

1.安装Git后,打开Git CMD窗口,并进入工作文件夹

2.进入Github网站注册账号并登录,创建"new repository",在新建的仓库界面中点击"code",

再点击 Use HTTPS ,复制项目地址  https://github.com/Just-9ne/GitDemo.git备用

 

git clone

从git服务器拉取代码并创建一个本地库。代码下载完成后在当前文件夹中会有一个 gafish.github.com 的目录,通过 cd gafish.github.com 命令进入目录。

git clone https://github.com/gafish/gafish.github.com.git

git config

配置开发者的用户名和邮箱。在每次提交代码后,会产生一条包含当前配置的用户名和邮箱的提交记录。

git config --global user.name "username"
git config --global user.email "email@example.com"
git config --list 

git init

初始化一个空目录,将当前所在目录初始化为git可以管理的仓库。

$ git init

Initialized empty Git repository in D:/GitDemo/.git/

git add

添加文件到暂存区。

git add README.md

注:首先需要在项目文件下新建一个README.md文件 

git commit

提交文件变动到版本库。命令"git commit -m "modify info" "中-m 后面参数为本次代码提交说明

git commit -m "提交原因说明"

 命令执行结果如下:

PS D:\gitdemo> git add main.cpp
PS D:\gitdemo> git commit -m "提交原因说明"
[master 28536b9] 提交原因说明
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 main.cpp

1 file changed:表示一个文件发生了改动。

0 insertions(+) 0 deletions(-):表示文件内容未做插入和删除操作。

若提交的备注写错了,可使用以下"git commit --amend"命令进入Git默认编辑器进行修改

git commit --amend

git status

查看文件变动状态

git status

 命令执行结果如下:Changes to be commited表示文件已经提交到暂存区

PS D:\gitdemo> git add camera.cpp
PS D:\gitdemo> git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   camera.cpp

git log 

查看整个项目的版本提交记录。主要包括提交人日期提交原因等信息

git log

 命令执行结果如下:

PS D:\gitdemo> git log
commit 3a44ec34ce98fd296ae4d25e533ffe48a954009a (HEAD -> master)
Author: Just-9ne <信息不放便展示@qq.com>
Date:   Wed Jan 26 21:36:38 2022 +0800

    <E6><8F><90><E4><BA><A4><E6><8F><8F><E8><BF><B0><E8><AF><B4><E6><98><8E>

commit 8f6adca802da31101a0f8e6aef916130ebfdc6ce
Author: Just-9ne <信息不放便展示@qq.com>
Date:   Wed Jan 26 21:30:15 2022 +0800

git reset

回退历史版本

回退上一版本:在Git中,使用HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本,HEAD~100表示往上100个版本。

git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard HEAD~100

回退到某一具体版本:命令git reset --hard 提交版本号 可回退到某一具体版本,其中提交版本号通过git reflog命令查询

git reflog
git reset --hard 提交版本号

 命令使用案例:

PS D:\gitdemo> git reflog
3a44ec3 (HEAD -> master) HEAD@{0}: reset: moving to 3a44ec34ce98fd296ae4d25e533ffe48a954009a
28536b9 HEAD@{1}: reset: moving to HEAD^
b30be5d HEAD@{2}: commit: <E6><8F><90><E4><BA><A4><E5><8E><9F><E5>▒<A0>
28536b9 HEAD@{3}: commit: <E6><8F><90><E4><BA><A4><E5><8E><9F><E5>▒<A0><E8><AF><B4><E6><98><8E>
3a44ec3 (HEAD -> master) HEAD@{4}: commit: <E6><8F><90><E4><BA><A4><E6><8F><8F><E8><BF><B0><E8><AF><B4><E6><98><8E>
8f6adca HEAD@{5}: commit (amend): a new file
87457a2 HEAD@{6}: commit (initial): new file
PS D:\gitdemo> git reset --hard 28536b9
HEAD is now at 28536b9 提交原因说明

git remote

为远程库创建别名和查看当前所有远程地址别名

 远程地址为前期基础准备阶段从Github中复制的项目地址

git remote add [别名] [远程地址]
git remote -v

 使用案例:

PS D:\gitdemo> git remote add origin https://github.com/Just-9ne/GitDemo.git
PS D:\gitdemo> git remote -v
origin  https://github.com/Just-9ne/GitDemo.git (fetch)
origin  https://github.com/Just-9ne/GitDemo.git (push)

git push

将本地代码变动推送到远程仓库

git push [远程仓库别名] [待推送分支]

 使用案例:origin 指代的是当前的Git服务器地址,这行命令的意思是把master分支推送到服务器,当看到命令行返回如下字符表示推送成功了。

PS D:\gitdemo> git push origin master
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 640 bytes | 640.00 KiB/s, done.
Total 7 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
remote:
remote: Create a pull request for 'master' on GitHub by visiting:
remote:      https://github.com/Just-9ne/GitDemo/pull/new/master
remote:
To https://github.com/Just-9ne/GitDemo.git
 * [new branch]      master -> master

若遇到错误:remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/Just-9ne/GitDemo.git/'

解决方案参考博客:【突发】解决remote: Support for password authentication was removed on August 13, 2021. Please use a perso

git pull

将服务器上最新的代码拉取到本地

git pull [远程仓库别名] [待拉取分支名]

使用案例:

PS D:\gitdemo> git pull origin master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/Just-9ne/GitDemo
 * branch            master     -> FETCH_HEAD
   28536b9..7792bcd  master     -> origin/master
Updating 28536b9..7792bcd
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

进入Github网站的项目首页,再进入 master 分支,在线对 README.md 文件做一些修改并保存,然后在命令中执行以上命令,它将把刚才在线修改的部分拉取到本地,用编辑器打开 README.md ,你会发现文件已经跟线上的内容同步了。

如果线上代码做了变动,而你本地的代码也有变动,拉取的代码就有可能会跟你本地的改动冲突,一般情况下 Git 会自动处理这种冲突合并,但如果改动的是同一行,那就需要手动来合并代码,编辑文件,保存最新的改动,再通过 git add .和 git commit -m 'xxx' 来提交合并。

git branch

通过 Git 做项目开发时,一般都是在开发分支中进行,开发完成后合并分支到主干。分支操作包括:创建、重命名、查看、删除。

分支创建:创建一个名为daily/0.0.0的日常开发分支。

git branch daily/0.0.0

分支重命名:重命名分支名为daily/0.0.1

git branch -m daily/0.0.0 daily/0.0.1

 分支查看:通过不带参数的branch命令可以查看当前项目分支列表

git branch

分支删除:可以通过 -d 参数将已完成使命的分支删除

git branch -d daily/0.0.1

git checkout 

切换分支

 切换到daily/0.0.1分支,后续操作将在这个分支上进行。

git checkout daily/0.0.1

参考资料:

保姆级Git入门教程,10000 字详解 (qq.com)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值