新增 初始化 Repository


mkdir learn-git
cd learn-git
git init

这时会在项目中创建一个 .git 文件夹 在 类 unix系统中 .为前缀的文件是隐藏文件

把文件交给 Git

$ git status

On branch main

No commits yet

nothing to commit (create/copy files and use "git add" to track)

新建一个文件

$ echo "Hello Git" > hello.html
$ git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
  hello.html

nothing added to commit but untracked files present (use "git add" to track)

交给 Git 管理

$ git add hello.html
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
  new file:   hello.html

其他的 add 用法

$ git add *.html
$ git add --all


如果修改了内容会怎么样

$ echo "Hello Git1" > hello.html
$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
  new file:   hello.html

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
  modified:   hello.html

Git . 和 Git --all的区别

在 Git 2.X 版本后就一样了.之前--all 会添加删除的文件 而 . 不会

将内容提交到存档中

$ git commit -m 'init commit'

工作区 暂存区与储存库

  • 工作区

  • 暂存库 git add .

  • 存储库 git commit -m 'xx'

简化以上两个流程 git commit -a -m 'xxx'

查看记录

git log
git log --oneline --graph
# 筛选
git log --oneline --author="作者"
git log --oneline --grep="关键字"
git log -S "关键字"
git log --oneline --since="9am" --until="12am"
git log --oneline --since="9am" --until="12am" --after="2021-01"

删除文件或改变名称

删除文件

# 第一种方法 当普通修改
git rm xxx.html
git add xxx.html
# 第二种 使用 Git 进行删除
git rm xxx.html

修改名称

# 第一种 
mv xxx.html abc.html
git add abc.html
# 第二种
git mv xxx.html abc.html

修改 Commit 记录

有 4 种方案

  1. 删除整个 Git

  2. 使用 git rebase 命令修改历史记录

  3. 使用 Commit 用 git reset命令删除,整理后重新 Commit

  4. 使用 --amend 参数改动最后一次 Commit

这里先说第四个 改动最后一次 Commit

git commit --amend -m 'Hello'

追加文件到最近的一次 Commit

有 2种方案

  1. 使用 git reset 命令把最后一次 Commit 删除,假如新文件后再重新 Commit

  2. 使用 --amend 进行 Commit

echo "hello world git" > hello1.html
git add hello1.html
git commit --amend --no-edit

新增目录

默认情况下假如没有文件的文件夹 git 是无法识别到的,所以需要新增一个文件.

mkdir images
cd images
touch .keep
git add .keep
git commit -m 'add new images dir'

忽略一些文件

只需要将这些文件放入到 .gitignore https://github.com/github/gitignore 这里有常见的忽略地址

echo "hello2.html" > .gitignore

查看特定文件的 Commit 记录

git log hello1.html #查看文件提交记录
git log hello1.html -p #可以查看改动内容

查看代码谁写的

git blame hello1.html # 查看这个代码谁写的
git blame -L 5,10 hello1.html # 查看这个代码谁写的 并指定行

不小心把文件删除了

rm hello.html
git checkout hello.html # 挽回一个文件
git checkout . # 挽回全部文件

拆掉 Commit 重做

^ 代表回退几个 Commit

git log --oneline
git reset ccaa122^ # 
git reset master^

reset 有 3 个模式

  1. mixed 默认 Commit出的内容会被放在工作区

  2. soft Commit出的内容会被放在暂存区

  3. hard 这个模式下无论是工作目录还是暂存区文件都会被删除