git与github


Git的三个区域概念

Git有工作区、暂存区和版本库的概念

工作区 - 就是电脑能看到的目录;

暂存区 - 英文叫stage或index。一般存放在.git目录下的index文件中,所以我们把暂存区有时也叫作索引(index)。

版本库 - 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

avatar

将Git与远端连接

生成SSH Key

输入命令ssh-keygen -t rsa,会生成密钥文件,id_rsa.pub是公钥,密钥文件默认存在home/user/.git文件中(Windows默认存在C:\Users\user.ssh)

添加GitHub的SSH密钥

  1. 登录GitHub账户

  2. 打开Setting

  3. 找到SSH and GPG

  4. 选择SSH Keys

  5. 选择 New SSH Key

  6. 将id_ras.pub的内容粘贴到Key栏

检查是否配置成功

添加SSH Key后,输入命令ssh -T git@github.com查看是否配置成功

Git的命令和操作

可视化学习教程

learngitbranching

简单的操作

查看当前工作区的状态git status

将修改后的文件添加至暂存区 git add

提交修改 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 -d branch_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项目,则需要与远端关联 git remote add origin https://github.com/username/repo_name.git,其中origin是为远端起的名字,也可以用其他名字,一般习惯用origin。如果是从远端clone下来的,就不需要再关联了。

将本地代码push到远端之前,需要先进行pull。完整的pull命令为git pull origin remote_branch:local_branch,也可以省略后面的local_branch,这样会将代码pull到当前分支。还可以使用命令git pull origin,拉取当前的分支所关联的远程分支到当前分支。如果有冲突,则使用命令git pull --rebase origin master,根据提示处理有冲突的代码即可(还有另一种解决冲突的方式,后面再补充)。

完整的push命令为git push origin local_branch:remote_branch,如果省略了远程分支,即git push origin local_branch,表示将本地分支local_branch的推送到与之关联的分支,如果分支不存在就会在远程新建一个相应的分支。

git push --set-upstream origin main push当前的分支并且将remote分支设置成upstream(也就是设置关联吧)

分支合并

一般项目开发中不会直接在主分支上做修改,而是创建一个分支,在分支上修改,测试通过后再merge到主分支上。

  • 先切换到master分支
  • git pull拉取当前分支的更新
  • git merge branch1命令将branch1合并到master