Skip to content

Git

分区

Alt text

Workspace: 工作区

Index/Stage: 暂存区

Repository: 仓库区(本地仓库)

Remote: 远程仓库

git add

git add 命令用于将变化的文件,从工作区提交到暂存区。

// 将当前目录下所有变化的文件,放入暂存区
git add .

git rm

git rm 命令用于删除文件。

解除追踪某个文件,即该文件已被 git add 添加,然后抵消这个操作。

 git rm --cached <fileName>

git branch

git branch // 查看本地分支

# 列出所有本地分支和远程分支
git branch -a

# 新建一个分支
git branch [分支名]

git branch -d [名称] // 删除本地分支
git branch -D [名称] // 强制删除本地分支
git push origin --delete local_mhz // 删除远程分支

git checkout

git checkout 命令有多种用途。

# 1.用来切换分支
git checkout [分支名]

# -b参数,可以新建的同时,切换到新分支。
git checkout -b NewBranch MyBranch
//基于MyBranch分支创建一个新的NewBranch分支,新的NewBranch分支将成为当前的工作区

git checkout -b [本地分支名称] [远程分支名称] // 本地创建远程分支并切换到该分支
git checkout -b dev origin/dev

git clone

git clone 命令用于克隆远程分支。

git
# 本地克隆项目
git clone -b [分支] [远程地址] [本地文件夹名称]
git clone -b local http://******.git my-local

git clone -b local http://mseas@**\*\***.git my-local //可以切换用户名

git commit

git commit 命令用于将暂存区中的变化提交到仓库区。

# -m 参数用于指定 commit 信息,是必需的。如果省略-m 参数,git commit 会自动打开文本编辑器,要求输入。
 git commit -m "message"

# -a参数用于先将所有工作区的变动文件,提交到暂存区,再运行git commit。用了-a参数,就不用执行git add .命令了。
 git commit -am "message"

# --amend参数用于撤销上一次 commit,然后生成一个新的 commit。
 git commit --amend - m "new commit message"

git diff

git diff 命令用于查看文件之间的差异。

# 查看工作区与暂存区的差异
$ git diff
# 查看某个文件的工作区与暂存区的差异
$ git diff file.txt
# 查看暂存区与当前 commit 的差异
$ git diff --cached
# 查看两个commit的差异
$ git diff <commitBefore> <commitAfter>
# 查看暂存区与仓库区的差异
$ git diff --cached
# 查看工作区与上一次commit之间的差异
# 即如果执行 git commit -a,将提交的文件
$ git diff HEAD
# 查看工作区与某个 commit 的差异
$ git diff <commit>
# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]
# 查看工作区与当前分支上一次提交的差异,但是局限于test文件
$ git diff HEAD -- ./test
# 查看当前分支上一次提交与上上一次提交之间的差异
$ git diff HEAD -- ./test
# 生成patch
$ git format-patch master --stdout > mypatch.patch

git init

git init 命令将当前目录转为 git 仓库。

它会在当前目录下生成一个.git 子目录,在其中写入 git 的配置和项目的快照。

git log

git log 命令按照提交时间从最晚到最早的顺序,列出所有 commit。

git merge

将当前分支合并到指定分支。

git merge develop

将当前分支与 develop 分支合并,产生的新的 commit 对象有两个父节点。

git pull

git pull 从远程拉取分支。

git pull origin dev 把远程dev分支的代码拉取到本地

// pull实际执行了fetch和merge两个操作 会生成复杂的分支历史和一个多余的merge提交。
// 你也可以选择用fetch和rebase代替pull,始终生成一个美观的提交链。

git remote

为远程仓库添加别名。

git
git remote -v // 查看本地关联的远程地址
git remote add [名称] [远程地址] // 添加远程仓库地址
git remote remove [名称] // 删除远程仓库地址
git remote set-url [名称] [远程地址] // 修改远程仓库地址

git reset

git reset 命令用于将当前分支指向另一个位置。

# 将当期分支的指针倒退三个 commit,并且会改变暂存区
$ git reset HEAD~3

git reset [ --soft | --mixed | --hard ] [< commitid >]
参数
soft:
–soft 参数只将其它的 commit 重置到你选定的 HEAD,工作目录、暂存区 中的数据不变。
mixed:
–mixed 参数是将 commit 和 暂存区 重置到你选定的 HEAD,而工作目录不变。
hard:
–hard 工作区、暂存区、commit 同时回滚。该参数等同于重置,可能会引起数据损失。
git reset --hard等同于git reset --hard HEAD。
注意:commitid 是每次你要回退到的那个 commit 的 id,它可以通过 git log 获取。
*** 不加参数 默认 mixed ***

如果我们通过 git reset --hard 将版本回退到之前的版本了,那我们还是可以补救的,先通过 git reflog 命令,找到要回退的 commitId,然后通过命令:git reset --hard commitId 来恢复。

git revert

git revert 命令用于撤销 commit。

git revert <commitID>
// git revert命令会创建一个新的提交,该提交是指定提交的逆向操作(包含撤销指定提交的更改)

git stash

git stash 命令用于暂时保存没有提交的工作。运行该命令后,所有没有 commit 的代码,都会暂时从工作区移除,回到上次 commit 时的状态。

# git stash
git stash      将当前工作空间的状态保存
git stash apply {stashName}	根据存储名称读取Git存储 name不传就是最近的

git stash list	查看当前Git中存储的所有状态
git stash drop {stashName}   根据存储名称删除Git存储

git push

git

git push --force(强制推送)

# 设置跟踪关系,即将本地分支与远程分支关联起来。这样在以后使用 git push 时可以省略远程仓库和分支的名称。

git push -u origin main


# 删除远程分支
git push origin --delete branch-name


缓存用户名密码(不用每次操作都输入密码)

git config --global credential.helper store