git安装使用以及常用命令

GIT的使用

msysgit是Windows版的Git,从Redirecting Git for Windows' homepage...下载,然后按默认选项安装即可。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

安装完成后,还需要最后一步设置,在命令行输入:

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

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

创建GIT仓库

1.创建存放git的文档目录(新建一个文件夹)mkdir mycode

2.进入这个文件夹的目录 cd mycode

3.在这个文件夹下执行git init 命令,创建一个仓库

4.告诉git ,我们要跟踪哪些文件的修改,默认git只能跟踪文本类的文件修改,不包括图片、视频等。Git add * or 具体的某个文件git add 文件名

5.把我们的文件正式提交到仓库中去 git commit -m 备注的信息,最好备注下

小结:

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

第一步,使用命令git add,注意,可反复多次使用,添加多个文件;

第二步,使用命令git commit,完成。

查看状态

git status 查看我们跟踪文件的状态,时刻掌握我们的仓库状态

git ls-files 查看缓存区文件

git diff 查看具体哪儿被修改了,新增的内容又是哪些

如果我们修改了我们的文件,那么我们就需要继续的add commit 提交最新的修改。

注意:git commit -a 合并了add commit 两个操作,只不过它只适用于旧文件的修改,新文件依然要添加add commit 这样

如果出现被锁的情况,只需要删除.git 下面的index.lock 文件即可 rm .git/index.lock 具体原因不明

Git commit -a 后会出现 vim编辑器,这个编辑器的简单使用掌握下就OK了

要随时掌握工作区的状态,使用git status命令。

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

·

查看我们的记录log

我们不停的修改,提交,修改,提交!

在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

对的,我们所有的修改提交都有记录在这里,并且可以通过命令来还原原来的版本

git log 查看当前的操作记录

Git reset --hard 版本编号ID 或者是HEAD ^ 回到上一个版本中去

当你从新版本回到老版本的时候,我们的新版本自然就消失了,所以,如果你想回复到新版本的状态,你可以使用

Git reflog 查看下你每次的操作命令,并记录下版本ID编号,再次使用

Git reset --hard 版本编号ID 回到新版本中去。

现在总结一下:

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

也就是说

现在有3个版本

版本号:333

版本号:222

版本号:111

我现在用git reset —hard 222 退回到222版本,

git log 后 就看不到333版本了

必须要用git relog才能看到222之前的333版本号

然后在通过git reset —hard 333 恢复到333

理解概念:工作区,暂存区,仓库

add的操作是把所有的更改暂时放在暂存区,commit 操作就是真正的提交我们的代码

如果你试图修改,绕过了add部分的话,你提交的代码是无法真正进入仓库的,这是因为commit 的是暂存区内的内容,而你必须将你所做的修改add到暂存区才能commit成功

撤销你的修改

1.当你只是在源文件中修改了,而并没有add到暂存区的情况

2.当你不仅在源文件中修改了,并且还add了到了暂存区,索性的是你并没有commit 的时候

3.当你已经commit 提交到仓库的时候

下面,分别尝试着解决这三种情况

没有添加也没有提交的时候用:git checkout . 撤回修改

1.git checkout -- 修改的文件名 感觉更像把暂存区退回到了工作区

感觉有点像把暂存区的内容拉到本地去

2.git reset HEAD readme.txt (文件名) 把暂存区的修改回退到工作区,也就是退回add之前的状态,最后再次git checkout readme.txt 结束

感觉更像是从仓库一路退回到了暂存区,然后又退回到了工作区

3.如果你已经commit 了,就直接用版本回溯到之前的版本就OK了

感觉reset命令就是为了在不同的仓库版本中切换

所以,这就是一级一级的退

删除文件

尽量用git rm 文件名删除(暂存区中删除),然后git commit 提交到版本库

如果误删的情况下,也就是说你只是在工作区误删了文件的话,可以用git checkout -- 文件名恢复(从暂存区恢复)

