如何使用Git管理项目代码
一、注册Github并创建仓库
这一步不细说了,需要科学上网,参考这篇文章,[[03_如何访问Google。。学术来查阅文献|Google学术访问方法]]。
下载安装Git。
二、下载Git并配置
2.1 Git安装
下载安装Git。
在资源管理器内右键,选择Git bash here
打开Git界面。
2.2 Git配置
输入下面的代码,按下回车,生成ssh密钥
1 | ssh-keygen -t rsa -C "邮箱地址" |
出现要求设置密码,可以不用设置,连续回车两次就可以。
打开C:\Users\用户名\.ssh
,可以看到有一个id_rsa.pub
文件,这就是刚才生成的密钥。
使用记事本打开此文件,复制里面的密钥内容。
2.3 Github添加ssh key
进入Github官网,点击右上角【setting —> SSH and GPG keys —> New SSH key】,在这里添加密钥,其中
- Title:自己写一个ssh key的名字,用于区分多个ssh key
- Key:刚刚复制的密钥
填写完成后点击Add SSH key添加。
然后在git bash中输入
1 | ssh -T git@github.com |
如果连接成功,会让你输入yes/no
,输入yes即可。
2.4 配置用户名和邮箱
输入下面的代码配置自己的用户名和邮箱,两个信息都要和Github账号的信息一致
1 | git config --global user.name "用户名" |
三、代码管理
3.1 代码上传
(1)初始化
创建一个文件夹,在这个文件夹内,右键git bash here
,然后输入git init
完成初始化。
可以看到目录中出现了一个.git
隐藏文件夹,这说明已经完成了初始化。
(2)链接远程仓库
在刚刚的git bash
窗口,输入下面的命令同步到远程仓库
1 | git remote add origin git@github.com:用户名/仓库名.git |
如果出现fatal: remote origin already exists.可按以下步骤
1 | git remote rm origin |
(3)上传本地文件
添加本地文件
1 | git add. |
提交本地文件
1 | git commit -m "说明信息,一般说明本次提交更新了什么" |
推送到远端仓库
1 | git push git@github.com:用户名/仓库名.git |
3.2 拉取代码
从项目中拉取代码
1 | git pull origin master |
如果出现fatal: refusing to merge unrelated histories
1 | git pull origin master --allow-unrelated-histories |
3.3 分支管理
(1)查看分支
在命令行窗口的光标处,输入git branch命令,查看 Git 仓库的分支情况。分支前有*表示是当前所在的分支。
(2)创建分支
使用下面的命令创建一个名为a的分支
1 | git branch a |
(3)分支切换
在命令行窗口的光标处,输入git checkout a命令,切换到a分支。
(4)合并分支
切换到master分支,然后输入git merge a命令,将a分支合并到master分支。
(5)删除分支
在命令行窗口的光标处,输入git branch -d a命令,删除a分支。
(6)为分支添加标签
在命令行窗口的光标处,输入git tag test_tag命令,为当前分支添加标签test_tag
3.4 修改分支名称
假设分支名称为oldName,想要修改为 newName
- 本地分支重命名(还没有推送到远程)
1 | git branch -m oldName newName |
- 远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同)
重命名远程分支对应的本地分支
1 | git branch -m oldName newName |
到github修改默认分支的分支名。
上传新命名的本地分支
1 | git push origin newName |
把修改后的本地分支与远程分支关联
1 | git branch --set-upstream-to origin/newName |
注意:如果本地分支已经关联了远程分支,需要先解除原先的关联关系:
1 | git branch --unset-upstream |
3.5 报错信息
(1)error: src refspec master does not match any. error: failed to push some refs to
仔细检查push的是master
分支还是main
分支。