Git使用教程,本地与远程(Github)仓库提交代码
学会如何利用git来管理代码
前言
Git简单来说就是代码版本控制系统,通过他可以进行多人开发同一个项目然后讲每个人的代码块合并完成一个大项目,还能控制代码版本记录等。Git四个区域
- 工作区:处理工作的区域(即做项目打代码的区域)
- 暂存区:已完成的工作临时存放区域,等待被提交
- 本地仓库:存放数据的地方,但是还在本电脑上,若电脑存储空间损坏还是会造成代码消失
- Git远程仓库:最终的存放区域,即远程服务器,电脑存储空间损坏也不影响远程仓库数据
安装git:
sudo apt-get install git
一、本地仓库提交与代码回溯
(1)绑定用户名称和邮箱
# 查看配置
git config -l
git config --global user.name "wangbin"
git config --global user.email "2689812552@qq.com"
(2)创建git项目
在你的代码项目目录下init,会自动创建.git文件夹,用于存放git文件
git init
# 另一种方式是克隆远程仓库,由于是将远程服务器上的仓库完全镜像一份至本地
git clone 链接地址.git
# clone不同分支
git clone -b 分支名称 链接地址.git
例如:
git clone -b master https://github.com/ZARDheart/CplusplusLearn.git
(3)把代码提交到仓库
# 放入暂存区
git add 1_Question.cpp
# 所有文件 放入暂存区
git add .
# 提交到(本地)仓库 -m 参数添加备注
git commit -m "This is a test."
设置忽略文件:在主目录下建立“.gitignore”文件,此文件有如下规则:
- 空行或以井号(# )开始的行将会被忽略。
- 可以使用Linux通配符。例如∶星号(*)代表任意多个字符,问号(﹖)代表一个字符,方括号([abc] )代表可选字符范围,大括号( {string1,string2……})代表可选的字符串等。
- 如果名称的最前面有一个感叹号( !),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/ ),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/ ),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
例如以下这些实例:
touch .gitignore
# 填入:
*.txt #忽略所有的.txt结尾的文件
!lib.txt #但lib.txt除外
/temp #进忽略项目根目录下的TODO文件,不包括其他目录temp
bulid/ #忽略bulid目录下的所有文件
doc/*.txt #会忽略doc/notes.txt 但是不包括doc/sever/arch.txt
(4)git log查看提交节点记录(包括节点名称、commit ID代码、提交人、提交日期和备注)
git log
# 查看具体修改哪些文件
git log --stat
(5)代码回溯
# 查看之前的节点
git diff ${ID}
# 回溯
git reset --hard ${ID}
# 或
git checkout ${ID}
二、代码分支
# 查看分支,如果没有创建只有git自动创建的master,星标的是当前分支
git branch
#新建一个分支,但依然停留在当前分支
git branch 分支名
#新建一个分支,并切换到该分支
git checkout -b 分支名
#删除分支
git branch -d 分支名
# 创建分支develop(用于修改)
git checkout -b develop
# 将新分支合并到master(主程序,稳定版)
# 首先提交
git add .
git commit -m "test3"
# 切换到master分支
git checkout master
# 合并:将develop中新修改的内容添加/覆盖到master(当前分支)
git merge develop
三、提交到远程仓库(Github)
测试ssh,在终端输入
ssh -T git@github.com
显示:
git@github.com: Permission denied (publickey).
这时候需要建立公钥
3.1 建立公钥
(1)在github上找到并点击settings,左边找到SSH keys and GPG keys并点击出现如下界面:
(2)New SSH Key,然后去终端获得密钥
(3)终端输入:
ssh-keygen -C "xx@xx.com" -f ~/.ssh/github
邮箱为自己创建github时用的邮箱,按两次Enter,出现如下代码:
(4)在终端输入代码cat ~/.ssh/github.pub
,出现一大串公钥,将公钥复制到第(2)步的key里面,title随便写个名字即可,然后点击Add SSH Key
(5)在终端输入ssh -T git@github.com
出现以下代码意味着该步骤完成(XXXXX为github帐号名称)
Hi XXXXX! You've successfully authenticated, but GitHub does not provide shell access.
3.2 将本地仓库与远程仓库同步
首先创建自己的本地仓库,以我学习C++的代码为例:
# 初始化
git init
# 所有文件 放入暂存区
git add .
# 提交到(本地)仓库 -m 参数添加备注
git commit -m "Learn code for C + +, unfinished version 12.15"
在个人主页的Repositories中New:
在如下界面中,Repository name填写同名的仓库名,这里是CplusplusLearn,下面可以输入项目描述以及是否公开
创建完成后下面有提示你提交方法:
回到终端,按照以下步骤即可push
git remote add origin https://github.com/ZARDheart/CplusplusLearn.git
git branch -M master
git push -u origin master
push的时候提醒输入Username还有PassWord,Username是指你github完整的邮箱地址,Password是指Personal access tokens,如何知道token呢?步骤如下:
在github的Settings/Developer Settings/Personal access tokens下Cenerate new token
设置token的有效期,访问权限等,要使用token从命令行访问仓库,请选择repo,要使用token从命令行删除仓库,请选择delete_repo,其他根据需要进行勾选
创建之后生成以下代码,复制下来保存,一旦离开这个界面就看不到了
然后重新提交,输入密码的时候直接复制(不会显示,直接回车)
成功提交,如果是公开的仓库,别人可以在https://github.com/ZARDheart/CplusplusLearn中看到了。我这是学习C++时使用的代码,可以参考
三、删除git的分支
# 删除本地分支
git branch -d <BranchName>
# 删除远程分支
git push origin --delete <BranchName>
提示如下截图错误信息:
To https://github.com/ZARDheart/CplusplusLearn.git
! [remote rejected] master (refusing to delete the current branch: refs/heads/master)
error: failed to push some refs to 'https://github.com/ZARDheart/CplusplusLearn.git'
删除指定的分支是当前默认分支,所以无法删除,在仓库的settings中将当前默认分支有master修改main(重新提交的),再次删除即可正常
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!