目录
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安装:
- 在官网(Git for Windows)或者国内镜像网站(git-for-windows Mirror)下载对应版本exe文件并安装。
- 安装完成过后,可在"开始"界面中找到"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 initInitialized 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_HEAD28536b9..7792bcd master -> origin/master
Updating 28536b9..7792bcd
Fast-forwardREADME.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)