Git基本使用

Git简介

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。是现代软件开发中不可或缺的工具之一,它通过其强大的分支管理、快速的操作和高效的协作能力,极大地促进了团队的开发效率和代码管理的便利性。

Git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存域和多个工作流分支等特性。由Linus Torvalds为了管理Linux内核开发而创建。

Git下载安装地址:https://git-scm.com/

版本控制

版本控制是一种记录文件内容变化的系统,它允许用户查阅特定版本的修订历史。通过记录文件修改的详细历史,版本控制使得用户能够轻松查看和管理项目的不同版本,便于需要时进行版本切换和比较。

版本控制系统中的客户端并非简单地提取最新版本的文件快照,而是将整个代码仓库完整地镜像到本地。因此,每次文件的提取操作实际上都是对整个文件仓库的完整备份。这种方式使得即使发生了文件损坏或其他问题,也可以通过其他客户端的本地仓库进行快速恢复,确保项目数据的安全和稳定性。

分支概述

在 Git 中,分支是指向 Git 仓库中特定提交对象(commit)的可变指针。每个分支代表项目开发过程中的一个独立路径,允许开发人员并行进行不同的工作,而无需影响主线(主分支)的稳定性和开发进度。

在版本控制过程中,当需要同时推进多个任务时,可以为每个任务单独创建分支。这样一来,开发人员可以将各自的工作与主任务分隔开来,而在开发自己的分支时不会影响到主分支的稳定性和进度。

分支的主要优势在于能够并行推进多个功能的开发,从而提升整体开发效率。每个分支在开发过程中是独立的实体,如果某个分支的开发失败或不符合预期,可以直接删除而不会对其他分支造成任何影响。

Git常用命令

设置用户签名

git config --global user.name 用户名
git config --global user.email 邮箱

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。

这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。

了解所有Git配置

git config --list

初始化本地库

git init

查看当前所在分支(Windows PowerShell不显示,git bash则会出现在文件路径后面)

git branch --show

查看本地库状态

git status

添加文件到暂存区

git add 文件名

添加所有文件到暂存区

git add .

提交到本地库

git commit -m "日志信息"

撤销一次本地提交(暂存区保留,相当于已经git add但是未git commit)

git reset --sort HEAD~1

撤销两次本地提交(暂存区保留,相当于已经git add但是未git commit)

git reset --sort HEAD~2

撤销一次本地提交(工作区以及暂存区都撤销)

git reset --hard HEAD~1

撤销两次本地提交(工作区以及暂存区都撤销)

git reset --hard HEAD~2

查看历史记录

git reflog

版本穿梭

git reset --hard 版本号

显示提交历史

git log

创建分支

git branch 分支名

切换分支

git checkout 分支名

创建并切换分支

git checkout -b 分支名

删除本地分支(如果该分支还未合并到当前分支会出现警告)

git checkout -d 分支名

强制删除本地分支(直接删除)

git branch -D 分支名

查看所有分支(包括本地分支和远程分支)

git branch -a

查看本地分支最新提交信息

git branch -v

查看远端分支

git branch -r

合并其他分支

git merge 分支名

拉取远端代码

git clone 地址

本地分支获取远端最新更改

git pull

获取所有最新的分支和数据

git fetch

遇到冲突中止合并

git merge --abort

本地分支推送远端并建立连接

push -u origin 分支名

本地分支与远端分支建立连接

git push --set-upstream origin 分支名

本地分支推送远端连接的分支

git push

本地分支强制覆盖远端连接的分支

git push --force

本地分支推送远端目标分支

git rebase 分支名

删除远端分支

git push --delete origin 分支名

查看帮助

git --help

查看指定命令帮助

git 命令 --help
# 或者
git help 命令

如:git checkout --help 和 git help checkout

输入命令会打开网页端查看帮助信息。

查找一段时间内的提交记录

git log --since="开始时间" --until="结束时间"

查找一段时间内指定账号的提交记录

git log --since="开始时间" --until="结束时间" --author="账号名"

查找一段时间内指定账号的每次提交的变更行数

git log --since="开始时间" --until="结束时间" --author="账号名" --oneline --shortstat

查找一段时间内指定账号提交的变更行数总数

git log --since="开始时间" --until="结束时间" --author="账号名" --numstat --pretty="%H" | awk 'NF==3 {plus+=$1; minus+=$2} END {printf "Total lines added: %s, Total lines deleted: %s\n", plus, minus}'

查找一段时间内指定账号提交的次数

git log --since="开始时间" --until="结束时间" --author="账号名" --pretty='%ae' |sort |uniq -c

查找一段时间内分支合并次数

git log --since="开始时间" --until="结束时间" --merges --grep="Merge branch '分支名'" --pretty='%aN' | wc -l

Git上传代码基本流程

场景一:新建分支首次上传代码

# 新建文件夹
# 克隆远程仓库到文件夹里
git clone 地址
# 进入克隆下来的文件目录

# 建立分支
# 创建并切换到本地分支
git checkout -b 分支名
# 如果远端没有同名分支,则推送本地分支到远程并建立跟踪关系
git push -u origin 分支名
# 如果远端有同名分支,则本地分支与远端分支建立连接
git push --set-upstream origin 分支名

# 提交代码
# 修改代码后添加到暂存区
git add .
# 提交到本地仓库
git commit -m "日志信息"
# 送本地修改到远程同名分支
git push

# 之后在页面申请合并主分支

场景二:已有项目与人合作协作上传代码

# 获取最新代码
# 切换主分支(一般是dev分支或者master分支)
git checkout 主分支名 
# 获取最新主分支代码
git pull
# 切换本地个人开发分支
git checkout 分支名
# 合并最新主分支代码
git merge 主分支名 

# 提交代码
# 修改代码后添加到暂存区
git add .
# 提交到本地仓库
git commit -m "日志信息"
# 送本地修改到远程同名分支
git push

# 之后在页面申请合并主分支

你可能感兴趣的:(版本控制,git)