- git init #在本地初始化一个仓库
- git add . #将当前目录所有的文件加入(注意这里是加入)到缓存区
- git commit -m "xxx" #将当前缓存区里的内容提交到本地仓库
- git remote add
#为本地rep添加以remote rep,其被命名为 - git push -u/--set-upstream
#为remote/local创建连接,并将local rep中的内容上传到remote rep
回退到特定状态
- git reset #将之前使用git add暂存的文件从暂存区中移除,但保留在工作目录中的修改(本地项目的内容不会被覆盖)
- git reset HEAD^ #这会将 HEAD 指针移动到前一次提交,并将之前的提交内容放回暂存区。但工作目录中的文件修改并不会被撤销,需要使用 git checkout 或者 git restore 恢复到之前的状态。
- git reset
#将 HEAD 移动到指定的提交,并且会将该提交之后的修改放回暂存区。但工作目录中的文件修改不会被撤销,需要使用 git checkout 或者 git restore 恢复到之前的状态。 - git reset --hard #这会撤销到最后一次提交,并将工作目录中未提交的修改全部删除。
- git diff #查看工作目录和暂存区之间的差异
- git diff --cached #查看暂存区和最后一次提交之间的差异
- git diff HEAD #查看工作目录、暂存区和最后一次提交之间的差异
- git diff
#替换 和 分别为两个不同的提交哈希值、分支名或者标签名。这会显示两个提交之间的差异。 - git diff
.. #这会显示两个分支之间的所有差异。这里有两个小点。
- git checkout branch_name #切换到特定branch
- git checkout -- file_path
- #如果在工作目录中对某个文件做了修改,但还没有提交(文件不在本地仓库,而是在缓存区),执行这个命令可以撤销对该文件的修改,将其还原为最后一次提交的状态(从本地仓库恢复)。
- git checkout
- #命令用于将工作目录和暂存区的状态切换到指定提交(commit).这个操作将使得你处于“分离头指针”(detached HEAD)的状态,即不再位于任何分支上,而是直接在某个具体的提交上。注意:在“分离头指针”状态下,任何在这个状态下的新提交都不会属于任何分支,如果切换到其他分支,这些提交可能被遗弃,因此要谨慎使
- 用。
- git checkout -b new_branch_name
- 这会创建一个新分支 new_branch_name,并将它切换到指定提交。
注意事项:
git diff 查看要合并的更改,以确保将正确的更改合并到目标分支2.23版本以上的git, 提出用git switch和git restore来替代checkout的某些功能
- git checkout master #切换到目标分支
- git pull origin master #确保目标分支是最新的,想想为什么会这样
- git merge
#在目标分支上执行合并操作.如果 Git 发现在目标分支和要合并的分支上都对相同文件进行了修改,就会发生合并冲突。在这种情况下,你需要手动解决冲突。编辑冲突文件,然后执行. - git add . #重新添加、提交代码
- git commit
- git push origin master #推送
具体流程如下图所示[1]:

git push
是远程仓库的名称,通常是 origin,但也可以是其他已经配置的远程仓库的名称。 是要推送的本地分支的名称。-u 或 --set-upstream。 -u 命令的作用是将本地分支与远程分支关联,并将本地分支的变化推送到远程仓库。这通常用于在第一次推送分支时,建立本地分支与远程分支之间的追踪关系。origin 是默认的远程仓库的名称。origin 的作用是作为默认的远程仓库,方便你推送(push)和拉取(pull)代码。例如,当你执行 git push origin master 时,表示将本地的 master 分支推送到名为 origin 的远程仓库。同样,git pull origin master 表示从 origin 远程仓库的 master 分支拉取最新的代码。
HEAD 在 Git 中是一个特殊的指针,用于表示当前所在的本地仓库的最新提交。HEAD 指针通常指向当前所在的分支的最新提交,表示你正在工作的分支的最新状态。
以下是 HEAD 的一些常见用途和行为:
指向当前分支的最新提交: 当你在一个分支上进行提交时,HEAD 会随着当前分支的移动而更新,始终指向该分支的最新提交。
分离 HEAD: 如果你切换到一个特定的提交,而不是分支(例如,git checkout ),HEAD 将进入 "分离头指针" 的状态,这时 HEAD 直接指向具体的提交而不是分支。
切换分支: 当你使用 git checkout 或 git switch 切换分支时,HEAD 会跟着切换到新的分支上,并指向该分支的最新提交。
合并分支: 在合并分支时,HEAD 通常会指向被合并的分支的最新提交。合并完成后,HEAD 会指向新生成的合并提交。
指向提交的哈希值: 当 HEAD 处于分离头指针状态时,它直接指向一个具体的提交,而不是一个分支。在这种情况下,你可以通过 git log 查看提交的哈希值,然后使用 git checkout 或 git switch 切换回分支。
表示工作区和暂存区的状态: HEAD 不仅指向最新提交,还包含了工作区和暂存区的状态。在某些操作中,如 git reset,HEAD 可能会移动到之前的提交,同时更新工作区和暂存区。
总体而言,HEAD 在 Git 中是一个非常重要的指针,用于跟踪当前工作目录的状态。理解 HEAD 的位置和作用对于有效地使用 Git 是很重要的。