- 配置git
- 先下载并安装git,https://git-scm.com/
- 安装完毕后,打开
Git Bash
- 配置用户名和邮箱
对于配置用户名和邮箱的理解:git config --global user.name "test" git config --global user.email "test@xx.com"
这里配置的用户名和邮箱并不会进行验证,即,当你push
到远程仓库时,并不是用它俩来做身份认证和鉴权的。
那这里配置的用户名和邮箱有啥用?因为git是个版本控制系统,我们用git只是为了追踪历史变更记录,以及多人协作。使用git不一定需要连接到远程仓库,不一定需要网络。你可以在自己本地维护一个git仓库,记录仓库里的修改。git的版本链是由一次一次的commit构成,一次commit就是一次更新,那在多人协作时,我们当然需要标记一下,某次commit是由谁提交的。这个用户名和邮箱就仅仅是起了这么作用,即标记某次commit是谁提交的。它只是一个comment,一个记号,并不会做校验。
所以,理论上,随意配置一个用户名和邮箱,都不影响git的使用,但通常建议配置为自己真实的邮箱 - 配置
ssh key
工作中我们通常需要把本地git仓库和远程仓库进行关联。当我们在本地修改了一些代码后,需要通过git进行提交,并同步更新到远程仓库(git push
)。同样的,当远程仓库有其他人做了更新后,我们需要从远程仓库拉去最新的版本到本地(git pull
)。这种需要涉及到和远程仓库的通信,有两种方式:ssh
或https
。ssh
访问需要配置ssh key
,在本地机器使用ssh-keygen
生成一对密钥对,并把公钥上传到服务器。而https
访问则每次需要验证用户名和密码。ssh
不利于匿名访问,比较适合内部项目,比如个人项目,或者工作上的项目。https
比较利于匿名访问,比较适合开源项目(方便他人clone
,但没有push
权限)。
接下来我们配置ssh key
,打开Git Bash
,运行ssh-keygen -t rsa -C "test@xx.com"
,然后一路回车。最终会生成一对密钥对,私钥文件名为id_rsa
,公钥为id_rsa.pub
。随后将id_rsa.pub
里的公钥信息,复制并拷贝到服务器端。 - 解决中文乱码
我们使用git status
,中文可能会被显示为数字,这时再进行一下配置即可
在git config --global core.quotepath false
Git Bash
中右键,选择Options
,左侧侧边栏选择Text
,右侧将Locale
设置为zh_CN
,字符集CharacterSet
设置为UTF-8
# 对于已经commit并且push到远程仓库的提交, 想要修改author怎么办 # 第一步 git rebase -i HEAD~n # 要对最近的几次commit进行修改author操作 # 第二步然后按`i`编辑,把`pick` 改成 `edit`,按'Esc'退出编辑,按`:wq`保存退出 # 第三步, 有几个提交就要进行几次这个操作, 相当于针对每一次commit做修改 git commit --amend --author="authroName<email@xxxx.com>" --no-edit # 第四步 git rebase --continue # 第五步, 强制push git push -f
-
新建仓库
# 先在远程新建一个仓库 # 然后在本地找一个目录, 先初始化一个本地仓库 git init # 然后将本地仓库和远程仓库做关联 git remote add origin git@github.com:yogurtzzz/demo.git # 然后在本地进行一些coding, 并push到远程仓库 git add . git commit -m "init" git branch -M main # 老项目需要先修改分支名为main git push -u origin main git push -u origin master # 如果本地仓库因为某些原因丢失了它所track的远端仓库, 则可以用如下命令进行重新追踪 git branch --set-upstream-to=origin/master master # 若远程仓库被删掉了, 则要在本地仓库中移除其所track的远端仓库 git remote remove origin # 如何查看本地仓库所跟踪的远端仓库的地址 git remote show origin git remote -v # 查看连接远程仓库的地址(可以看到用的是https还是ssh) # 若每次push都需要输入账号和密码, 可能远程地址用的是https协议, 可以通过如下命令进行修改 git remote remove origin # 先移除origin git remote add origin git@github.com:yogurtzzz/demo.git # 查看所有远程分支 git branch -r # 查看所有分支 git branch -a git branch -d v1.2 # 删除本地的v1.2分支 git branch -vv # 查看本地仓库和远程仓库的对应情况 # 查看当前对应的远程仓库地址 git remote -v # 重新设置远程仓库地址 git remote set-url origin xxxxxx
-
分支
# 新建分支 git branch bugFix #新建一个分支bugFix git checkout bugFix #将当前分支切换到bugFix git checkout -b bugFix #新建一个分支并切换过去 # 从远端仓库检出一个分支 ,并切换过去,下面检出远端的 origin/sprint-101 分支, 且在本地起名为 sprint-101,并切换到该本地的 sprint-101 分支 git checkout -b sprint-101 origin/sprint-101 # 普通切换分支 git checkout spring-101 # 删除分支 git branch -d dev # 删除本地的dev分支 # 删除远端分支 git branch -r -d origin/v1.2 # 删除本地的远程分支, r for remote git push origin --delete v1.2 # 将远程分支的删除推送到服务器 # 将新建的远程分支推送到远端服务器 git checkout -b v1.6 git push origin v1.6:v1.6 git branch -m oldName newName # 重命名分支 # 将本地分支和远端分支进行关联 git branch --set-upstream-to=origin/remote_branch_name local_branch_name
-
远端新建分支后,更新本地分支
git remote update
-
查看本地分支和远程分支对应关系
git branch -vv
-
若远端分支删除了, 需要更新本地
git remote prune origin
-
远端分支地址改变后,重新进行设置
git remote set-url origin https://xxx.com/abc.git/
-
查看历史提交
# 查看简短的提交信息 git log --pretty=oneline
-
版本回退
# 回退到上一个版本 git reset --hard HEAD^ # 回退到 abcd123 指定的版本 git reset --hard abcd123
-
多个提交记录合并成一个
# 比如最近有3个commit,它们的commitId分别为 abcd1,abcd2,abcd3 # 指定合并后的commitId,比如打算将abcd2和abcd3合并成一个 git rebase -i HEAD~2 # 将最近2个commit进行合并 git rebase -i abcd1 # 进入编辑器 pick abcd2 squash abcd3 # 用wq保存退出, 这样abcd2和abcd3就合并为了一个
-
关于标签
标签其实是一个轻量级的分支,或者说是一个不可变的分支,它指向特定提交对象的引用。通常,我们可以使用标签来标记一些特定的提交。比如,在某次大版本上线前,我们将最后一个提交记录打上一个标签,将其标记为一个里程碑式的节点。方便对版本迭代进行追踪。
# 打标签
git tag v1.3 # 在当前HEAD指向的位置,创建本地标签, 标签名为 v1.3
git tag -a v1.3 -m "v1.3版本上线" # 创建标签, 并添加附注
git push origin v1.3 # 将本地标签 v1.3 推送到远程仓库
# 查看标签
git tag # 查看本地所有标签
git show v1.3 # 查看v1.3标签的详细信息, 能看到附注
# 删除标签
git tag -d v1.3 # 删除v1.3标签
git push origin :refs/tags/v1.3 # 将删除标签推送到远程分支
# 检出标签
git checkout v1.3 # 将HEAD指针指向v1.3, 此时会导致HEAD处于DETACH状态
git checkout -b back_v1.3 v1.3 # 创建一个分支back_v1.3, 并在这个分支上检出标签v1.3
附:git趣味学习网站:https://learngitbranching.js.org/