0 使用 git 前准备
1 初始代码包上传(针对一个项目的代码)
2 远程克隆代码
3 如何删除远程存储库Repositories内的文件
4 本地修改或增加文件后同步至远端
5 远端修改或增加文件后同步至本地
6 撤销操作
7 修改提交 Git reset复位(三个选项)
8 Git HEAD 游离的解决办法
9 分支操作
10 使用标签
11 Git标准注解
0 使用 git 前准备
0.1 注册Github账户
0.2 创建 Repositories,新建仓库可勾选 initialize this repository with a README
0.3 安装Git工具,分windows和lunux系统
0.4 配置Git环境,打开终端输入如下命令,3次回车生成密钥文件,找到后与github端绑定
ssh-keygen -t rsa -C "79225****@qq.com"
0.5 验证配置是否成功
ssh -T git@github.com
此处可能会出现如下错误,直接输入yes回车即可
The authenticity of host 'github.com (52.74.223.119)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
0.6 配置身份标识用户名和密码
git config --global user.name "userName"
git config --global user.email "79225****@qq.com"
1 初始代码包上传(针对一个项目的代码)
1.1 建立文件目录
途径1:推荐方法是在远端github新建Repositories,然后clone到本地
途径2:本地建立工作目录,和远程Repositories同名,然后执行 $ git init,添加远程仓库管理,代码如下
git remote add origin git@github.com:userName/仓库名.git
1.2 对工作目录内的文件增删、修订之后
git add . 或者 $ git add <某个文件>
git commit -m "提交信息"
git status 可多次使用查看状态; $ git log 查看提交记录
git push git@github.com:用户名/仓库名.git
1.3 注意:如果使用途径2新建的可能push没效果,因为远端仓库有别的文件,此时运行
git push --all -f
进行强制覆盖至此,就可在远端github仓库看到上传的文件了
2 远程克隆代码
2.1 运行如下命令
git clone git@github.com:lochinasc1017/文件夹名.git
地址协议除了HTTP(s)以外,还支持SSH、Git、本地文件协议等
2.2 克隆的代码也有提交记录等信息
2.3 如果远程代码有更新,为了是本地与远程一致,编辑代码前可以执行拉去操作
git pull
3 如何删除远程存储库Repositories内的文件
3.1 首先从远程仓库把代码同步下来
一种方法使用 git clone
另一种如果远端文件更改了,就 git pull 来更新本地文件, 分支如果没跟踪就设置跟踪
git branch --set-upstream master(本地分支) origin/master(远端分支)
3.2 手动删除本地目录内的文件
git add .
git commit -m "提交信息"
git push <远程主机名> <远程分支名>或者Repositories的SSH地址
4 本地修改或增加文件后同步至远端
本地操作包括:修改文件内容、新建文件、新增含文件的文件夹
git add .
git commit -m "提交信息"
git push
5 远端修改或增加文件后同步至本地
远端操作包括:修改文件、添加文件、添加文件夹
git pull
6 撤销操作
6.1 本地修改且未添加到暂存区的恢复
git checkout <修改文件名>
注:使用提交的记录进行恢复,也可恢复工作树中删除的文件
6.2 本地修改且已添加到暂存区的恢复
git checkout head -- string.py(恢复的文件名)
6.3 恢复至某一次提交(本方法不推荐)
git checkout <commit ID>
注意这种操作会把HEAD指针移到上面的ID 提交上,容易使HEAD游离,要慎重使用
7 修改提交 Git reset复位(三个选项)
git reset --soft <commit ID> 仅移动HEAD指针位置,移动之后HEAD原来指向的提交ID还在,用于只取消提交
git reset --mixed <commit ID> 移动HEAD位置,索引被修改,用于取消修改过的索引
git reset --hard <commit ID> HEAD位置、索引、工作树均被修改,用于彻底取消提交
git reset --hard HEAD~(以ID相对位置更改提交) HEAD~表示HEAD的前一次提交
上述三个操作不太熟悉,图解示意图见OneNote笔记
8 Git HEAD 游离的解决办法
Git reset 复位指针时,容易出现指针游离,比如 $ git checkout < commit id>,即切换到指定的某一次提交,HEAD 就会处于 detached(游离状态)
优点:HEAD 处于游离状态时,我们可以很方便地在历史版本之间互相切换,比如需要回到某次提交,直接 checkout 对应的 commit id 或者 tag 名即可
缺点:在这个基础上的提交会新开一个匿名分支,也就是说我们的提交是无法可见保存的
解决办法:新建一个分支保存游离状态后的提交
git branch -v # 查看当前领先多少
git branch temp # 新建temp分支
git checkout temp #把当前代码放到新建分支
git status
git checkout master #回到原来的分支
git merge temp #合并分支
git status
git diff # 如果有冲突,就修改源文件,然后再add和commit
git branch -d temp # 删除临时新建的分支
9 分支操作
将当前工作add和commit
git branch <branchname> # 新建分支
git checkout <branch> # 切换分支,在本分支提交,历史记录会记录在本分支
git checkout master # 切换到 master 分支
git merge <待合并的分支> # 合并
git branch -d <分支名> # 删除不用的分支
并行操作
建立分支2和分支3并分别在相应的分支修改、add、commit
切换到master分支,合并分支2, fast-forward模式合并
合并分支3会出现冲突,因为与分支2在同一行进行了修改
git diff # 在冲突的地方,生成了内容的差异,然后去文件里修改
执行 add 和 commit # 这也完成了合并,这种手动更改的合并成为non fast-forward
10 使用标签
git tag -a 'Release_1_0' -m 'Tagged basic string operation code' HEAD # 标记当前HEAD指针,如果要标记特定提交,则使用相应的 <commit ID>
git push origin tag Release_1_0 # 推送到远程 Repositories
git tag -l # 查看标签
git show <tagname> # 显示更详细的标签信息
git tag -d <tagname> # 删除标签,标签名比如 Release_1_0
11 Git标准注解
第1行 提交修改内容的摘要
第二行 空行
第三行以后 修改的理由
一份易上手的教程: Git教程
子模块使用-参考链接
git中submodule子模块的添加、使用和删除_开发工具_guotianqing的博客-CSDN博客blog.csdn.net未完待续。。。