基础命令
一. git配置
1. 基于Https连接
git config --global user.name "<name>"
配置用于https连接远程仓库的用户名(全局)
git config --global user.email "<email>"
配置用于https连接远程仓库的邮箱(全局)
git config --global --list
查看全局配置
2. 基于SSH连接
ssh-keygen -t rsa -C "<email>"
生成SSH Key,并将公钥配置到远程仓库
二. 基础工作流
git clone <url/ssh>
克隆代码到本地
git init
初始化本地目录为仓库
git remote add <alias> <url/ssh>
将本地仓库与远程仓库进行关联,其中alias相当于时为当前指定的远程仓库设置了别名,通常我们会将别名设置为 origin
git status
查看文件状态
git add <file>
将工作区指定的文件或目录添加到暂存区
git add .
将工作区所有文件都添加到暂存区
git commit -m "<comments>"
将暂存区所有文件添加到本地仓库并添加comments
git log --grep="<comment>"
检索包含指定描述信息的日志信息
git log --graph
查看分支轨迹
git log
查看提交记录(此处的提交是指提交到本地仓库)
git log --since="<time>"
检索指定时间之后的日志信息,时间格式为:2023-11-29 00:00:00
git log --author="<author>"
检索作者为指定作者的日志信息
git diff
比较当前文件和暂存区之间的差异
git diff --staged
比较暂存区和本地仓库之间的差异
git push <alias> <branch>
将本地仓库 指定分支推送到远程仓库对应分支
git pull <alias> <branch>
拉取远程仓库最新代码到本地
三. 特殊工作流
git pull --allow-unrelated-histories origin <branch>
本地初始化的仓库关联到已经有内容的远程仓库并期望进行第一次拉取远程仓库的方式,此时的分支通常为master 或者 main
git checkout <file>
仅撤销对文件的修改
git reset HEAD <file>
仅撤销暂存文件
git rm -f <file>
彻底删除本地版本库中文件,同时删除原文件
git rm —cached <文件>
将文件从本地版本库中删除,但不删除原文件
四. 分支管理
git branch
列出本地所有分支
git branch -r
列出所有远程分支
git branch -a
列出所有本地分支和远程分支
git branch -d <branch>
删除指定分支
git branch <branch>
基于当前所在的分支创建新分支
git checkout <branch>
切换到指定分支
git checkout -b <branch>
基于当前所在的分支创建新分支并切换到新分支
git merge <other branch> <current branch>
将指定的其他分支合并到当前分支
git rebase <other branch>
变基,将其他分支的提交加入到当前正在操作的分支
注意事项
合理使用rebase,假设当前分支是公共分支时不要随意使用rebase。因为rebase会改变log,这会导致相同分支在不同成员之间有不同的log,当提交到远程仓库时会导致识别失败而无法提交。但假设当前分支的使用者只有自己时建议使用rebase,这样会使合并内容更干净。
1. 冲突解决可参考流程
使用 merge 命令合并造成冲突时:
解决冲突并重新提交到本地仓库(add+commit)
再次使用 merge
使用 rebase 命令合并造成冲突时
解决冲突并重新提交到本地仓库(add+commit)
执行 git rebase --continue
.gitignore
.gitignore
文件用于指定 git 忽略的文件或目录
只需要在 .gitignore
内加入期望忽略的文件即可,例如忽略 demo.txt 和 demo目录
demo.txt
/demo
利用SSH关联多个远程仓库
我们可以利用不同的 alias 为同一本地仓库关联不同远程仓库,从而实现多远程仓库的备份。
例如我们期望本地仓库同时与 GitHub 和 GitLab 设置关联
注意事项
首先需要将公钥配置到GitHub 和 GitLab账号中
在真正关联之前我们需要对 ~/ssh/config
文件进行配置,我们需要为GitHub 和 GitLab分别创建Host条目,并且指向同一个ssh key
Host wangyun-github
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/wangyun
Host wangyun-gitlab
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/wangyun
接下来我们只需要回到本地仓库目录下执行以下命令即可
git remote add github <ssh>
实现与GitHub关联
git remote add gitlab <ssh>
实现与GitLab关联
注意事项
其中 github 和 gitlab 只是一个别名,可以命名为任何字符串内容,避免重名即可
ssh 需要将HostName替换为Host条目
eg:git@github.com:WY-74/HelloWorld.git 需要变为 git@wangyun-github:WY-74/HelloWorld.git
此时我们可以在我们项目跟目录中的 .git/config
中看到两个 remote 配置,分别为 [remote "github"]
和 [remote "gitlab"]
这样就证明配置成功。
当我们希望从GitHub中拉取代码时执行 git pull github <branch>
即可,或者通过 git pull gitlab <branch>
从GitLab中拉取代码
推送代码操作类似。