很是详细的 git 工具使用

2022年05月12日 阅读数:2
这篇文章主要向大家介绍很是详细的 git 工具使用,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1、我的独立开发git的使用

1. 注册github或者码云帐号(官网注册便可)

Git 官方下载地址:Git - Downloading Packagehtml

2.为仓库生成和添加SSH公钥

详细可访问:  生成/添加SSH公钥 - Gitee.comvue

3.Git全局设置

直接进入命令行工具(如cmd)中执行git

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

4.新建仓库 

注:按顺序执行如下全部命令github

1.在命令行工具(git或者cmd或者powershell)创建git仓库web

mkdir vue_shop  ----创建vue_shop文件夹
cd vue_shop  ----进入vue_shop文件根目录
git init  ----初始化git仓库
touch README.md  ----添加readme说明
git add README.md  ----把readme说明添加到暂存区
git commit -m "第一次提交"  ----把暂存区的文件推送到本地仓库
git remote add origin 新建仓库的SSH地址  ----将本地仓库与git仓库进行关联
git push -u origin master  ----将本地仓库主分支推送到git仓库

建议在github或者码云中直接新建仓库shell

2.若是已有仓库安全

cd existing_git_repo  ----此处能够直接进入项目根目录, 右键进入命令行工具(git或者cmd或者powershell)
git remote add origin 已有仓库的SSH地址
git push -u origin master  ----将本地仓库主分支推送到git仓库

5.在项目中开发新模块前(此时也能够直接在vscode中的终端进行,记得先点击+号新建终端) 

----如下蓝色命令为必需命令,黑色命令为检查命令,以防错误工具

在当前项目下fetch

git status  ----查看当前工做区状态(查看工做区是否干净)ui

git branch  ----查看当前是否在master主分支

git checkout -b login  ----建立新子分支login,并切换到login分支

 git branch  ----查看当前是否在login子分支

git  push -u origin login  ----将本地子分支login推送到git仓库(使git仓库中也有login这个分支),第一次推送不能直接用git push 

6.项目新模块开发完成后(此时能够直接在vscode中的终端进行,记得先点击+号新建终端)

git status   ----查看当前工做区状态(查看工做区内修改和新增的文件,这些文件状态都为红色,以及当前是否在login子分支)

git add .   ----将全部修改和新增的文件都添加到暂存区

git status    ----查看当前工做区状态(文件是否已所有添加,添加的文字状态都为绿色)

git commit -m "文本信息"    ----把暂存区中的全部文件提交到本地仓库,并添加注释信息

注:此时只是将本地仓库的代码进行了更新,还须要将git仓库的代码进行同步更新

git branch    ----查看当前所在分支,即login子分支(提交的文件都被提交到login子分支)

