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 指向指定
–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 push 或 git pull 等命令时,Git 会使用 origin 来指代远程仓库的地址。
你也可以添加其他远程仓库,给它们起别名,以便在同一个项目中与多个远程仓库交互。在这种情况下,origin 通常是主要的远程仓库,但你也可以选择其他名字来命名其他远程仓库。
head
在Git中,HEAD指针是一个特殊的指针,它指向你当前所在的分支的最新提交(commit)。你可以把它想象成“你的代码库的当前快照”或者“你即将基于它进行工作的代码的状态”。
当你切换到一个不同的分支时,HEAD指针就会随之更新,指向新分支的最新提交。
HEAD指针可以是以下两种形式之一:
指向分支引用(通常情况):
通常,HEAD会通过一个名为“分支引用”的间接引用附加到分支上。例如,如果你当前在master分支上工作,那么HEAD会指向refs/heads/master。随着你在这个分支上进行更多的提交,master分支引用会更新,指向新的最新提交,而HEAD仍旧指向master分支。处于“分离头指针”(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 | rm -r .git |