概要
经常使用的origin是什么?本地仓库与远程仓库是怎么关联的?你是不是经常在一个分支上开发代码,提交代码时突然发现分支不对,这种情况改如何处理?你是否经常需要关联推送多个仓库,这种情况的流程是什么?是否经常不知道某种场景下应该使用什么命令进行操作。
命令发生作用阶段
大家做操作时要分清楚本地仓库、远程仓库,以及本地仓库关联到那个远程仓库,下图是各个主要命令作用于那个阶段。
配置
查看当前所有的配置
通过命令可以看到当前仓库的所有配置,比如:用户名、邮箱、远程仓库地址、当前主分支关联的远程分支;
查看所有配置
git config --list
查看某一个配置
git config user.name
配置提交代码时用户名、邮箱
可以设置仓库级别的用户名、邮箱(默认),也可以设置操作系统用户级别的用户名、邮箱(global),也可以设置操作系统级别的用户名、邮箱(system),想让多个windows用户共享一套用户名、邮箱。设置的用户名、邮箱只是一个标识与git认证没有关系,但是需要提供正确可识别的信息,供多人协作使用。
用户级别(推荐)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
仓库级别
git config user.name "Your Name"
git config user.email "your.email@example.com"
仓库
初始化本地仓库
初始化本地仓库有两种方式,一种是自己新建仓库,一种是克隆大家的仓库。
自己新建仓库
git init
克隆其他的人仓库
git clone repo-url
repo-url:远程仓库地址,github、gitee等获取
将新建的本地仓库与远程仓库建立关联
remote-name远程仓库的名字,一般为origin,remote-url远程仓库地址。克隆的仓库自身已关联好,无需手动关联。
git remote add remote-name remote-url
查看本地仓库关联远程仓库
能够查看到你关联的远程fetch分支,以及push分支。
git remote -v
工作区提交
将工作区已变更的内容提交到本地仓库
添加所有的变更内容
git add .
添加一个指定的文件
先通过git status查看文件路径,然后使用命令添加你需要提交的文件
将变更内容提交到本地仓库
git commit -m "这是一次提交测试"
远程仓库提交
将本地仓库提交到远程仓库
第一次提交
第一次提交时需要将本地的分支与远程分支建立联系,使用-u参数指定关系。以下是将本地的mater分支关联到远程的master分支。
git push -u origin master
关联以后的提交命令
关联以后无需使用-u参数提交
git push origin master
分支操作
新建分支
branch_name:分支名称,这个命令只是新建一个分支,本地分支没有发生变化。需要手动切换。
git branch branch_name
或
git checkout branch_name
新建并切换分支
新建并切换分支,新建一个叫new_branch的分支,并且将本地分支切换到new_branch分支;新版本git(
Git 2.22之后) 推荐使用git switch切换分支,减少使用git checkout命令的歧义。
git switch -c new_branch
或
git checkout -b new_branch
查看分支
查看本地所有分支,用*表示当前分支
git branch
删除本地仓库分支
删除一个叫branch_name的本地分支,-d参数表示安全删除,只有当分支合并到其他分支才可以删除。-D强制删除。本地仓库删除后,执行推送git push命令后允许自动删除的远程仓库分支也会删除。
git branch -d branch_name
删除远程仓库分支
删除远程仓库origin的branch_name分支
git push origin --delete branch_name
合并分支
将一个分支合并到另外一个分支,以下命令是将main分支同步到当前分支。一般需要先同步main分支,再执行合并操作,保证代码是最新的。
git merge main
暂存区操作
保存工作目录和暂存区中暂时没有提交的内容
一般用在当前分支代码没有完成,突然来个紧急任务需要临时切换分支,又不想增加commit到本地仓库。
git stash
查看有那些保存的内容
git stash list
将最后保存的内容恢复
git stash pop
从暂存区删除一个文件
不小心多提交了文件到暂存区,该如何删除某个不想提交的文件,使用reset命令即可。文件路径需要通过git status查看。
git reset file_name
标签
创建标签
将在当前 HEAD 所指向的提交上创建一个标签,本地标签不会随着git push一起提交需要单独提交。
git tag tag_name
将本地标签推送到远程仓库
将本地tag_name标签推送到远程仓库。
git push origin tag_name
查看标签列表
git tag
切换到指定标签
git checkout tag_name
删除本地标签
删除本地仓库的tag_name标签
git tag -d tag_name
删除远程仓库标签
删除远程仓库的tag_name标签
git push origin --delete tag_name