GIT 常用命令
写在前面
git
作为 版本管理软件 还是很常用的 但是感觉每次要用什么的时候都不太熟练 还要麻烦去查 所以记录一下常用的 如果以后还有的话继续补充 。
目前我常用的命令主要分为 本地 和 远程 ,还有一些在新设备上的 配置 命令 这个就放在最后 使用频率很低。
本地命令
git-add
add
就是把 本地的 文件修改 添加到 暂存区(stage),只是加到暂存区 还没有 commit
就没有添加到版本库 没有提交的 commit id
,stage 如果不想要了可以用 reset 恢复。
1 | git add . |
还有一个 把本地和远程仓库连接起来的在 add remote
git-commit
commit
就是把 stage 中的修改 提交到 本地 版本库 中。
1 | git commit -m "commit msg" |
git-checkout
checkout
用于 对 分支 的操作:切换分支
1 | 切换到 branch 分支上 |
创建并且切换
1 | git checkout -b <new-branch> |
把文件切换到 指定的 commit-id 的状态 这个可以用 diff
1 | git checkout <commit-hash> -- <file-path> |
git-branch
git branch
用于查看、创建或删除分支:
1 | 查看本地所有分支 |
git-log
git log
用于查看提交历史。列出从当前分支的最新提交开始,按时间倒序排列的所有提交记录。可以查看每个提交的详细信息,提交哈希、作者、日期以及提交信息。
1 | 查看当前分支的提交历史 |
git-diff
git diff
用于查看工作区、暂存区与版本库之间的差异。它可以帮助你在提交之前查看文件修改内容,或者查看某次提交和当前工作区的区别。
1 | 查看工作区和暂存区之间的差异 就是上次 add 之后又改了什么 |
git-status
查看当前 仓库 状态:分支 有哪些 更改 暂存 未被追踪
1 | git status |
git-reset
reset
用于撤销提交和修改 重置 stage 或者当前分支,下面这种 HEAD~1
的用法 就是上一个 commit , 也可以直接用 commit-id
回退到指定版本
1 | 撤销 当前 branch 的最后一次 commit 和 add, commit 还是修改过的 |
git-merge
合并分支到当前分支 :
1 | 把指定 branch 的 提交 合并到当前的 分支 |
git-rebase
把一个分支的修改应用到另一个分支
1 | 将 当前分支 的提交 应用到 指定分支 branch 上,达到合并的效果,但不会生成多余的合并提交。 |
远程命令
git-add-remote
git add remote
用于将远程仓库链接到本地仓库,以便可以推送和拉取代码。每个远程仓库会有一个名字(通常为 origin
),可以通过这个命令将本地仓库与远程仓库建立连接。name
一般是 origin
1 | 添加远程仓库 |
git-push
git push
用于将本地的提交推送到远程仓库。默认情况下,git push
会将当前分支的提交推送到远程仓库中对应的分支。
1 | 将本地的当前分支推送到远程仓库的相应分支 |
git-pull
git pull
用于从远程仓库拉取最新的更改并自动合并到本地分支。它实际上是 git fetch
和 git merge
的组合,先拉取远程的更改,再将其合并到当前分支。
1 | 从远程仓库拉取当前分支的最新提交并合并 |
配置命令
git 的 下载 Download git
版本检查:
1 | git --version |
git-config
列出当前的 config 信息:
1 | git config --list |
设置 全局 信息 ,第三个是对 git 设置全局代理 :
1 | git config --global user.name "zip95297" |
这个代理端口的位置 要查看科学上网的 开放端口,或者 科学上网软件 打开了允许局域网连接 也可以用 局域网中开了代理的设备(一般用于服务器)
对某一个仓库设置信息(需要在 仓库目录 下使用):
1 | git config --local user.name "zip95297" |
还有一个 init.defaultbranch
的变量记得设置为 main (好像下载之后就会有这个)
配置对 github.com
的 ssh 连接,之后就可以用 ssh 的 URL 访问了:
1 | ssh-keygen -t rsa -C "zip95297@gmail.com" # 创建 公私钥 对 |
配置之后 git clone
等 可以用 git 或者 http 连接。
关于从版本库或者工作区中删除
有三个命令主要: clean (清除untracked),restore(删工作区) ,restore --staged (移除暂存区到工作区)
删除 !新建!文件 (未跟踪)
clean 是用来删 没被跟踪的 文件和目录 也就是:( 对 已经跟踪 的文件不会有影响)
- 没有被add过
- 在历史提交中没有(untracked)
下面是具体用法
1 | 查看哪些文件将被删除(--dry-run|彩排的意思) |
恢复到 add 之后的状态 (放弃工作区)
恢复到 add 之后的 也就是:放弃 工作区修改,保留 暂存区修改 (add 过的会保存)
1 | git restore <file> |
恢复到 上次commit 之后的状态 (放弃工作区和暂存区)
恢复到 上次 commit 之后的状态分为两步:
- 放弃暂存区
- 放弃工作区
1 | git restore --staged <file> # 放弃暂存区 |
git ignore 中新添了 规则
可以直接指定 从暂存区中 remove 从 版本库 中移除: 不删除本地文件 (如果没有 --cached 参数 文件也会被删除)
1 | git rm --cached <example> |
或者:把所有内容从 版本库 中移除跟踪 重新add
1 | git rm --cached . |