Git

Git常见使用场景及命令

2019-09-29  本文已影响0人  释梦石

Git是什么

git目前最先进的分布式版本控制系统。

使用git之前,我们先了解git的几个概念

Git的常见使用场景及命令

使用git的第一步,我们需要和远程仓库建立起链接

  1. 克隆远程仓库

直接执行: git clone http:....git,(远程仓库地址),这样我们的本地就有了一个和远程仓库一样的本地版本库,我们可以使用 git remote -v 查看一下关联信息。我们可以在这个仓库里做修改,然后推送至远程

  1. 将一个已存在的文件夹推送至远程仓库

如果你还没有克隆现有仓库,并欲将我们的本地仓库连接到某个远程服务器,就可以使用如下命令添加,首先,git init ,用以初始化仓库,即把你的本地文件交给git管理,然后我们执行: git remote add origin http:....git,(远程仓库地址),这样我们就把本地的git仓库和远程仓库建立起了连接,同样我们可以使用 git remote -v来查看一下关联信息。然后就可以正常使用你的本地仓库了。执行git pull 的时候会提示你的master分支分支没有添加追踪信息,可使用:git branch --set-upstream-to=origin/master master,来添加追踪信息。如此你就能够将你的改动推送到至远程仓库上去了。

提交修改
解决冲突

如果,我们执行git pull --rebase 时,远程仓库里的文件跟你本地的同一个文件的同一行存在不一致就会有冲突。(或者merge时,两个分支的同一个文件同一行不一致时也会有冲突)这时,我们需要解决完冲突之后,继续合并。
查看冲突: git diff。
冲突:

<<<<<<<<<<<<<<<<
已经存在的文件内容
===================
本地文件内容
>>>>>>>>>>>>>>>>>>>>>

保留需要保留的部分,解决完冲突之后,我们使用,git rebase --continue 来继续合并。然后就可以继续我们的操作了

分支管理

分支是用来将特性开发绝缘开来的。在你创建仓库后,master是默认的,可在其他分支上进行修改,完成后再将他们合并到主分支上。每一人的每一个本地项目都有一个master分支

如果,我们新建的分支使命已经完成了,我们也不再需要它了,这时,我们可以执行
git branch -d name命令来删除这个分支。
删除远程分支:
git push origin -d name

stash暂存

前边我们已经提到了暂存的概念,当开发过程中(分支上有修改代码),但又需要切换分支时,就可将修改暂存后再切换分支,这样就可以省去一次commit。那我们应该怎么使用他呢,这里我们做个详细的说明,

stash 和add并不是一样的,stash保存当前的工作进度。会分别对暂存区和工作区的状态进行保存。git stash的作用是索引中的内容暂时存到一个堆上。而且这个堆是和分支不相关的。而git add命令将文件内容添加到索引(将修改添加到暂存区)。也就是将要提交的文件的信息添加到索引库中。stash命令:git stash save "name"。我们可以使用, git stash list 命令来查看当前有多少暂存。stash列表编号从@{0}开始,最近的一次保存编号为0. 新增代码+文件: git stash save -a "message",类似于:git commit -a -m "message".
取出暂存可以执行: git stash pop name ; 或者 git stash apply stash@{id}。需要了解的是,pop会把取出的stash删除,apply则会继续保存stash).删除某个stash:git stash drop stash@{id},删除所有stash:git stash clear

撤销修改

如果你远程上传了一个文件需要修改或者不想要了,直接在本地修改或者删除就好了,然后使用git add ,git commit 提交修改 ,然后push上传至远程(删除文件也要执行git add,add的作用是把修改放到暂存,增删改都属于修改)

撤销修改有三种类型:

可以使用checkout撤销: git checkout -- file 放弃对某个文件的修改 (checkout撤销时,必须要加 --参数,要不然就成了切换分支的操作了);或者使用git checkout . 放弃对所有修改

可以使用 git reset HEAD file 。本地修改被撤销至暂存区,然后使用步骤1的命令撤销修改

可以使用 git reset --hard HEAD^ ,来撤销本地修改

版本回退

如果我们的远程仓库有问题,想要做版本回退来回退到没有问题的版本

执行: git reset --hard HEAD^ ,可回退至上个版本

我们可以使用 git log来查看提交历史,想回退到某个版本,可以执行:git reset --hard HEAD 版本号,当然,如果你想回退到最新的第十个版本:git reset --hard HEAD~10,回退之后别忘了git push ,把操作推送到远程,否则,你做的任何修改都只是在你的本地。push成功后,版本被回退且提交记录也会删除,这时git log查询不到被删除的记录

如果你发现回退错了,需要回退至未回退之前的版本,我们可以使用 git reflog 查看历史,找到版本号你想回退的版本号,执行,git reset --hard HEAD 版本号 ,这个命令回退至此版本。本地回退成功,再push到远程即可。

还是要提醒一下,版本回退,一般是遇到比较大的问题时才会做,做之前最好通知一下本组其他同事。以防别人已经拉下了你的代码,已经在新的提交节点开始工作了。

Git其他常见命令及配置

执行:git status 命令用来查看本地文件的状态(是否被add或者commit),建议执行过程中,确认一下状态,可以减少我们出错。有时候执行完status后,名称含有中文的文件名显示不正常,我们可以配置一下中文显示:git config --global core.quotepath false 。

每个使用git向远程仓库推送文件的人都需要自报家门,需要告诉git你是谁

我们可以使用如下命令来配置我们的全局用户名和邮箱: git config --global user.name "***", git config --global user.email "*****@****"。

当然你也可以针对某个远程仓库单独设置用户名和邮箱:git config user.name "***";git config user.email "*****@****"

查看配置的用户名邮箱:
git config user.name
git config user.email

取消全局配置:
git config --global --unset user.name
git config --global --unset user.email

git常见乱码解决
windows上中文乱码解决
$ git config --global gui.encoding utf-8

$ git config --global i18n.commitEncoding utf-8

$ git config --global gui.logOutputEncoding utf-8

git status后显示乱码

$ git config --global core.quotepath false

从gitlab拉取ssh的代码

基于ssh加密的管理的代码需要配置ssh key

我们可以先查看一下本地是否有ssh密钥: cd ~/.ssh

git-ssh.jpg

如果有,直接复制.pub中的密钥
如果没有,需要设置git用户名和邮箱,生成密钥
$ ssh-keygen -t rsa -C "你的邮箱"按3个回车,密码为空。(可输入可不输入)得到了两个文件:id_rsa和id_rsa.pub

最后,我们打开id_rsa.pub文件,复制密钥,登录gitlab,在个人中心打开setting。切换到SSH key,粘贴复制好的秘钥,点击Add key,添加成功之后就可以拉取代码了。

上一篇 下一篇

猜你喜欢

热点阅读