文章很长,详细介绍了Git的种种,新手学习起来大概要2到3个小时,不要轻易就打退堂鼓,毕竟什么事情都不是一蹴而就的,要有耐心。
目录
(一)什么是Git?
- Git是代码的版本控制工具,我们可以用Git管理自己的代码。
- 最终我们的代码是要上传到自己的远程仓库的,或是从远程仓库克隆(完全拷贝到本地文件夹)过来。
- 我们在不同时间段上传的代码Git都可以记录下来并做一个直观明了的对比,增、删、改列的清清楚楚,可以随时恢复,下载。
- 工作中基本都会用到,尤其是多人协作时
(二)Git的下载安装
- 官网下载git并安装到电脑中,注意安装时勾选以下选项
- 安装完成后会出现开始页面会出现Git Bash、Git CMD、GitFAQs、Git GUI、Git Release Notes这五个程序
- 一般只会用到Git Bash(
Windows
系统安装Git
时默认集成的命令行工具,提供运行Git
命令的集成环境),接下来的叙述中也只用到Git Bash
(三)Git Bash的相关命令行
Git Bash和Linux命令行类似,以下列举一些常用命令
- cd 改变目录,如在Git Bash中输入cd F:\pdf回车后会进入这个目录(注意空格)
- cd.. 回退到上一目录
- pwd 显示当前所在目录
- touch 新建一个文件,如touch demo.js就会在当前目录新建一个demo.js的文件
- rm 删除一个文件,如rm demo.js就会删除demo.js文件
- mkdir 新建一个目录,就是新建一个文件夹
- rm -r 删除一个文件夹,如rm -r src 会删除src目录
- mv 移动文件,如mv demo.js src demo.js(移动demo.js文件到src目录中)
- clear 清屏(保留此终端状态)
- reset 重新初始化终端
- history 查看历史命令
- help 帮助
- exit 退出
建议先在Git Bash中熟悉下这些命令
(四)Git的原理
Git在本地有三个工作区域:工作区--暂存区-仓库区,在加上远程的Git仓库一共四个区域!
- 工作区(Workspace):平时存放项目代码的地方
- 暂存区(Index/Stage):存放临时的变动
- 仓库区(Repository):本地的git仓库,这里有所有已提交代码的版本数据,其中的HEAD是最新提交的版本
- 远程仓库区(Remote):远程仓库,托管代码的服务器,可理解为一个云平台
我们的代码要想提交到远程仓库必须要经过这四个区域!
- 工作区->暂存区->仓库区->远程仓库区(代码最终的归宿)
我们稍后再讲如何操作
(五)Git本地的相关配置
1、 创建账户名
Git Bash中使用命令git config - -global user.name "喜欢的名字"
2、 创建邮箱地址
使用命令git config - -global user.email "你的邮箱地址"(要用自己的)
3、查看配置信息
使用命令git config -l,找到最下面两行,就是我们上面所配置的信息
或使用命令git config --global --list,会直接显示信息
也可以在C盘用户目录下找到.gitconfig文件查看(注意不要损坏文件)
(六)创建远程仓库
配置完了Git的相关信息,不要着急,代码还没有家呢。
注册Github或是Gitee账号,创建一个仓库,这部分就不说了哈,但是建议使用Gitee哦!毕竟GitHub是国外的,隔了一道墙使用起来有诸多不变,经常进不去。Gitee是国内的,也就多多支持下,咱们只是用仓库托管代码,二者的使用其实是完全相同的。
记住我们的仓库地址:https://gitee.com/~~~/~~~.git(这里举个例子,打不开的)
(七)开始操作!!
1、新建一个文件夹
进入此文件夹中,鼠标右键点击Git Bash Here
2、建立本地仓库
执行命令git init #会生成.git隐藏文件夹,存放相关信息
3、本地目录连接远程仓库
git remote add origin https://gitee.com/~~~/~~~.git #远程仓库地址
4、上传到暂存区
git add . #上传之前也可以在这个目录下添加一些自己的文件,待会能看到
5、从暂存区到本地仓库
git commit -m "注释" #注释中填写此次上传的备注
6、上传到远程仓库
git push origin master #这里会让输入Git仓库的账号密码,待会介绍免密码上传
7、查看上传的文件
直接进入git仓库中就能看到刚刚上传的文件啦
8、再次提交代码
把文件拖到此目录下,在执行下4-6的操作就行啦,不过我们一般配合其他的编译器比如vsc、IDEA使用,其内置的Git工具可以很方便的执行,不用每次都输入命令行了,下面会介绍在vsc中如何快捷提交代码
(八)配置免密码登录
以gitee为例!github同理,小伙伴们自己探索一下呗
1、生成SSH公钥
ssh-keygen -t rsa -C "邮箱地址" #连续三次回车出现图形表示成功
2、查看公钥并复制下来
cat ~/.ssh/id_rsa.pub #第一种查看方式
进入C盘用户目录中有个刚刚生成的文件 .ssh,在其中查看公钥 ##第二种查看方式
3、粘贴公钥
到gitee的个人设置->安全设置->ssh公钥,确定即可,下次提交代码就不用输入账号密码了。
(九)克隆到本地
看到别人的开源项目非常棒,想拿来用怎么办?别急,一招搞定!
Git Bash中执行命令git clone https://gitee.com/~~~/~~~.git,看看自己的文件夹中是否多了一项呢,如下表示成功克隆
(十)文件操作
选择性观看!
1、文件的4种状态
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道当前文件在什么状态,不然可能会提交不上(能看懂的尽量哦)
- Untracked(未跟踪):此文件是我们新加入的,并没有加入git库中,通过git add状态变成staged的暂存状态(仔细阅读了前面部分的小伙伴一定没问题吧,也就是对第七部分的详解)
- Unmodify(文件已入库,未修改):即版本库中的文件快照内容与文件夹完全一致。这种类型的文件夹有两种去处,如果他被他被修改,而变为Modified,如果使用git rm移出版本库,则成为Untracked为跟踪文件。
- Modified:文件已修改,仅仅是修改,并没有进行其他操作。这个文件也有两个去处,通过git add可进入暂存staged状态,使用git checkout 则丢弃修改过,返回到unmodift状态,这个git checkout即从库中取出文件,覆盖当前修改。
- Staged(暂存状态):执行git commit则将修改同步到库中,这时库中的文件和本地的文件又变为一致,文件Unmodify状态执行git reset HEAD filenama取消暂存,文件状态为Modified
2、查看文件的状态
git status #查看该目录下所有文件的状态,以便我们执行相应操作
git status [filename] #查看指定文件状态
3、忽略文件
有时候我们不想把某些文件纳入版本控制中,比如数据库文件、临时文件、设计文件等等
只需要在主目录下建立“.gitignore”文件,便可忽略相应的文件,此文件有以下规则:
- 忽略文件中的空行或以井号(#)开始的行将会被忽路。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2.…})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
- *.txt #忽咯所有 .txt结尾的文件,这样的话上传就不会被选中!
- !lib. txt #lib.txt除外都被忽略
- /temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*. txt #会忽略doc/notes.txt 但不包括 doc/server/arch.txt
比如我的.gitgnore文件
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
(十一)如何在vsc中快捷提交代码
-
打开已经git好的文件夹
-
随便先写一个文件代码并ctrl+s保存
-
会看到在左侧的一个树杈上出现了一个下标
-
点击树杈,点击加号,表示提交到暂存区 相当于git add
-
点击对号后表示要提交到本地仓库,会出现一个输入框,我们输入提交的信息,回车 相当于:git commit -m "注释"
-
我们点击同步更改(相当于 git push origin master )稍等片刻就提交到远程仓库啦
(十二)常见错误分析及解决
在代码提交过程中我最常遇到的就是下面这种情况,导致无法提交至远程仓库
问题原因:远程库与本地库不一致造成的,把远程库同步到本地库就解决了
解决办法:执行命令git pull --rebase origin master
该命令的意思是把远程仓库中的更新合并到本地仓库中,--rebase的作用是取消掉本地仓库中刚刚的commit,并把他们接到更新后的版本库之中。出现如下图执行pull执行成功后,可以成功执行git push origin master操作。
文章到此就结束啦,如有不足或是错误之处还请多多指出。
创作不易,看到这儿就给个支持呗~~ ~