【Git学习】二、Git快速上手使用

举报
ReCclay 发表于 2022/02/22 02:02:54 2022/02/22
【摘要】 善用git status命令,可以根据提示进行提交还是放弃!!! 一、Git简介 1、Git是什么 Git是一个开源的分布式版本控制系统,用来进行项目版本管理。其实就是一个软件,由一组...

善用git status命令,可以根据提示进行提交还是放弃!!!


一、Git简介

1、Git是什么

Git是一个开源的分布式版本控制系统,用来进行项目版本管理。其实就是一个软件,由一组命令组成,能够对项目代码进行版本控制。

2、Git工作流程

在这里插入图片描述

基本流程

  • 使用git命令将远程仓库上的文件克隆岛本地仓库中
  • 从本地仓库中检出文件到工作区(一般都自动完成)
  • 将新创建的文件添加到暂存区
  • 将暂存区中的内容提交到本地仓库
  • 将本地仓库中内容推送到远程仓库上

二、快速上手使用方法

1、设置身份

git config --global user.name "CLAY"
git config --global user.email "recclay@foxmail.com"

  
 
  • 1
  • 2
2、验证身份

git config --global user.name
git config --global user.email

  
 
  • 1
  • 2
3、进入项目目录

cd ×××

  
 
  • 1
4、创建代码仓库

echo "# testGit" >> README.md
git init

  
 
  • 1
  • 2

此时会自动生成.git文件,通过ls -af指令可以查看详细文件。

版本目录:.git所在目录就是版本库目录,将来文件都需要保存到版本库中。

工作目录:.git目录的上一级目录,只有工作目录中的文件才能保存到版本库中。

5、加入到暂存区

加入当前目录的全部文件

git add .

  
 
  • 1

想加入单个文件(夹)

git add ×××

  
 
  • 1

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。如下图所示:

在这里插入图片描述

6、提交到当前分支

git commit -m "First commit."

  
 
  • 1

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

注:有时做了提交后,发现提交的代码有问题,想要撤回到某次提交的方法。

首先需要用git log 查看你需要回退到的提交的commit ID,也就是对应的哈希值,如下图方框中所示。

想要退出,按下q键即可
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数,即git log --pretty=oneline

在这里插入图片描述

使用git log --graph --pretty=oneline --abbrev-commit可以查看分支合并图

然后可以使用git reset命令,但是这个命令的参数有两个。

git reset --soft commitID   //只删除commitID之后的提交记录log,代码的改动还在。
 
git reset --hard commitID   //彻底删除commitID之后所做的改动,代码也一起回退回来了。 (慎重用,用前最好备份一下代码,或者用git diff 生成一个patch)
 

  
 
  • 1
  • 2
  • 3
  • 4

在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。【就近版本可以避免查找commit ID】


回退到过去的某个版本后,想再回到最新的版本,会发现git log里面没有最新的了,这个时候怎么办呢?
方法一:若命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个最新版本的commit id,于是就可以指定回到未来的某个版本。
方法二:git中有个git reflog用来记录你的每一次命令,该命令输出开头有对应每个版本的commit id

7、上传到Github
git remote add origin https://github.com/ReCclay/testGit.git
git push -u origin master

  
 
  • 1
  • 2

git remote add 仓库别名 仓库地址,添加远程仓库地址,并把仓库起名为origin

git push 名称 分支将本地仓库指定分支推送到远程仓库,即推送本地的master分支到origin(仓库别名)

另外,第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。


查看远程库信息:git remote -v


更换上传的github地址,可以git remote rm origin ,重新添加远程仓库地址!


当然一个本地仓库可以关联多个远程仓库,只是起名的时候别再都起成origin。比如同时关联githubgitee

8、从远程仓库更新代码到本地

若在push过程中,出现如下错误Updates were rejected because the tip of your current branch is behind,这个表示远程仓库被更改,与本地仓库不一致。

解决办法有下面几种

I、强制push

当然确保强制push没有问题的话,也可以强制push。输入以下命令git push -u origin master -f

II、将远程仓库更新代码到本地。

Git中从远程的分支获取最新的版本到本地有这样2个命令:
①、git fetch:相当于是从远程获取最新版本到本地,不会自动merge(合并代码)

法①:
git fetch orgin master //将远程仓库的master分支下载到本地当前branch中
git log -p master  ..origin/master //比较本地的master分支和origin/master分支的差别
git merge origin/master //进行合并

法②:
git fetch origin master:tmp //从远程仓库master分支获取最新,在本地建立tmp分支
git diff tmp //將当前分支和tmp進行對比
git merge tmp //合并tmp分支到当前分支

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

更多git diff的用法,可参考<这篇博客>

②、git pull:相当于是从远程获取最新版本并merge到本地。其实相当于git fetch和git merge。【慎用,会直接合并本地!】

git pull origin master

  
 
  • 1

在实际使用中,git fetch更安全一些。因为在merge前,我们可以查看更新情况,然后再决定是否合并。

pull操作相当于fetch+merge

III、新建分支new
git branch new
git push -u origin new

  
 
  • 1
  • 2

若出现fatal: TaskCanceledException encountered的错误,并且每次push都需要输入用户名和密码,可以执行以下指令。
git config –global credential.helper store

三、常见Git命令

命令 作用 备注
git init 初始化本地Git仓库(项目) 会在当前目录中新建一个.git目录,用于记录所有的版本变更信息
git status 查看本地仓库的文件状态 见下面的注2
git add +文件路径 将文件添加到暂存区index(跟踪列表tracked),交由git管理 .表示添加所有文件
git commit 将暂存区的文件提交到本地仓库 -m指定提交日志
git log 查看提交日志
git reset --hard 版本id 回退到指定版本 HEAD表示当前的版本
git reflog 查看所有操作记录 包括被回退的版本id、reset操作等
gir remote add 仓库别名 远程仓库地址 添加远程仓库地址 仓库名可以自定义,一般默认使用origin
git remote -v 查看远程仓库信息 fetch抓取,push推送
git remote rm 名称 删除远程仓库地址
git push 名称 分支 将本地仓库指定分支推送到远程仓库 一般为master主分支,默认推送到远程仓库的同名分支,没有则新建
git pull 名称 分支 拉去远程仓库指定分支中的新数据到本地 会与本地仓库进行merge核名(更新操作,非第一次)
git clone 远程仓库地址 克隆远程仓库的项目到本地 用于从远程下载git项目(第一次) 【与git pull区别见注3】

注1:所有命令必须在Git仓库的根目录下进行

注2:文件状态

在这里插入图片描述

Git文件的四种状态:

  • untracked
    • 未跟踪,表示文件不受git管理,一般新建的文件处于该状态untracked files
  • staged
    • 已暂存,表示已对修改的文件做了标记,使之包含在下次要提交的文件的跟踪列表中changes to be committed
  • committed
    • 已提交,表示文件已经被提交到本地仓库committed
  • modified
    • 已修改,表示文件内容已被修改,但没有做标记changes not staged for commit

注3:git pull与git clone的区别

  • clone是没有本地仓库时,将远端的整个项目下载下来
  • pull是有本地仓库时,将远程仓库里新的数据更新过来,并且与本地代码进行merge合并操作

文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。

原文链接:recclay.blog.csdn.net/article/details/81561282

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。