git与github
Git的三个区域概念
Git有工作区、暂存区和版本库的概念
工作区 - 就是电脑能看到的目录;
暂存区 - 英文叫stage或index。一般存放在.git目录下的index文件中,所以我们把暂存区有时也叫作索引(index)。
版本库 - 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

对github进行本地认证
完成这一操作之后,如果以ssh链接从自己帐户的repository中clone到本地,那么从本地push到github上就不需要输入帐户密码了。
生成SSH Key
输入命令ssh-keygen -t rsa,会生成密钥文件,id_rsa.pub是公钥,密钥文件默认存在home/user/.ssh文件中(Windows默认存在C:/Users/user/.ssh)
添加gitHub的SSH密钥
-
登录GitHub账户
-
打开Setting
-
找到SSH and GPG
-
选择SSH Keys
-
选择 New SSH Key
-
将id_ras.pub的内容粘贴到Key栏
检查是否配置成功
添加SSH Key后,在本地终端输入命令ssh -T git@github.com查看是否认证成功。
Git的命令和操作
可视化学习教程
简单的操作
查看当前工作区的状态git status。
将修改后的文件添加至暂存区 git add <file>。
提交修改 git commit -m "commit reason"
查看git日志 git log
查看某次commit的详情 git show commit_id
修改提交人的基本信息 git config --global user.email "xxxxx@xxx.com" git config --global user.name "name"
回滚状态 git reset commit_id
分支branch
创建分支 git branch branchname
切换分支 git checkout branchname
创建并切换分支 git checkout -b branchname
查看本地分支 git branch,带*号的是当前分支
查看远端分支 git branch -r
查看所有分支 git branch -a
查看本地分支与远端分支的关联情况 git branch -vv
删除本地分支 git branch -d <branch-name>
远端分支被删除后,清理本地的远端记录 git remote prune <remote-name>
修改当前分支的分支名 git branch -m new_name,如果new_name被占用,则需要-M参数来强制执行。
git的默认分支是master,原先github的默认分支也是master。但是2020年10月开始,github的默认分支变成了main。因此将本地分支与github默认远程分支关联前,需要将本地分支重命名为main。
版本tag
再当前代码状态新建版本标签tag git tag v1.0
查看历史tag记录 git tag
切换到某个tag git checkout v1.1
push and pull
如果是本地已经有了一个git项目,则需要设置remote。其中<remote-name>可以任意设置。
git remote add <remote-name> <remote-url>
如果是从远端clone下来的,会有一个默认的remote。
在执行git fetch git push git pull等命令之前,需要为所在分支关联远端分支。
分两种情况进行关联:
- 与一个现有的远端分支关联
执行git fetch,这个命令会获取远端的所有分支。在本地创建同名分支(如果还没有),将远端分支merge到本地分支。然后执行git push -u。
如果merge时报错:fatal: refusing to merge unrelated histories,则增加--allow-unrelated-histories选项。 - 不与现有的远端分支关联
执行git push -u <remote-name> <local-branch>会在远端创建一个分支,与本地分支关联,并push本地内容( -u是--set-upstream/--set-upstream-to的缩写)。如果该远端分支已存在,则不会创建新的分支。
完成关联后,以后就可以直接执行git fetch git push git pull等操作了。
分支合并
一般项目开发中不会直接在主分支上做修改,而是创建一个分支,在分支上修改,测试通过后再merge到主分支上。将本地代码push到远端之前,需要先进行fetch并merge(等价于直接pull)。
- 先切换到
master分支。 git pull与远端进行同步。git merge branch1命令将branch1合并到master。git push将修改推到远端。
杂乱的问题
git clone时选择了https链接,导致每次git push时都需要登录验证。
解决办法:
- 创建一个remote,这个
可以取任意名字,一般取origin或upstream。
git remote add <remote-name> <remote-url> - 查看所有remote
git remote -v - 删除原有的https remote。
git remote rm <old-remote>

浙公网安备 33010602011771号