第一步 : 在需要git 管理的文件夹下打开git base here 
第二步:在git中进行项目管理的初始化 git init
第三步:在git中创建自己的项目文件
第四步:通过git add .将所有的项目文件添加进去临时区域内
第五步:通过git commit -m 操作说明  将临时区域内的项目推送到本地的仓库上去
第六步:对项目进行修改之后,可以先看看修改了哪些东西,git diff 
第七步:确认完修改之后,可以通过git commit -a -m 操作说明 来进行上传了.
第八步:如果需要切换版本,只需要通过git reflog 查看下自己的操作历史,然后通过git reset 
--hard 版本号 就可以自由的切换不同的状态了。
第九步: 如需删除文件,使用git rm 文件名 来进行删除,然后通过git commit -a -m 提交
第十步:如果发生在本地误删的情况,可以直接使用git checkout 把临时区域的内容拉到本地

总结:以上的知识只是个人在用的时候本地代码的一个管理而已,并不涉及远程多人共同协作,如果你只是在本地管理代码的话,上面的命令足够你使用了,因为毕竟你知道了如何让自己的代码库添加、删除、和回溯。代码的每一次修改也都会做记录,你可以随时恢复最新的版本和退回老的版本,并且比较每次代码的不同之处,找到原因。

创建自己的SSH

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

创建自己的ssh密钥,用于跟远程的服务器进行通信,它毕竟得知道这个是你亲自推送的代码才行。

将我们本地的仓库与远程的github 上的仓库连接起来

下一步,我们开始推送我们本地仓库上的内容

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

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

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

git push -u origin master

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

上面是从本地上传到远程库上去

如果想要从远程库中克隆一份,那么就使用git clone git 地址就可以了

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

说白了,克隆和推送都是为了创建本地和远程的一个连接,只要第一步连接好了,我们就可以进行下一步的操作了

分支管理

当然,你一个人管理代码的情况下,分支是没必要的,它主要体现在多人协同的情况下

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch 分支名

切换分支:git checkout 分支名

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge xxx

删除分支:git branch -d

结合版本回溯,master是主分支,各个分支点都是历史版本,目前指向最新的版本上

创建一个新的分支,叫做dev

目前我们的操作是在dev 分支上的,自然,我们现在就指向了dev,它跟master没什么关系了。

将DEV分支合并到主分支上去,分支其实就是为了在不影响主代码的情况下进行代码修改,根据实际情况跟最后的版本进行合并。

这里,我们要考虑一种情况,就是如果我在分支DEV中修改了内容,同时,我又在主分支MASTER中修改了内容,那么它们合并的时候一定会出现问题!!!

这里,不去考虑复杂的合并分支情况,一般我们开发的话,都会在分支上进行开发,确定没问题之后,合并到主分支中去。

实际情况的考虑:

远程分支和本地分支

两条分支最好是一一对应的,master分支和dev分支在本地和远程都有两条

创建分支确实挺容易的,也不复杂,这里就不考虑创建分支的成本性了。你可以理解为创建分支就是又创建一个工作区-暂存区-仓库这样的仓库2,现在你就拥有了仓库1,仓库2 了

感觉分支的操作都是在本地操作的,也就是针对本地分支的合并啊,在本地合并之后,再往同名的远程分支中push,那远程分支怎么完成合并呢?

一般我们git clone下网站源码的时候,默认情况下是主分支是有的,但其余的分支是没有的,这时候我们就需要在本地创建新的分支,这些分支对应着远程中的分支,然后将分支中的代码pull到本地去,比如远程的dev 分支要这么操作

git clone SSH地址 克隆整个项目(默认得到的就是主分支,其他分支并没有)

git checkout -b dev 在本地创建分支

git pull origin dev 从远程的DEV分支拉到本地的dev分支

git add ...

Git commit ...

Git push origin dev 修改完毕后传递到远程的dev分支上去

假设远程公共仓库,有一个master和一个dev分支,进行多人协作开发时候(每个人的公钥必须加入到远程账号下,否则无法push), 每个人都应该clone一份到本地。 但是clone的只是master,如果远程的master和dev一样,没关系;如果不一致,则需要clone出dev分支 git checkout -b dev origin/dev 之后每个人在本地的dev分支上独自开发(最好不要在master上开发), 开发完成之后push到远程dev git push origin dev。 之后审核人再确定是否合并dev到master。

在进行任何的push 操作之前,一定要先 pull 一下远程的分支代码,毕竟这个分支代码是被很多人修改的,你只有最新的版本才能和自己的修改合并才行。

gti log --pretty=oneline --grep=feat;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值