Hello World

吞风吻雨葬落日 欺山赶海踏雪径

0%

git 知识记录

Git 知识记录

常用操作

设置远程仓库

1
git remote set-url origin [url]

clone指定分支的固定深度

1
git clone git@github.com:TrinityCore/TrinityCore.git --branch 3.3.5 --single-branch TrinityCore --depth 1

–branch
让新克隆仓库的 HEAD 指向指定 的分支而不是默认仓库的 HEAD 。可以简化为 -b

–single-branch
只克隆一个单独的分支,由 --branch 指定分支

这里主要如果需要反悔,修改 .git/configs的fetch配置:

1
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"

–depth [num]
depth用于指定克隆深度,为1即表示只克隆最近一次commit.

merge分支指定文件

在自己的分支上直接执行checkout 想要merge分支的文件即可:

1
git checkout other_branch file_path_wanted_to_merge1 file_path_wanted_to_merge2

git撤销

Workspace

查看修改

1
git diff

撤销

1
git checkout <changed_file>

1
git restore <changed_file>

Staged

Staged -> Workpace

1
git restore --staged <changed_file>

1
git reset <changed_file>```

Staged -> None

1
git checkout HEAD <changed_file>

committed

Committed -> Staged

1
git reset --soft HEAD~1

Committed -> Workspce

1
git reset HEAD~1

等效于

1
git reset --mixed HEAD~1

commited -> None

1
git reset --hard HEAD~1

1
git checkout -- <changed_file>

commited -> commited

这里会增加一个新的提交,反作用指定的提交。

1
git revert HEAD

1
git revert <commit-hash>

git知识点

origin

在 Git 中,origin 是一个默认的远程仓库的别名。当你使用 Git 克隆一个远程仓库时,Git 会自动将该远程仓库命名为 origin,除非你另外指定了别的名称。
通常情况下,origin 指向的是你从中克隆代码的远程仓库。当你运行 git pushgit pull 等命令时,Git 会使用 origin 来指代远程仓库的地址。
你也可以添加其他远程仓库,给它们起别名,以便在同一个项目中与多个远程仓库交互。在这种情况下,origin 通常是主要的远程仓库,但你也可以选择其他名字来命名其他远程仓库。

在Git中,HEAD指针是一个特殊的指针,它指向你当前所在的分支的最新提交(commit)。你可以把它想象成“你的代码库的当前快照”或者“你即将基于它进行工作的代码的状态”。

当你切换到一个不同的分支时,HEAD指针就会随之更新,指向新分支的最新提交。

HEAD指针可以是以下两种形式之一:

  1. 指向分支引用(通常情况):
    通常,HEAD会通过一个名为“分支引用”的间接引用附加到分支上。例如,如果你当前在master分支上工作,那么HEAD会指向refs/heads/master。随着你在这个分支上进行更多的提交,master分支引用会更新,指向新的最新提交,而HEAD仍旧指向master分支。

  2. 处于“分离头指针”(detached HEAD)状态:
    如果你检出(checkout)到一个特定的提交而不是分支的话,HEAD将会直接指向这个提交,而不是任何分支的引用。这被称为“分离头指针”状态(detached HEAD state)。在这种状态下做出的任何提交将不属于任何分支,除非你创建一个新的分支来指向它们,否则它们在切换到别的分支时可能会丢失。

通常,HEAD指针会在.git目录中的一个名为HEAD的文件内记录下来。当你使用git status的时候,Git会显示出当前HEAD指向的分支或提交的信息。

举例:

1
$ git checkout master

上述命令会把HEAD指针移动到master分支的最新提交上。

1
$ git checkout <commit-hash>

上述命令将会让你进入分离头指针状态,此时HEAD直接指向提供的提交哈希值,而不再附加在任何分支上。

重置仓库

1
2
3
4
5
6
7
rm -r .git
git init
(create files)
git add -A
git commit -m 'Initial commit'
git remote add origin <url>
git push --force --set-upstream origin master