git基本使用

一、安装git

Linux:
先输入"git"看系统有没有安装git,没有就输入“sudo apt-get install git”,然后等待安装完成即可。
Windows:
git官网下载对应Windows版本的git安装包,然后按默认安装即可。
安装完成后在开始菜单找到git bash,命令行输入:

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

这相当于配置你这台机器的git凭证,使用–global参数,表示这台机器上的所有git仓库都使用这个配置。

二、git本地版本库操作

1、创建本地git版本库

cd进入到想要创建版本库的文件夹中,然后执行"git init"命令,git版本库就创建好了。它会在该目录下创建一个.git隐藏文件夹。这个文件夹就是git用来管理版本库的,这个版本库就相当于是svn的服务器,我们可以直接在本地进行版本管理。因为git是分布式版本管理系统,也就是说我们可以和其他机器上的版本库进行联系,可以相互进行提交下载等操作。但是在工作中,公司一般会搭建一台git服务器用作中央服务器,代码都托管到这,项目组成员之和服务器联系即可,和svn很想,但是git在本地是有版本库的,当没有网络时,我们可以在本地进行版本管理,等网络恢复后再提交到中央服务器即可。

2、把文件加到git版本库中

首先要确保文件和.git文件夹再同一个目录下(子目录也行)。总共分两步,

git add filename 
git commit -m "message" 

add命令表示将该文件或文件修改添加到暂存区,commit表示将暂存区里文件提交到版本库,可以多次add然后一次性commit。-m参数后面是对此次提交的说明信息0。必须要先add,然后再commit,否则你的修改是不会提交到版本库的
说明:
工作区:.git文件夹所在的目录就是一个工作区。
版本库:.git文件夹就是一个版本库,包含了暂存区以及各个分支的保存区,第一次创建会有一个默认的master分支。
暂存区:就是我们add后,文件保存的区域。
指针HEAD:指向你当前的分支

图片来源:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000

3、查看信息

git status         查看版本库的状态
git diff           查看具体修改的内容

git log            显示从最近到最远的提交日志,git为每次提交都分配了一长串的版本号
git reflog         查看历史命令

4、版本回退以及修改撤销

git reset --hard HEAD^        版本回退至上一个版本,上上版本则是 HEAD^^,上100个版本则是~100,也可以使用--hard 版本号
                             (版本号不必写全,前面几位就行,保证唯一性)

git每次提交都是一个版本,回退到上个版本其实就是回到上次提交后的状态。

git checkout -- filename       filename:文件名    撤销工作区的修改()
git reset HEAD <filename>        filename:文件名,可不写,就是把暂存区的所以修改都撤销                  撤销暂存区的修改

注意checkout 后的“–”。
当只再工作区修改,想撤销时使用checkout --命令。
当修改已经提交到暂存区还未到版本库时,先git reset HEAD,撤销暂存去修改,然后再git checkout – filename撤销工作区修改。
当修改已经提交到版本库(未提交到远程库)时,使用git reset --hard HEAD^ 命令回退到上一版本即可
删除:
1、确定删除:

git rm filename     删除文件

删除后需要commit才能生效。
2、误删:
使用git checkout – filename命令还原就行了,该命令其实就是用版本库里的版本替换工作区的版本,所以无论工作区是修改还是删除,都可以“一键还原”

5、分支管理

git分支相当多条于互不干扰的时间线,你在某个分支上工作,不影响其他分支,等工作完成后再把分支合并到主分支即可。

git branch name        创建分支
git checkout name      切换分支
git checkout -b name   创建并切换分支,相当于上面两条命令
git checkout -b dev origin/dev      本地创建并切换到dev分支,而且与远程库origin的dev分支建立联系
git branch             查看分支,当前分支前面有*
git merge name         把xx分支合并到当前分支
git branch -d name     删除分支
git branch -D name     强行删除分支,分支还没合并的情况下
git log --graph --pretty=oneline --abbrev-commit         查看分支提交合并记录
git merge --no-ff -m "merge with no-ff" dev                   合并dev分支到当前分支  --no-ff表示禁用git默认的Fast forward模式,此时会产生一次提交所以要加上-m参数。并且可以看到提交历史,默认合并是没有提交的
git rebase                把本地未push的分叉提交历史整理成直线,使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比

当使用merge 命令合并分支时,产生冲突的话,我们可以解决玩冲突,然后再提交即可。merge 的–no-ff参数表示使用普通的合并方式,不使用默认的fast forward模式。这时合并后会有分支的历史纪录,而fast forward再分支删除后是看不到分支信息的,看不出来是否做过合并。

