git使用心得

本文参考孟宁老师的文章:https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg

git的基本操作

使用git --help命令可以查看Git命令用法和常用的Git命令列表。

准备工作

 

Windows直接在官网 https://git-scm.com/downloads 下载

本文主要从四个场景对Git的使用进行一些分享

场景一:Git本地版本库的基本用法

在VS Code中,使用Ctrl+Shift+G打开源码管理,如下图,可以直接点击(初始化存储库)按钮,初始化一个Git本地版本库。

 

如果使用命令行的话,只需要在项目根目录下执行git init命令即可完成初始化一个Git本地版本库。

 

如果在Gitee.com或者Github.com网站上创建了版本库,可以通过git clone命令,将版本库克隆到本地完成本地版本库的初始化。

 

不管使用何种方法初始化一个Git版本库,实际上都是在项目根目录下创建了一个.git文件夹,通过.git文件夹可以了解Git版本库内部数据库的存储结构。

在VS Code中使用Ctrl+Shift+G打开源码管理,可以看到与上一个版本比,项目的所有更改,即当前的workspace的状态。

 

 

 

使用命令行的话,还可以在项目目录下执行git status命令即可查看Git本地版本库当前workspace的状态。

 

VS Code中,在(更改)列表里的的文件上点击“+”即可暂存更改,是将更改的文件加入在(暂存的更改)列表里,点击撤销符号即可放弃更改,是将该文件中的更改清除掉。

 

上图中,在(暂存的更改)列表里的文件上点击“-”即可取消暂存更改,将暂存更改的文件从(暂存的更改)列表里取消,重新回到(更改)列表里。

 

把暂存区里的文件提交到仓库,使用VS Code在提交后,可以进行撤销上次提交,但是会在仓库里留下记录。

 

使用命令行的话可以使用git commit命令。

 

小结:

场景一主要是在本地对源代码进行的基本的版本控制,主要用到的命令有:

git init # 初始化一个本地版本库
git status # 查看当前工作区(workspace)的状态
git add [FILES] # 把文件添加到暂存区(Index)
git commit -m "wrote a commit log infro” # 把暂存区里的文件提交到仓库
git log # 查看当前HEAD之前的提交记录,便于回到过去
git reset —hard HEAD^^/HEAD~100/commit-id/commit-id的头几个字符 # 回退
git reflog # 可以查看当前HEAD之后的提交记录,便于回到未来
git reset —hard commit-id/commit-id的头几个字符 # 回退

 

场景二:Git远程版本库的基本用法

如果在Gitee.com或者Github.com网站上创建了版本库,可以通过git clone命令,将版本库克隆到本地完成本地版本库的初始化。

 

这里使用git clone之后默认的分支,即远程为origin/master和本地master,没有创建其他分支。管理本地版本库跟踪的远程存储库的命令为git remote。

直接输入git remote可以看到git clone之后默认的远程存储库名称为orgin

 

在VS Code中版本库同步操作已经简化为了一个菜单命令。

 

 

 

首先通过git pull拉取远程仓库里的提交项到本地仓库并合并到当前分支,即将origin/master中的提交项fetch到本地仓库并merge到本地master分支。在VS Code中版本库中有一个菜单命令可以完成git pull的功能。

 

 

 

 

 

 

 

通过git push可以将本地仓库中的提交项推送到远程仓库,即可完成本地仓库和远程仓库的同步。在VS Code中版本库有一个菜单命令可以完成git push的功能。

 

 

 

小结:

git clone命令官方的解释是“Clone a repository into a new directory”,即克隆一个存储库到一个新的目录下。

git fetch命令官方的解释是“Download objects and refs from another repository”,即下载一个远程存储库数据对象等信息到本地存储库。

git push命令官方的解释是“Update remote refs along with associated objects”,即将本地存储库的相关数据对象更新到远程存储库。

git merge命令官方的解释是“Join two or more development histories together”,即合并两个或多个开发历史记录。

git pull命令官方的解释是“Fetch from and integrate with another repository or a local branch”,即从其他存储库或分支抓取并合并到当前存储库的当前分支。

 

场景三:团队项目中的分叉合并

如果团队项目像场景二的方法一样多人同时向远程origin/master分支频繁提交代码,一来可能会有诸多冲突合并的情况发生,二来整个git log提交记录中的多个开发者或多个代码模块的commit是交错排列在同一条时间线上,不利于回顾查看和回退代码,让跟踪代码的成长轨迹变得异常困难。

团队项目的每一个开发者都采用的工作流程如下:

(1)克隆或同步最新的代码到本地存储库;

(2)为自己的工作创建一个分支,该分支应该只负责单一功能模块或代码模块的版本控制;

(3)在该分支上完成某单一功能模块或代码模块的开发工作;

(4)最后,将该分支合并到主分支。

 

在VS Code中创建分支方法如下:

 

 

 

使用Git命令创建分支:

 

 

 

这时要将当前工作区切换到master分支只需要使用git checkout master命令即可,在VS Code中可以使用(签出到)菜单,然后选择要签出的master分支即可完成分支切换。

 

 

 

要将mybranch合并到master,在VS Code中如图所示:

 

 

 

小结:

(1)克隆或哦同步更新的代码到本地存储库:

git clone https://gitee.com/mjq98/USTC-software.git
git pull

(2)为自己的工作创建一个分支,该分支应该只负责单一功能模块或代码模块的版本控制:

git checkout -b mybranch
git branch

(3)在该分支上完成某单一功能模块或代码模块的开发工作,多次进行如下操作:

git add FILES
git commit -m "commit log"

(4)最后,先切换回master分支,将远程origin/master同步更新到本地存储库,再合并mybranch到master分支,推送到远程origin/master之后即完成了一项开发工作。

git checkout master
git pull
git merge --no-ff mybranch
git push

场景四:Git Rebase

在场景三团队工作流程中增加一步Git Rebase,即在mybranch分支上完成自己的工作之后,为了让log记录将来更容易回顾参考,在git rebase重新整理一下提交记录。注意不要通过rebase对任何已经提交到远程仓库中的commit进行修改。

Git命令:

git rebase -i [startpoint] [endpoint]

其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支的HEAD。

一般只指定[startpoint] ,即指定从某一个commit节点开始,可以使用HEAD^^、HEAD~100、commit ID或者commit ID的头几个字符来指定一个commit节点,比如下面的代码指定重新整理HEAD之前的三个commit节点。

git rebase -i HEAD^^^

想撤销git rebase操作的话,可以执行如下命令:

git rebase --abort

 

posted @ 2020-10-13 22:21  渣渣渣er  阅读(79)  评论(0编辑  收藏  举报