目录指导:
一、git与github配置
二、git版本控制命令流程
-------------------------------------------------------配置git与github-------------------------------------------------
0.1https://github.com
0.2官网登录
0.3下载git客户端
1.生成秘钥 打开git客户端,执行命令
ssh-keygen -t rsa -C "github的邮箱账号"
2.注意,需要给.ssh的7000权限
sudo chmod -R 700 ~/.ssh
去这个目录,寻找id_rsa.pub文件,把文件的字符串复制。
登录官网github.com右上角人头像—》setting à ssh and gpg keys à new ssh key
--》制的内容—》add ssh keys
2. 验证秘钥
git客户端输入ssh -T git@github.com ,按提示输入 yes 提示successfully即可
3. 在服务器添加完公钥之后,ssh服务器然后报了这个错误
sign_and_send_pubkey: signing failed: agent refused operation
然后执行了以下命令才好。。
eval "$(ssh-agent -s)"
ssh-add
3.建立身份标识
git config --global user.name 'github邮箱用户’
git config --global user.email github邮箱用户
-------------------------------------------------------git版本控制--------------------------------------------------------------------
目录:
--新建项目并提交到github服务器仓库
--修改了文件没有提交,如何恢复
--删除文件,如何恢复
--如何把对应版本代码克隆岛本地
--修改代码前必须要做的事
--修改了代码,如果提交服务器的对应的版本
案例1:把项目提交到github仓库
进入d盘,你的项目地址
注意,有时候一些文件隐藏了.gitignore,凡是在目录中包含这个文件,将被忽略提交到github
cd /d
mkdir www
cd www
创建一个文件随便输入字符保存退出
设置全局编码,防止代码乱码
git config --global gui.encoding utf-8
把项目缓存本地仓库
git add *
提交到本地仓库并备注
git commit –m “修改了文件”
推送到github的仓库
如何创建github仓库,登录官网,人头像旁有个+号 new repository
创建完毕有有一个项目地址https://xxx.com/unrelaxs/test.git
创建完仓库后,提交到github仓库
配置一下项目的地址
git remote add origin https://xxx.com/unrelaxs/test.git
把本地分支推送到服务器分支上–u表示如果仓库没有则新建一个
git push –u origin master[默认是master,如果有版本号则填写版本号]
接着刷新https://xxx.com/unrelaxs/test.git这个网址,就能到你修改的内容了
案例2:修改了文件,却没有任何的操作,想恢复到之前的代码
.代表所有文件 或者也可以指定具体路径下的文件
git checkout -- .
案例3: 修改了文件,commit到缓冲区了(经过了add 和 commit),但是没有提交到github
git reset HEAD .
案例3:删除了文件如何恢复??
git log
会弹出一个修改的列表:如
commit c2d7f0dc6196c87e636d121bf7f163ad31d8915d
commit 后的就是id了
恢复54:35时间的东西
git checkout id .
案例4:如何把对应版本代码克隆岛本地
git clone –b 版本号 代码链接
案例5:在修改代码前,必须要做的事
在修改前,必须是git pull 更新本地代码
案例6:修改本地代码如何提交到服务器??
git pull origin 1.0(指定1.0版本)或者 git pull
然后是
git add .
git commit –m “修改了test文件”
***git push 后的origin1.0 是指定版本,可不填写***
git push origin 1.0
案例7:从git上获取项目??
git init 初始化一个仓库
git remote add origin 网址
git pull origin 分支
git checkout -b xx分支 #如果没有该分支则尝试会创建这个分支
案例8:从git上面 clone下来的项目后,如何拉取次分支以及合并主分支的代码呢?
git init
git clone http://xxxx
git branch -r 查看远程仓库的分支,如果没有,请重新操作,还是不行,只能百度了
git pull origin 分支名 注意了 origin是仓库名名,,如果 git branch -r 查看到 xx/origin/mobile 则第一个斜杠后,即origin为仓库名,mobile为分支名
案例9:从git上面 clone下来别人的项目后,如何提交到自己项目上?
git init
git clone http://xxx
git remote add origin http://你自己的项目地址
git pull origin master --allow-unrelated-histories
git add .
git commit -m "版本合并"
git push origin master
案例10:屏蔽某个目录,某个文件不提交到git
.gitignore文件语法如下
# 此为注释 – 将被 Git 忽略
*.a
# 忽略所有 .a 结尾的文件
!lib.a
# 但 lib.a 除外
/TODO
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/
# 忽略 build/ 目录下的所有文件
doc/*.txt
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
在项目根目录创建.gitignore
案例10:新建一个分支,拉取另外一个分支代码, 并把新的分支合并到另外一个分支
git checkout -b feature_line
git pull origin develop //拉取develop代码
git add .
git commit -m "创建了个分支"
git push origin feature_line
git checkout -b develop //切换develop分支
git pull origin develop
git merge feature_line //合并分支
git push origin develop //推送合并后的结果
案例11:同个电脑用不同的账号,账号对应不同的 github平台
1. 生成sshkey ssh-keygen -t rsa -C "邮箱账号"
注意不要全部回车键 这里要写存储的路径如
$ ssh-keygen -t rsa -C "gg"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): 这里填写绝对路径 或者相对路径 命名两个账号都不同如:/c/Users/Administrator/.ssh/id_rsa_one
接着全部回车键,默认
$ ssh-keygen -t rsa -C "gg"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): 这里填写绝对路径 或者相对路径 命名两个账号都不同如:/c/Users/Administrator/.ssh/id_rsa_two
2. 进去/c/Users/Administrator/.ssh/ 这个目录
把 id_rsa_one.pub 跟two.pub 的秘钥 分别粘贴到不同的平台
3. 在这个目录 /c/Users/Administrator/.ssh/ 创建一个config文件,注意没有后缀
config文件内容如下:
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_two
Host github_1033
HostName gitee.com
IdentityFile ~/.ssh/id_rsa_one
注意了,上面我分别是 github.com 分别对应的是 github.com的平台,秘钥是 id_rsa_two ,在github后台别粘贴错秘钥!!
而 github_1033 对应是 gitee.com的平台(码云),秘钥是 id_rsa_one
4. 在添加源的时候
git remote add origin git@github_1033:unrelaxs/object-design.git
码云明天的ssh项目地址是:git@gitee.com:unrelaxs/object-design.git
因此我把gitee.com改为github_1033就行了
4.1对比两个commit,并导出所有的文件
git archive -o ./export.zip 39e4d8cc9744877999b3f0554b48afe01ae83114 $(git diff --diff-filter=ACMR --name-only 25a0a906f4eb11d1da9654048c3af95ac50a8dac 39e4d8cc9744877999b3f0554b48afe01ae83114)
a0ca27310aab94205d18c3415bd40b9821de2650 开始 commitId
7b9cead0f411ce42637f7633cfbb7c9078d3202e 结束 commitId
5. 忽略某文件夹下所有的内容提交,但保存该文件夹
在文件夹下 创建一个.gitignore,内容如下
# ignore all except .gitignore file
*
!.gitignore
6. 其他命令
git reset --hard origin/master 本地分支保持与远程分支一致
git reset HEAD 文件名 git add后撤销操作
git reset --hard $id $id=git log查看到的唯一标识窜
7. git commit -m 标识
如修改bug: git commit -m "fix 修改了用户登录bug"
案例12:想看一下分支是基于哪个分支拉的创建的
$ git reflog --date=local | grep fix-auto-goods-order
915122c589 HEAD@{Thu Oct 20 11:02:08 2022}: checkout: moving from sit to fix-auto-goods-order
a195173107 HEAD@{Thu Oct 20 11:02:03 2022}: checkout: moving from fix-auto-goods-order to sit
915122c589 HEAD@{Thu Oct 20 10:57:45 2022}: checkout: moving from sit to fix-auto-goods-order
1578bef451 HEAD@{Wed Oct 19 14:39:41 2022}: checkout: moving from fix-auto-goods-order to master
1578bef451 HEAD@{Wed Oct 19 10:21:05 2022}: checkout: moving from feature-PLM-82518 to fix-auto-goods-order
774c26887a HEAD@{Tue Oct 18 14:31:34 2022}: checkout: moving from fix-auto-goods-order to feature-PLM-82518
1578bef451 HEAD@{Tue Oct 18 14:16:46 2022}: checkout: moving from master to fix-auto-goods-order
1578bef451 HEAD@{Tue Oct 18 14:16:29 2022}: checkout: moving from fix-auto-goods-order to master
1578bef451 HEAD@{Tue Oct 18 14:15:45 2022}: checkout: moving from master to fix-auto-goods-order
上面代码片段最后一行 moving from master to xx,就是从master分支新建的fix-auto-goods-order