工作现场保存:
假如你在开发功能时,需要紧急修复bug,这边工作还没完成不能提交。这时候就可以用到git保存工作现场功能了。我们可以把现在工作现场保存起来,然后创建bug分支,去bug分支解决bug,解决完bug,提交合并后,删除bug分支,然后再回到上次工作的分支恢复工作现场接着干活就行了。

git stash                   将当前分支工作环境存档(用于修改还没完成,这个分支还不能提交,但是有新bug需要紧急修复的情况)
git stash list              查看工作环境存档列表
git stash apply             恢复工作环境,但不删除存档,可以加上存档标识来恢复指定环境。
git stash pop               恢复工作环境,删除存档
git stash drop              删除存档

6、标签管理

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

git tag tagName                                     把当前分支打上标签,对应最新的commit
git tag                                             查看所以标签
git tag tagName  commitid                           为id为commitid的提交打上标签
git tag -a tagName -m "message" commitid            -a指定标签名,-m指定说明文字
git show tagname                                    查看说明文字
git tag -d tagName                                  删除标签
git push origin tagName                             将标签推送到远程库origin
git push origin --tags                              一次性推送所有的标签到远程库
git push origin :refs/tags/tagName                  删除远程库的标签,需要先删除本地标签

三、git远程版本库

1、SSH key设置

git可以使用多种协议,默认是是ssh协议,还可以使用HTTPS协议,我们使用ssh协议时就可以通过设置ssh key来方便我们连接远程库,否则,每次还需要输入账号、密码,也是很烦。
打开Shell(Windows下打开Git Bash),创建SSH Key:

ssh-keygen -t rsa -C "youremail@example.com"

使用自己的邮箱即可。中间会要你设置密码,也可以不输入直接跳过就行了。设置完后再用户主目录下会有一个.ssh目录。里面有id_rsa和id_rsa.pub两个文件,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,就是我们再github或者gitlab上设置的ssh key。

2、添加远程仓库

使用github或者码云都行,有些公司会使用gitlab托管代码。这里以github为例。假设你已经创建了一个本地仓库,现在想要把这个仓库放到github上托管。步骤:
(1)再github上新建一个仓库,然后复制这个仓库的链接地址(ssh或者https都可以)。
(2)再本地仓库执行git remote add origin git@github.com:dmfgithub1/reptile.git。origin是自定义远程仓库名,一般默认用origin就行了,后面的是你的git仓库地址。

3、克隆远程仓库

当你想把远程仓库的项目下载到本地时,就可以使用clone来实现

git clone git@github.com:dmfgithub1/reptile.git

这样就把远程仓库里的内容克隆到本地了,而且默认远程仓库名是origin。

4、操作远程库

和远程库建立好连接后,我们就可以提交代码,或者拉取代码了。
提交:

git push <远程主机名> <本地分支名>:<远程分支名>
git push -u origin master                    把本地库当前分支的所有内容推送到远程库上的master分支,-u 指定一个默认远程库,后续提交就不需要再加了。
git push origin dev                          推送最新修改, 推送本地dev分支内容到远程库的对应分支上,如果远程库没有该分支,则会新建一个。

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支

git push origin :master          删除远程库的master分支
等同于
git push origin --delete master

拉取:

格式:git pull <远程主机名> <远程分支名>:<本地分支名>
git pull origin             从origin远程仓库上抓取数据并自动尝试合并到当前所在的分支
git pull                   从远程库拉取与当前分支对应分支的最新内容,如果当前分支没有与远程库的任何分支建立联系(master克隆或者推送时就默认建立了联系),则会提示no tracking information。

git fetch origin            从远程仓库origin中拉取数据,需要手动合并
git branch --set-upstream-to origin/dev  dev      将本地dev分支与远程库dev分支建立联系。

其他:

git remote rename oldname newname 重命名远程仓库
git remote -v                   查看已经配置好的远程库信息 ,不加-v则只列出仓库名
git remote show origin          查看origin远程库的具体信息
git remote rm origin            删除远程仓库origin

5、连接多个远程库

我们本地库可以连接多个远程库,使用git remote add命令即可,但是要注意别名别冲突。

四、总结

本文是我在学习git时做的笔记,方便日后忘记时查看。主要是记录常用的git命令为主。主要参考了廖雪峰老师的git教程 ,讲了常用的git的用法。如果想要详细了解git命令,可以去易百教程学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值