Git学习记录

之前认真的学过git,最近一直在学习其他的,没怎么用git,都有点生疏了,今天来复习一下git,加之之前学git也没有做笔记
首先讲一下工作区和暂存区,
工作区:主机上的工作目录,例如创建的一个项目目录。工作区中有一个隐藏目录.git,它不算工作区,而是git的版本库。
Git的版本库中存了很多东西,其中最重要的就是成为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD,如下图
这里写图片描述
把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

  • 配置git用户信息
$ git config --global user.name "henulwj"
$ git config --global user.email "henulwj@qq.com"
  • 初始化一个git仓库
$ mkdir mygit
$ cd mygit
$ git init
  • 增加一个文件到仓库
$ touch reviewgit.md
$ git add reviewgit.md
$ git commit -m "add reviewgit.md file"
$ git commit -a -m "add reviewgit.md file"
#不用再执行git add了
  • 查看当前仓库状态
$ git status
  • 从现有仓库克隆
$ git clone git://github.com/xxx/xxx.git [user-defined directory]
  • 忽略某些文件,编辑.gitignore文件
$ cat .gitignore
*.[oa]
!lib.a
*.~
/TODO
build/
  • 比较当前文件与暂存区域快照之间的差异,也就是修改之后还没暂存起来的变化内容
$ git diff [filename or directory]
  • 移除,移动文件
$ git rm [-f] [filename or directory]
$ git mv file_from file_to
  • 查看提交历史
$ git log #列出所有的更新
$ git log -p -2 #展开显示每次提交的内容更新,-2仅显示最近的两次更新
$ git log --stat #仅显示简要的增改行数统计
$ git log --pretty=oneline #每个提交在一行显示
$ git log --pretty=format:"%h - %an, %ar : %s"  #定制显示的记录格式
#用oneline或format时结合--graph选项,可以看到开头多出一些ASCII字符串表示的图形,形象地展示了每个提交所在的分支及其分化衍合情况
  • 取消已经暂存的修改
$ git reset HEAD filename
  • 取消对文件的修改
$ git checkout -- filename
  • 版本回退
$ git reset --hard HEAD^ 
#回退到上一个版本,HEAD^^上上个版本,HEAD~100往上100个版本
#HEAD^也可以替换成commit id的前七位
  • 记录每一次命令
$ git reflog
  • 关联远程仓库
$ git remote add origin git@github.com:henulwj/gitexercise.git
  • 推送本地库内容
$ git push [-u] [remote-name] [branch-name] #第一次推送加上-u,之后就不用了
  • 创建分支
$ git checkout -b dev #创建并切换到dev分支
#可以分为两步
#git branch dev #创建分支dev
#git checkout dev #切换到dev分支
  • 合并分支
$ git merge[--no-ff] [-m "xxxx"] dev #合并dev分支到当前分支,--no-ff禁用Fast Forward模式合并
  • 删除分支
$ git branch -[d/D] dev #删除dev分支,-D强制删除分支
  • 保存当前工作现场
$ git stash
$ git stash list #查看保存的工作现场
$ git stash pop #恢复工作现场,同时删除stash
$ git stash apply stash@{n} #仅仅恢复工作现场,不删除stash
$ git stash drop stash@{n} #删除stash
  • 在本地创建和远程分支对应的分支
$ git checkout -b branch-name origin/branch-name #分支名字最好一致
  • 建立本地分支和远程分支的关联
$ git branch --set-upstream branch-name origin/branch-name 
  • 抓取远程分支
$ git pull #从远程获取最新版本并merge到本地
$ git fetch [remote-name] [branch-name] #从远程获取最新版本到本地,不会自动merge
  • 创建一个标签
$ git tag tag-name [commit-id] #默认标签是打在最新的commit,也可以指定commit id
$ git tag #查看所有标签
$ git show tag-name #查看标签信息
$ git tag -a tag-name -m "comment" commit-id #创建带有说明的标签,-a指定标签名,-m指定说明文字
$ git tag -d tag-name #删除本地标签
$ git checkout tag-name #切换到对应tag-name
$ git push origin tag-name #推送标签到远程
$ git push origin --tags #一次性推送全部尚未推送的本地标签
$ git push origin :refs/tags/tag-name #从远程删除标签
  • 忽略特殊文件
    创建.gitignore文件,编写对应规则

  • 配置别名

$ git config --global alias.st status #git st = git status
$ git config --global alias.co checkout # git co = git checkout
$ git config --global alias.unstage 'reset HEAD' #git reset HEAD file = git unstage file
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
  • 查看远程仓库信息
$ git remote show [remote-name] #查看某个远程仓库的详细信息
$ git remote rename [old-remote-name] [new-remote-name] #远程仓库重命名
$ git remote rm [remote-name] #删除远程仓库

[未完待续]~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值