【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
。比如同时关联github
和gitee
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
- 未跟踪,表示文件不受git管理,一般新建的文件处于该状态
- 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
- 点赞
- 收藏
- 关注作者
评论(0)