优达学城_GIT 学习笔记(1)
导航
1.切换目录
$ cd "C:\Users\a1104\Documents\200 - work\210 - Work Tools\213_gitTUT"
2.mkdir
创建一个目录,叫做 udacity-git-course
在该目录中,创建另一个目录,叫做 new-git-project
使用 cd 命令移到 new-git-project 目录下
mkdir -p undacity-git-course/new-git-project && cd $_ #-p --parents多个目录
3.git init 创建一个新仓库
$ git init
Initialized empty Git repository in C:/Users/a1104/Documents/200_work/210_Work Tools/213_gitTUT/undacity-git-course/new-git-project/.git/
a1104@DESKTOP-9HV332D MINGW64 ~/Documents/200_work/210_Work Tools/213_gitTUT/undacity-git-course/new-git-project (master)
.git是一个库,Git的所有commit记录在这里,并跟踪所有内容。
4.GIT的中文说明文档与Git的内部原理:
https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-%E9%85%8D%E7%BD%AE-Gi
5.git clone 克隆仓库
$ git clone https://github.com/udacity/course-git-blog-project
注:使用git clone 后不改变shell的目录,要想去新克隆的仓库,还要使用cd命令
$ cd course-git-blog-project
aaa@qq.com-9HV332D MINGW64 ~/Documents/200_work/210_Work Tools/213_gitTUT/undacity-git-course/new-git-project/course-git-blog-project (master)
6.pwd显示当前目录;cd ..返回上一级目录
7.git status 查看文件的状态
1. On branch master – 这部分告诉我们 Git 位于 master 分支上。你已在术语表中获取了对分支的介绍,那么这是”master”分支(也就是默认分支)。我们将在第 5 节课深入了解分支。
2. Your branch is up-to-date with ‘origin/master’. – 因为我们使用 git clone 从另一台计算机上复制了此仓库,因此这部分告诉我们项目是否与所复制的仓库保持同步状态。我们不会在其他计算机上处理该项目,因此这一行可以忽略。
3.nothing to commit, working directory clean – 表示没有任何待定的更改。
8.git log ;git log –oneline
显示日志
:表示下面还有很多条内容
q键可以推出git log日志
$ git log --oneline
$ git log --stat # stat "统计信息statistics" 显示commit中更改的文件
$ git log -p or git log --patch #显示对文件做出实际更改的选项
$ git show #显示最近的一次commit
$ git show fdf5493 #显示特定的commit
9. git add 添加到缓存区
git 工作原理
$ git add index.html #添加到缓存区
$ git add css/app.css js/app.js
```bash #句号 . 相当于添加所有的文件和目录
$ git add css/app.css js/app.js
# 等同于
$ git add .
```
10.git commit 提交到仓库
$ git commit #此时会打开配置的编辑器,编写首行
$ git commit -m "Initial commit" #可以不用打开编辑器,即可编辑首行
11. git diff 用来查看已被加入但是尚未提交的更改
$ git diff #git diff = git log -p
12.标签 tag
$ git tag -a v1.0
注意:在上述命令 (git tag -a v1.0) 中,使用了 -a 选项。该选项告诉 git 创建一个带注释的标签。如果你没有提供该选项(即 git tag v1.0),那么它将创建一个轻量级标签。
建议使用带注释的标签,因为它们包含了大量的额外信息,例如:
标签创建者
标签创建日期
标签消息
因此,你应该始终使用带注释的标签。
$ git tag -d v1.0 #删除标签
$ git tag -a v1.0 a87984 #为特定的commit创建标签,非最近的commit
13.分支 git branch
$ git branch
#列出仓库中的所有分支名称
#创建新的分支
#删除分支
$ git branch sidebar #创建分支
$ git checkout sidebar #切换分支
$ git log --oneline --decorate #分支上的日志
$ git branch -d footer-fix #删除分支
$ git checkout -b richards-branch-for-awesome-changes
#添加 -b 选项,则能够用一个命令创建分支并切换到该分支
$ git checkout -b footer master
#git checkout 创建新 footer 分支并让此 footer 分支的起点位置与 master 分支的一样
$ git log --oneline --decorate --graph --all
#同时查看所有分支,--graph选项将条目和行添加到输出的最左侧,显示实际分支
#--all 选项会显示仓库中的所有分支
$ git merge <name-of-branch-to-merge-in> #合并分支
#查看将合并的分支
#查看分支的历史记录并寻找两个分支的 commit 历史记录中都有的单个 commit
#将单个分支上更改的代码行合并到一起
#提交一个 commit 来记录合并操作
撤销合并
git reset --hard HEAD^
合并冲突
$ git merge heading-update
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
使用 git status
查看冲突原因
<<<<<<< HEAD 此行下方的所有内容(直到下个指示符)显示了当前分支上的行
||||||| merged common ancestors 此行下方的所有内容(直到下个指示符)显示了原始行的内容
======= 表示原始行内容的结束位置,之后的所有行(直到下个指示符)是被合并的当前分支上的行的内容
>>>>>>>> heading-update 是要被合并的分支(此例中是 heading-update 分支)上的行结束指示符
14.更改commit
$ git commit --amend #更改最近的commit
15.还原commit revert
git会执行与commit中的更改完全相反的更改
$ git revert <SHA-of-commit-to-revert>
16.重置commit ——reset
$ git reset <reference-to-commit>
#将 HEAD 和当前分支指针移到引用的 commit
#使用 --hard 选项清除 commit
#使用 --soft 选项将 commit 的更改移至暂存区
#使用 --mixed 选项取消暂存已被 commit 的更改
注意,使用 git reset 命令将清除当前分支上的 commit。因此,如果你想跟着操作接下来出现的所有重置操作,需要在当前 commit 上创建一个分支,以便用作备份。
在进行任何重置操作之前,我通常会在最近的 commit 上创建一个 backup 分支,因此如果出现错误,我可以返回这些 commit:
$ git branch backup