Git基本操作
Git概述
git是一个免费的开源的分布式版本控制系统、具有廉价的本地库、方便的暂存区域和多个工作流分支等特性。
何为版本控制?:
1.版本控住是一种记录文件内容变化,以便查订特定版本的系统、
2.版本控制其实最重要的是可以记录文件修改历史记录、从而能够查看历史版本、方便版本切换
为什么要版本控制?:
个人开发过渡到团队开发
版本控制工具
集中式CVS、SVN、VSS…
有一个单一的集中管理的服务器、保存所有文件的修订版本、而协作人员通过客户端连接服务器取出最新的文件或者提交更新。
优点:
1.项目透明化、可以在一定程度上看到项目其他人在做什么
2.管理员可以轻松掌握每个开发者的权限
3.管理一个集中式的版本控制系统,要比远在各个客户端上维护本地数据来的容易
缺点:
1.*服务器单点故障期间则谁都无法提交更新、无法协同工作
分布式:Git、Mercurial、Bazaar、Darcs…
客户端不是提取的最新版本的文件快照、而是把代码仓库完整的镜像下来(本地库)。每个客户端的每一次文件提取操作,实际上都是对整个文件仓库的完整备份。
优点:
1.任何一处协同工作文件发生故障、都可以在其他客户端的本地仓库进行恢复。
2.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
3.每个客户端保存的也都是整个完整的项目(包含历史记录、更加安全)
Git工作机制
Git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库、一般称之为远程库。
局域网: GitLab
互联网: GitHub(外网)、Gitee(国内网站、码云)
Git常用命令
git init | 初始化本地库 |
---|---|
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “日志文件” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本切换 |
git conifg --global user.name 用户名 | 设置用户名 |
git conifg --global user.email 邮箱 | 设置邮箱 |
设置用户签名
签名的作用是区分不同的操作者、签名信息在每一个版本提交的信息中都可以看到、以此确认是谁提交的。
git首次安装必须设置用户签名、否则无法提交代码
注意:这里设置的用户名和密码与将来登陆GitHub的账号没有任何关系
初始化本地库 git init
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo
$ git init
Initialized empty Git repository in D:/Joker/gitDemo/.git/
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ ll
total 0
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ ll -a
total 12
drwxr-xr-x 1 o 197121 0 5月 7 17:36 ./
drwxr-xr-x 1 o 197121 0 5月 7 17:35 ../
drwxr-xr-x 1 o 197121 0 5月 7 17:36 .git/
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$
查看本地库状态 git status
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ git status
On branch master //当前本地库所在分支master
No commits yet //并且当前没有提交过任何东西
nothing to commit (create/copy files and use "git add" to track) 目前没有文件需要提交
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$
###添加新文件joker.txt后查看状态
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ git status
On branch master
No commits yet
Untracked files: //发现了一个未被追踪的文件joker.txt (存在于工作区、没有追踪过)
(use "git add <file>..." to include in what will be committed)
joker.txt
nothing added to commit but untracked files present (use "git add" to track)
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
添加到暂存区 git add 文件名
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ git add joker.txt
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ git status
On branch master
No commits yet
Changes to be committed: //当前文件存在于暂存区中
(use "git rm --cached <file>..." to unstage)
new file: joker.txt
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
提交到本地库 git commit -m “日志文件” 文件名
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ git commit -m "first commit" joker.txt
[master (root-commit) ef2fe73] first commit
1 file changed, 1 insertion(+)
create mode 100644 joker.txt
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$
查看历史记录 git reflog
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ git reflog
ef2fe73 (HEAD -> master) HEAD@{0}: commit (initial): first commit
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
#查看详细日志 git log
commit ef2fe73a615c4fd62c58f8589ed6208bbb0867a7 (HEAD -> master)
Author: JokerRens <Joker_xxxx@163.com>
Date: Fri May 7 17:47:30 2021 +0800
first commit
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
Git分支
什么是分支
在版本控制中、同时推进多个任务、为每个任务,我们可以创建每个任务的独立分支、使用分支意味着可以把自己的工作从开发主线上分离开来、开发分支时候不会影响主分支运行。
分支的好处
1.同时推进多个功能开发、提高开发效率
2.各个分支在开发过程中开发失败、不会对其他分支产生任何影响,失败的分支可以删除重新开始
Git分支常用命令
git branch 分支名 | 创建分支 |
---|---|
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
创建分支 git branch 分支名 与 查看分支 git branch -v
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ git branch hot-fix
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ git branch -v
hot-fix ef2fe73 first commit
* master ef2fe73 first commit
*
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
切换分支 git checkout 分支名
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (hot-fix)
$ git branch -v
* hot-fix ef2fe73 first commit
master ef2fe73 first commit
o@DESKTOP-F746IH3 MINGW64 /d/Joker/gitDemo (hot-fix)
GitHub常用命令
git push 别名 分支 | 代码推送 |
---|---|
git pull 项目 分支 | 代码拉取 |
git clone 远程地址 | 代码克隆 |
团队协作机制:
SSH免密登陆
ssh-keygen -t rsa -C joker