git push    ----将本地更新的login分支推送到git仓库中的login分支(git中已有login分支,非第一次推送login,直接git push 便可

注:如下是对本地仓库的操做

git checkout master    ----切换到master主分支(从login子分支切换到master主分支)

git branch    ----查看当前所在分支(是否在master主分支)

git merge login    ----基于master主分支,将login子分支的文件所有合并到master主分支

注:此时只是将本地仓库的代码进行了更新,还须要将git仓库的代码进行同步更新

git branch    ----查看当前所在分支(是否在master主分支)

git push    ----将本地更新的master推送到git仓库中(更新git中的master)

若是你对以上步骤不太清晰,请按顺序记住蓝色命令便可正确完成项目在git仓库中的更新。你也能够仔细阅读下面更详细的内容,方便你对git的理解。

2、Git操做的基本结构

  1. 工做区(Workspace):基本文件的存放区(开发位置)
  2. 暂存区(Index/Stage):基本文件添加到暂存区后才会被Git管理(提交、更新)
  3. 本地仓库(Repository):本地的文件管理区域,提交代码或者更新代码的位置
  4. 远程代码托管中心(Remote):联合开发时,统一的文件联网管理中心
  5. 关系图:

3、Git的经常使用命令

一、本地库的操做

(1)新建Git管理库

git init:在当前目录建立一个Git代码库
git init [project-name]:新建一个目录,将其初始化为Git代码库

(2)签名配置

签名是git提交代码时的用户标识 
用户签名:git config user.name “[name]” 、 git config user.email “[email address]”
案例:git config user.name “xxxx”、git config user.email “xxx@qq.com”

系统签名:git config --global user.name “[name]” 、git config --global user.email “[email address]”
注意: Git会采用就近原则,若是设置了用户签名就会覆盖系统签名

(3)查看信息

git status:显示当前git库全部有变量的文件(查看管理库的当前状态)

(4)暂存区的操做

git add [file1] [file2]:将工做区新增/修改的文件添加到暂存区
git add .:将当前目录下的全部文件添加到暂存区
git reset [file]:撤销暂存区的文件,工做区不变
git commit -m “备注” [file]:将暂存区的内容提交到本地库

(5)历史记录的操做

一、查看:
git log:显示当前本地库的历史提交记录
git log --pretty=oneline:以单行的方式简化显示本地库的历史提交记录
git log --oneline:以更简化的hash值显示本地库提交的历史记录
git reflog:显示当前历史版本的所有操做过程

二、版本的选择:
git reset --hard [版本的哈希索引值]:表示当前版本设置为指定的某个历史版本
git reset --hard HEAD^: 表示当前的版本后退一步,n个^表示后退n歩
git reset --hard HEAD~n:指定后退n歩

(6)找回删除的文件

删除的文件的操做已经提交的本地库:经过指定历史未删除的版本找回
删除文件的操做未提交到本地库:git checkout [file]

(7)文件差别比较

git diff [file]:将工做区的文件和暂存区的文件进行比较
git diff [hash索引值] [file]:将本地库的某个历史版本和工做区的文件进行比较
git diff:将工做区和本地库的全部文件进行比较

(8)分支的处理

一、什么是分支?
分支就是在当前的版本控制的主线上,复制一份出来,造成一个支线,全部的代码管理均可以对这个支线进行操做。对支线的操做不会对主线形成任何影响。这条支线就是所谓的分支。

二、分支的应用场景
在项目开发过程当中,可能会须要开发一些周期比较长而且不急于上线的功能,若是直接在当前的主线上进行版本控制,可能会对当前主线的代码形成污染,可是从代码的安全性角度来讲,又不能不进行版本管理,这个时候就能够考虑分支进行开发。

三、分支的操做
git branch -v:查看当前的分支状况
git branch [分支名]:建立分支
git checkout [分支名]:切换分支
git push origin --delete [分支名]:删除远程分支(须要将分支切换到master才能删除其余子分支)
注意:切换分支的时候,工做区中没有提交到本地库的文件会继续保留,被提交到工做区的文件有可能会消失

git merge [有新内容的分支名]:合并分支
注意:合并分支的时候,须要定位到被合并的分支上,而后再执行merge命令将有新内容的分支合并过来。
好比:须要将分支1合并到主分支上,
先要经过git checkout [主分支] 的命令定位到主分支,
再执行git merge [分支1]的命令进行合并

四、冲突的解决:
若是主干和分支都修改了某个文件的相同的位置,就会发生所谓的冲突,这个时候须要进行冲突的解决:
一、找到冲突的文件进行编辑
二、按照具体的业务需求修改为合适的状况
三、git add添加修改后的文件到暂存区
四、git commit命令提交修改后的文件到本地库

git branch --merged:查询哪些分支合并入当前分支
git branch --no-merged:查询没有和当前分支合并过的其余分支
git branch -d [分支名]:删除分支
注意:若是该分支没有合并到主分支,则会删除失败,须要经过
git branch -D [分支名] 的方式强制删除

二、远程库的操做

git remote -v:显示全部远程仓库
git remote add [alias] [url]:新增一个远程仓库
git push [alias] [分支名]:将指定分支推送到远程仓库上
git push [alias] --all:推送全部分支到远程库
git clone [url]:克隆远程仓库的文件到本地库,而且初始化本地库
git pull [alias] [分支名]:将远程仓库上的变更拉取到本地库而且合并

三、拉取项目中的某一个文件

下面以克隆开源项目druid下的/druid/doc目录为例

$ mkdir druid
$ cd druid  
$ git init // 初始化空仓库
$ git remote add -f origin https://github.com/alibaba/druid.git // 关联远程地址 ,这一步不要终止执行,否则下面操做无效
$ git config core.sparsecheckout true // 开启Sparse Checkout模式
$ echo "doc" >> .git/info/sparse-checkout // 设置需Check Out的文件。直接从项目目录下开始
$ git pull origin master // Check Out
... ...

四、clone 项目后与另外一个仓库关联

  1. 取消项目与当前仓库的远程连接:
    git remote rm origin
  1. 创建项目与目标仓库的远程连接:
    git remote add origin xxxxx
  2.  将项目推送到目标仓库:
    git push -u origin master

五、拉取目标仓库中项目的部分文件

  1. 建立新文件夹
    mkdir project


  2. 进入该文件夹
    cd project


  3. 初始化 git 本地仓库
    git init


  4. 将远程 git 仓库与本地仓库关联
    git remote add -f origin <url>


  5. 开启 Sparse Checkout模式
    git config core.sparsecheckout true



  6. 选择须要 clone 的文件,做为列表保存到 .git/info/sparse-checkout 中
    echo “test.txt” >> .git/info/sparse-checkout
    echo “test/test1” >> .git/info/sparse-checkout
    echo “test” >> .git/info/sparse-checkout
  7. 从分支中拉取须要的文件
    git pull origin master
  8. fork 和 clone,fetch 和 pull 的区别
  9. PR 操做