Git 常用命令使用
背景
写这篇笔记的最重要的原因是:我记不住我需要用的命令!
关于 Git 的使用,包括我自己,会使用 VS 等 IDE 自带的插件,或者用一些可视化的工具来避免使用命令行的方式,这里推荐一些受欢迎的Git可视化工具:
- SourceTree:SourceTree 是一款免费的 Git 和 Mercurial 客户端,提供了直观的界面和丰富的功能,支持 Windows 和 macOS 系统。
- GitKraken:GitKraken 是一款功能强大的跨平台 Git 客户端,提供了直观的图形界面、快速且流畅的操作体验,支持 Windows、macOS 和 Linux。
- TortoiseGit:TortoiseGit 是一款集成到 Windows 资源管理器的 Git 客户端,通过右键菜单提供了方便的操作选项。
- GitHub Desktop:GitHub Desktop 是由 GitHub 官方推出的桌面客户端,提供了简单直观的界面,支持 Windows 和 macOS 系统。
这些工具都提供了可视化的操作界面,使得使用 Git 更加便捷和直观。根据个人喜好和需求,你可以选择适合自己的工具进行使用。
为什么我会要用 Git 命令行
在我的工作中,主要可以分为代码和文档两类,代码和文档不一定都在一个仓库中,有的仓库包含代码及对应的文档,有的仓库就是简单的文档,没有代码。
目前我主要用 VS 进行开发工作,如果是代码的更新、推送,那么我会果断的选择 IDE 自带的 Git 插件,这样开发时,代码的暂存、提交、推送、合并等操作都极其的方便,而且解决冲突什么的都很方便;但是,如果一个仓库只是存了文档、或者只更新了文档,那么这时候这些文档可能包含 md、xls、pdf、visio 等的文件类型,这个时候使用 IDE 就不太方便了(我认为这极其麻烦),我也尝试使用上述提及到的可视化工具,但存在一个很尴尬的问题:同事没有这个工具啊!我不可能要求别人装,也不可推荐给所有人都用,所以当操作别人电脑的时候,没有工具,我只能用命令行,然后记不住命令,你就说这尴尬不!
Git 命令有很多文章都写了,去看别人的还不如看自己的,于是有了本篇笔记,这里主要记录了我自己常用的一些操作场景,不一定全。
基础 Git 命令
以下的举例,远程仓库分支情况如下图所示:
克隆
在克隆存储库时,可以指定分支和不指定分支。
- 指定分支:只会克隆指定的分支,这可以帮助你节省时间和磁盘空间。
- 不指定分支:克隆存储库的所有分支。
git clone -b <branch> <url>
<branch>
为要克隆的分支名称,缺省时即克隆全部分支;
<url>
为存储库的URL.
查看所有分支
查看本地仓库所有分支:
git branch
查看远程仓库所有分支:
git branch -r
创建分支
- 基于当前签出的分支创建:
git branch <new-branch-name> -- 创建新分支
git checkout -b <new-branch-name> -- 创建新分支并签出
- 基于指定分支创建:
git branch <new-branch-name> <base-branch-name> -- 创建新分支
git checkout -b <new-branch-name> <base-branch-name> -- 创建新分支并签出
<new-branch-name>
为新分支的名字
<base-branch-name>
为指定分支的名字
- 基于远程分支创建
- 将远程分支 fetch 到本地
- 创建本地分支
例子:
git fetch origin dev-A -- 从远程仓库 origin 拉取 dev-A 分支的最新状态到本地,但不会自动合并至本地分支
git branch new-branch origin/dev-A -- 创建一个叫 new-branch 的分支
切换(签出)分支
git checkout <branch-name>
合并分支
将指定分支合并到当前分支:
git merge <branch-name>
更新本地分支
当已经与远程分支之间建立了跟踪关系:
git pull
未建立跟踪关系:
git pull origin <branch-name>
添加文件到暂存区
git add <file-name> -- 暂存指定文件
git add . -- 暂存所有
提交代码
提交代码并附带提交消息:
git commit -m "提交xxxx功能"
推送代码
git push
与远程分支建立/取消跟踪关系
将本地分支与远程分支建立联系:
git branch --set-upstream-to=origin/<ori-feature-name> <local-name>"
取消联系:
git branch --unset-upstream <local-name>
<ori-feature-name>
为远程分支名字
<local-name>
为本地分支的名字,可以省略,省略时认为本地分支是当前分支
使用举例
多人合作开发 dev-A 分支
这种场景应当是比较常见的,其他人改了一些内容并推送至远程分支,这是只需要使用 git pull 命令,将新的提交更新至本地即可。此过程有冲突的话需要解决冲突。
将远程 master 合并到当前分支
git pull origin master