git操作

129 阅读4分钟

初始化git仓库

  1. git init (通过这个命令 把此目录变成git可以管理的仓库)
  2. 如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

把一个文件放到Git仓库只需要两步

  1. git add . (提交到暂存区)
  2. git commit - m "一些注释"

时光穿梭机

版本回退

  1. git log 多次提交之后 查看提交记录
  2. git reset --hard commit_id (提交记录时间点的唯一标识)

你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?

  1. git reflog (查看所有历史提交记录)
  2. 再次 git reset --hard commit_id (提交记录时间点的唯一标识)

现在总结一下:

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

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

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

工作区和暂存区

  1. 工作区 项目文件夹下能看到的目录
  2. 暂存区 git add 值之后执行的代码 放到了暂存区 (由 .git 文件夹开始管理)
  3. git commit 把当前暂存区里的代码一次性操作放到当前分支 本地仓库

查看差异

  1. git diff 查看工作区与版本库里的最新区别
  2. git diff HEAD -- readme.txt 产看某个文件的区别

git 是追踪更改而不是追踪文件

Git是跟踪修改的,每次修改,如果不用git add到暂存区,那就不会加入到commit中。

撤销修改

场景:不小心将代码 git add 到暂存区 想要撤销暂存区内的更改

  1. git restore --staged 文件名
  2. 例子: git checkout -- readme.txt

注意 -- 是必须的 要不然就是切换分支操作了

远程仓库

添加远程仓库

  1. 在github 上新建仓库
  2. 在本地上与之关联

3. git remote add origin git@github.com:michaelliao/learngit.git

  1. 添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

5. 首次推送 git push -u origin master

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

从现在起,只要本地作了提交,就可以通过命令:

  1. git push origin master

待解决 git push origin master 与 git push 有区别吗

删除远程库

  1. git remote rm 远程仓库名
  2. 建议先用git remote -v查看远程库信息

$ git remote -v

origin git@github.com:michaelliao/learn-git.git (fetch)

origin git@github.com:michaelliao/learn-git.git (push)

  1. 然后根据名字删除 git remote rm origin

此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。

从远程仓库克隆

1.git clone 远程仓库地址

创建分支与分支合并

  1. git checkout -b 分支名 (切换并创建分支)
  2. git merge 分支名 (合并分支)
  3. git branch -d 分支名 (删除分支)

标签管理

创建标签

git tag 标签名

例子: git tag v1.0 (打在最近的提交id上面)

git tag 标签名 提交id (补漏标签)

例子: git tag v0.9 f52c633

创建带有说明的标签

  1. git tag -a 标签名 -m "描述信息" 提交id
  2. git tag -a v0.1 -m "version 0.1 released" 1094adb

查看标签

  1. git tag (查看所有)
  2. git show 标签名 git show v0.1 (查看某个标签)

操作标签

  1. 如果标签打错了 也可以删除 --------git tag -d v0.1
  2. 因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
  3. 如果要推送某个标签到远程,使用命令git push origin 标签名------git push origin v1.0
  4. 一次性推送全部尚未推送到远程的本地标签-------git push origin --tags

如果标签已经推送到远程,要删除远程标签就麻烦一点

  1. 先从本地删除-------git tag -d 标签名
  2. 然后,从远程删除。删除命令也是push,但是格式如下---git push origin :refs/tags/v0.9
  3. git push origin :refs/tags/标签名