git常用操作
clone下载
如果你想将远程仓库完整地复制到本地,可使用 git clone 命令。该命令会在本地创建一个与远程仓库相同的目录结构,并下载所有的文件和提交历史。
语法:
git clone <远程仓库地址> [本地目录名]
- 远程仓库地址:这是远程仓库的 URL,可以是基于 HTTP/HTTPS 协议的地址,也可以是基于 SSH 协议的地址。
- 本地目录名(可选):指定克隆到本地的目录名称。如果不指定,Git 会使用远程仓库的名称作为本地目录名。
后续说明
远程仓库有多个分支时,使用git clone后,本地能看到的往往只有一个分支,通常是master,并不能看到远程仓中的全部分支,想获取其他分支的操作为:
git checkout <remote_other_branch_name>
使用该指令会在本地创建与远程仓同名分支并与远程分支完成关联。如果不希望本地分支与远程分支同名,则按照常规方式,可以先创建一个分支,再使用git pull拉取。
实例
- 使用 HTTPS 协议克隆:
git clone https://github.com/username/repository.git
这种方式无需配置 SSH 密钥,适用于快速克隆公共仓库,但在每次进行推送等操作时可能需要输入用户名和密码。
- 使用 SSH 协议克隆:
git clone git@github.com:username/repository.git
使用 SSH 协议需要提前配置好 SSH 密钥,配置完成后,在进行与远程仓库的交互时无需频繁输入用户名和密码,更加便捷和安全。
- 克隆到本地指定目录
git clone https://github.com/username/repository.git my-local-repo
此命令会将远程仓库克隆到本地的 my-local-repo 目录中。
提交
提交是最常用的操作之一。
第一步,查看文件状态
在进行提交之前,你可以使用git status命令查看工作目录中文件的状态,了解哪些文件被修改、添加或删除。
git status
该命令会输出类似如下的信息,提示你哪些文件处于未跟踪(untracked)、已修改(modified)或已暂存(staged)状态:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: test.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
new_file.txt
no changes added to commit (use "git add" and/or "git commit -a")
第二步,将修改添加到暂存区
使用git add命令将需要提交的文件添加到暂存区。你可以指定具体的文件名,也可以使用通配符或 . 来添加所有修改的文件。
# 添加单个文件
git add test.txt
# 添加多个文件
git add file1.txt file2.txt
# 添加当前目录下所有修改的文件
git add .
第三步,提交暂存区的内容到本地仓库
使用git commit命令将暂存区的内容提交到本地仓库,并添加有意义的提交说明,以便后续查看和理解此次提交的目的。
git commit -m "描述此次提交的内容,如修复了某个 bug 或添加了新功能"
PS:如果你在执行git commit时没有使用-m选项指定提交说明,Git 会打开默认的文本编辑器(如 Vim)让你输入提交说明,输入完成后保存并退出编辑器即可完成提交。
跳过暂存区直接提交
如果你想跳过将文件添加到暂存区的步骤,直接将所有已跟踪文件的修改提交到本地仓库,可以使用git commit -a命令。
git commit -a -m "直接提交所有已跟踪文件的修改"
pull下载
背景:远端仓库新建一个分支,下载到本地的正确方法
第一步,确保本地仓库是最新状态
在拉取远程新分支之前,需要保证本地仓库和远程仓库的信息是同步的。可以使用以下命令更新本地仓库的远程分支信息:
git fetch origin
这个命令会从远程仓库(这里假设远程仓库别名为 origin)下载所有分支的最新提交信息,但不会合并到本地分支,只是更新了本地的远程分支引用。
第二步,查看远程仓库的所有分支
使用以下命令查看远程仓库的所有分支,确认新分支是否已经被正确获取:
git branch -r
该命令会列出所有远程分支,输出结果可能如下:
origin/main
origin/new_branch # 这是新创建的远程分支
第三步,使用 git checkout 命令创建并切换到本地新分支
如果你想创建一个与远程新分支同名的本地分支,并将其与远程分支 关联起来,可以使用以下命令:
git checkout -b new_branch origin/new_branch
- -b 选项表示创建一个新的本地分支。
- new_branch 是本地要创建的分支名称(也可以不同名,这个无所谓)。
- origin/new_branch 是远程仓库的新分支名称。
第四步,验证本地分支
使用以下命令查看本地分支列表,确认新分支是否已经成功创建并切换到该分支:
git branch
输出结果会显示当前本地的所有分支,当前所在分支会以特殊颜色或星号标记:
* new_branch
main
第五步,使用 git pull 拉取远程分支文件内容
完成本地分支的创建和切换后,就可以使用 git pull 命令将远程分支上的文件内容拉取到本地分支。
git pull origin new_branch
该命令会将 origin 远程仓库中 new_branch 分支上的文件内容拉取到当前本地的 new_branch 分支,并尝试合并(如果有本地修改)。git pull 实际上是 git fetch 和 git merge 的组合操作,它先从远程仓库获取最新内容,然后将其合并到当前本地分支。
删除
本地和库上都删除
# 删除本地文件
rm example.txt
# 将删除操作添加到暂存区
git add example.txt
# 提交删除操作到本地代码仓
git commit -m "Delete example.txt"
# 将删除操作推送到远程仓库
git push origin main
以上前两步可以用以下命令代替:
git rm example.txt
该指令表示删除本地文件,并提交到暂存区
仅库上删除,本地不删除
# 仅从版本控制中移除文件,保留本地文件
git rm --cached <file_path> #删除文件
git rm -r --cached <file_path> #删除文件夹
# 提交更改
git commit -m "Remove tracked file to follow .gitignore rules"
使用 git rm --cached 只是从版本控制中移除文件,不会删除本地文件;而使用 git rm 则会同时删除本地文件。
删除远程分支
这是最常用的删除远程分支的方法,其基本语法为:
git push <远程仓库名> --delete <远程分支名>
或者使用简化的语法:
git push <远程仓库名> :<远程分支名>
- <远程仓库名>:通常是 origin,它是本地仓库默认关联的远程仓库名称。
- <远程分支名>:即你想要删除的远程分支的名称。
示例
假设你要删除 origin 远程仓库中的 feature-branch 分支,可以使用以下命令:
git push origin --delete feature-branch
或者使用简化语法:
git push origin :feature-branch
执行上述命令后,Git 会尝试删除远程仓库中的指定分支。如果删除成功,会在终端显示相应的提示信息。
删除远程分支后的注意事项
- 更新本地分支信息:删除远程分支后,本地仓库可能仍然保留着对该远程分支的引用。你可以使用 git remote prune <远程仓库名> 命令来清理这些无效的引用。例如:
git remote prune origin
- 避免误删:删除远程分支是一个不可逆的操作,一旦删除,分支上的所有提交记录都将被永久删除。因此,在删除之前,请确保你确实不需要这个分支。

浙公网安备 33010602011771号