Git
安装 Git 之后,你可以…
配置全局用户信息(推荐)
- 全局设置,创建本地仓库时默认分支名称为 main(你需要什么名称就该什么名称)【推荐配置为 main 】
git config --global init.defaultBranch main
- 全局设置,用户名和电子邮箱地址(比如:“张三”、“10086@qq.com”)
git config --global user.name "名字"
git config --global user.email "电子邮箱地址"
- 查看是否设置成功
git config user.name
git config user.email
创建本地仓库(必须)
- 为当前文件夹的内容,创建本地仓库
git init
- 对默认的分支名称不满意,可通过下面命令重命名
git branch -m 新的分支名称
- 插一句嘴,如果你需要重命名其他分支,而非当前分支,可执行下面命令
git branch -m 老的分支名称 新的分支名称
局部用户信息(可选)
- 局部设置,本地仓库的用户名和电子邮箱地址(优先从局部设置读取,而非使用全局设置)
git config user.name "名字"
git config user.email "电子邮箱地址"
- 查看是否设置成功
git config user.name
git config user.email
操作本地仓库(推荐)
- branch 相关
# 查看分支(列出本地仓库中所有的分支,并且当前所在的分支会被标注出来)
git branch
# 显示简略的分支信息(比如:每个分支的最新提交哈希值)
git branch -v
# 显示详细的分支信息(比如:远程跟踪分支)
git branch -vv
# 切换到指定的分支
git checkout 分支名称
# 创建并切换到一个新分支
git checkout -b 新分支名称
# 尝试删除分支(自动检查分支是否已经合并,没有合并将删除失败)
git branch -d 分支名称
# 强制删除分支
git branch -D 分支名称
# 将xxx分支合并进当前分支(假如当前分支是main,要xxx分支并入main里面)
git merge xxx
# 解决合并冲突
(1)查看冲突文件: git status
(2)编辑冲突文件: 手动编辑内容,将冲突的内容进行修改
(3)重新执行添加: git add 文件名
(4)然后执行提交: git commit -m "这里写你本次提交的备注内容"
- add 相关
# 将所有文件添加到"待提交区"
git add .
# 将某个文件(password.txt)添加到"待提交区"
git add password.txt
# 从"待提交区"撤回刚才添加的所有文件
git reset
# 从"待提交区"撤回刚才添加的某一个文件(password.txt)
git reset password.txt
- status 相关
# 显示工作目录和暂存区的状态
git status
- commit 相关
# 将"代提交区"里面的东西,提交到本地仓库里面
git commit -m "这里写你本次提交的备注内容"
# 不写参数,Git 会自动打开默认的文本编辑器供你输入多行提交信息
git commit
# 撤回刚才提交到"本地仓库"的东西
(1)撤回最近一次的提交,并让已修改的文件回到"待提交区"(即:回到commit的前一刻)
git reset --soft HEAD^
(2)撤回最近一次的提交,只保存文件的修改状态,"待提交区"没有任何内容(即:回到add的前一刻)
git reset HEAD^
(3)撤回最近一次的提交,不保存文件的修改状态,"待提交区"也没有任何内容(即:回到文件没有修改过的状态)
git reset --hard HEAD^
(4)撤销某个特定的历史提交而不是最近的一次提交
例如:要撤销某一个特定的提交,假设其哈希值为 abc123
git revert 会创建一个新的提交,该提交的内容正好抵消指定提交所做的更改,而不会直接删除历史记录
git revert abc1234
温馨提醒:
在Git中,用 HEAD 表示当前版本;
上一个版本就是HEAD^,上上一个版本就是HEAD^^,上一百个版本可以简写为HEAD^100
或者
上一个版本就是HEAD~,上上一个版本就是HEAD~~,上一百个版本可以简写为HEAD~100
区别是
[HEAD^5表示退一步到第五个父提交上,HEAD~5表示连续退五步到第五个父提交上]
Github
与 Github 建立连接
接下来将使用 ssh
方式进行连接,(Github官网)不推荐使用 https
方式
- 切换到用户目录
cd ~
- 制作用于保证数据传输安全的密钥(执行下面命令后,出现问答提示,不断按回车键即可)
ssh-keygen -t rsa -C "电子邮箱地址"
- 执行下面命令,将会输出密钥内容,复制它
type ~/.ssh/id_rsa.pub
- 打开 Github 网站:https://www.github.com
- 点击右上角的个人头像,点击
Settings
,点击SSH and GPG keys
,在 SSH keys 菜单里面,填写好 Title 后,将密钥粘贴到 Key 那里。
创建远程仓库
- 点击右上角的个人头像,点击
Your Repositories
,点击New
创建你的远程仓库 - 在
Repository name
那里填写仓库名称,如果你想要给这个仓库添加一些说明,在Description (optional)
那里填写即可 - 如果选择
Public
,仓库将被公开,所有人可见;如果选择Private
,仓库将被设置为私有,只有你自己可见 - 其他配置,可根据你的需要进行设置,不需要的话,直接点击最下方的
Create repository
即可 - 点击
SSH
,可以看到一个链接:git@github.com:用户名/远程仓库名称.git
,复制它
连接远程仓库
- 添加一个远程仓库,给它命名为 origin(你可以改为其他名字)而它的路径地址,就粘贴你刚才复制的链接
git remote add origin git@github.com:用户名/远程仓库名称.git
- 查看远程仓库(确保远程仓库已经正确添加)
# 查看名称为 origin 的远程仓库的路径地址
git remote get-url origin
# 查看所有的远程仓库
git remote -v
推送和拉取
- 推送
假设
“本地仓库”当有两个分支:main、test,当前分支为 test
“远程仓库”的分支名称为 main、develop
“远程仓库”被命名为 cangku
# 将本地仓库的test分支上传到cangku的main分支(即:test => main)
git push cangku test:main
# 将本地仓库的main分支上传到cangku的develop分支(即:main => develop)
git push cangku main:develop
# 将本地仓库的main分支上传到cangku的main分支(即:main => main)
git push cangku main:main
或者简写
git push cangku main
# 注意:上传指令的执行与当前是什么分支无关
- 设置与查看 “远程跟踪分支”
远程跟踪分支(也称为"上游分支")是 Git 中一个非常有用的功能
远程跟踪分支,是本地仓库中对远程分支的引用
# 设置"远程跟踪分支"的三种方法
# (1) 普通设置
git branch --set-upstream-to=远程仓库名/远程分支名 本地分支名
# (2) 推送+设置
git push --set-upstream 远程仓库名 本地分支:远程分支
或者简写为
git push -u 远程仓库名 本地分支:远程分支
# (3) 拉取+设置(注意:下面的命令将作用于你当前所在的本地分支)
git pull --set-upstream 远程仓库名 远程分支名
# 注意:设置"远程跟踪分支"之后,你以后可以直接使用 git push 和 git pull
而不需要每次都指定远程仓库和分支名称,git会自动知道你的本地分支对应的远程分支
# 查看"远程跟踪分支"的信息
git branch -vv
- 拉取
# 从远程仓库获取所有远程分支的更新,并呈现内容的变化,但不会修改你的工作目录(也就是不合并)
git fetch 远程仓库名
# 从远程仓库获取某个远程分支的更新,并呈现内容的变化,但不会修改你的工作目录
git fetch 远程仓库名 远程分支
# 注意:无论你当前在哪个本地分支上,git fetch 只会获取相应的远程分支的最新信息,并更新相应的远程跟踪分支,但不会修改你的工作目录(也就是不合并)
# 从远程仓库获取最新的更改,并将这些更改合并到“你当前所在的本地分支”(注意:只能是当前分支,无法更改)
git pull 远程仓库名 远程分支
温馨提示
git pull 是 git fetch 和 git merge 的组合
假设
“本地仓库”当有两个分支:main、test,当前分支为 main
“远程仓库”的分支名称为 main、develop
“远程仓库”被命名为 cangku
需求
将cangku中的develop分支合并到本地test分支上
方法一
# (1)切换到本地test分支上
git checkout test
# (2)从远程仓库获取develop分支的最新更改,并合并到当前test分支上
git pull cangku develop
方法二
# 切换到本地test分支上
git checkout test
# 更新所有"远程跟踪分支"(如cangku/main、cangku/develop)但不会修改你的工作目录或当前分支
git fetch cangku
# 将"远程跟踪分支" cangku/develop 的更改合并到当前test分支上
git merge cangku/develop
# 小提示:远程跟踪分支是本地仓库中对远程分支的引用。它们通常以 cangku/develop 的形式存在。远程跟踪分支用于跟踪远程分支的状态,帮助你了解远程分支的最新提交情况。
Other
- 如果你使用 VS Code,可借助 git 相关的插件来提高你的工作效率(比如:Git Graph)
- 如果你只需要托管到 Github 平台,可尝试使用
Github Desktop
图形工具