git命令使用

 创建版本库

切换到相应目录下, git init 把这个目录变成Git可以管理的仓库,目录下多了一个.git的目录,这个目录默认是隐藏的,用ls -ah命令就可以看见。


git status 查看仓库状态。

git diff + file 查看修改内容。

git add(后面解释)

git commit -m ""(后面解释)

commit可以一次提交很多文件,所以你可以多次add不同的文件


每提交一个新版本,实际上Git就会把它们自动串成一条时间线。

git log (--pretty=oneline)命令查看commit历史,可以看到每一次提交的版本号。


版本回退

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git reset --hard HEAD^

reset命令有3种方式:

1:git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息

2:git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可

3:git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到之前版本时,再想恢复到原先版本,就必须找到原先版本的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file

终于舒了口气,第二行显示append GPL的commit id是3628164,现在,你又可以乘坐时光机回到未来了。

工作区(Working Directory)

就是你在电脑里能看到的目录,比如项目文件夹就是一个工作区。

版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD



前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

git add 命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行 git commit 就可以一次性把暂存区的所有修改提交到分支。


管理修改
Git管理的是修改,而不是文件。

git diff HEAD -- file命令可以查看工作区和版本库里面最新版本的区别。


撤销修改
1. 改了代码,还没add。

那么可以手动去删,但是改太多不记得了,git checkout -- file可以丢弃工作区的修改。

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令。

2. add了没commit。

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

git reset HEAD file

3. commit了, 没push。

那就是版本会退了。


删除文件(在本地删了文件)
1. 确实要删除。用命令 git rm 删掉,并且 git commit。

2. 删错了。 git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。


关于分支

版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的就是当前分支。


在新的dev分支工作。


合并dev的到master分支。

git checkout -b dev

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev
git branch 命令查看当前分支。

git merge命令用于合并指定分支到当前分支。

删除分支:git branch -d <name>。


git pull 拉取代码。


关于push到远程库,重开一篇记录。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值