github同步数据实战

来源:互联网 发布:鸟哥 linux 编辑:程序博客网 时间:2024/06/11 20:12

--------------------
Linux下使用git命令及github项目
说明:于2017年8月26日测试ok(金工)
  
在linux下搭建git环境
1、注册Github账号,网站:https://github.com
2、Linux创建SSH密钥:
git  config  --help
git  config  --global  user.name  "sky"    //用户信息
git  config  --global  user.mail  "sky@qq.com"   //用户邮箱


方法一:非交互式生成密钥:ssh-keygen  -t rsa -N '' -f  ~/.ssh/id_rsa -C "12700696@qq.com"    
cat  ~/.ssh/id_rsa.pub //提交密钥,复制里面的密钥(第3步要粘贴)
说明:ssh-keygen是ssh密钥生成器,-t指定算法为rsa,-N指定密码为空,-f指定私钥位置,-C指定注释信息(不指定则为主机名)。


方法二:ssh-keygen -t rsa -C "12700696@qq.com" //生成密钥,邮箱同上
cat  ~/.ssh/id_rsa.pub //提交密钥,复制里面的密钥


方法三:ssh-keygen  ##一直默认就可以了 
cat  ~/.ssh/id_rsa.pub //提交密钥,复制里面的密钥


3、将公钥加入到Github账户信息Account Settings->SSH Key
方法:登录到github网页中登陆自己的账号,然后再account setting中,找到SSH KEY讲复制的密钥加入(需要再次输入github的密码)


4、测试验证是否成功。
ssh -T git@github.com     提示successfully说明成功
Hi someone! You've successfully authenticated, but GitHub does not provide shell access.  


同步github到本地
1、复制项目到本地:
git clone git@github.com:rshare/docker-installer.git   ##以SSH方式克隆到本地,可以读写  
git clone https://github.com/rshare/docker-installer.git ##以https方式克隆到本地,可以读写  


git同步的其他命令:
git clone git://github.com:xxxx/test.git ##以gitreadonly方式克隆到本地,只可以读  
git clone git@github.com:xxx/test.git  ##以SSH方式克隆到本地,可以读写  
git clone https://github.com/xxx/test.git ##以https方式克隆到本地,可以读写  
git fetch git@github.com:xxx/xxx.git  ##获取到本地但不合并  
git pull git@github.com:xxx/xxx.git ##获取并合并内容到本地  


本地提交项目到github
1、本地配置
git config --global user.name 'onovps'   #设置用户名标识
git config --global user.email 'onovps@onovps.com' #全局联系方式,可选  
git config --list    #查看git环境设置


2、新建Git项目并提交到Github。
mkdir testdir && cd testdir  
touch README.md  
git init #初始化一个本地库  
git add README.md #添加文件到本地仓库  
git rm README.md #本地倒库内删除  
git commit -m "first commit" #提交到本地库并备注,此时变更仍在本地。  
git commit -a  ##自动更新变化的文件,a可以理解为auto  
git remote add xxx git@github.com:rshare/docker.git  #增加一个远程服务器的别名。  
git remote  ##查看git远程服务器
git remote rm xxx   ##删除远程版本库的别名  
git push -u remotename master #将本地文件提交到Github的remoname版本库中。此时才更新了本地变更到github服务上。  


分支版本操作
1、创建和合并分支
git branch #显示当前分支是master  
git branch new-feature  #创建分支  
git checkout new-feature  #切换到新分支  
vi page_cache.inc.php  
git add page_cache.inc.php  
git commit -a -m "added initial version of page cache"  
git push origin new-feature  ##把分支提交到远程服务器,只是把分支结构和内容提交到远程,并没有发生和主干的合并行为。  


2、如果new-feature分支成熟了,觉得有必要合并进master
git checkout master  #切换到新主干  
git merge new-feature  ##把分支合并到主干  
git branch #显示当前分支是master  
git push  #此时主干中也合并了new-feature的代码  


--------------------------------------------
实例:rshare个人github同步数据实战。
git环境准备:
yum  install   -y   git
git  config  --help
git  config  --global  user.name  "sky"    //用户信息
git  config  --global  user.mail  "sky@qq.com"   //用户邮箱


第1步,登录github:
1、注册Github账号,网站:https://github.com   我的账号:rshare  密码:pass000
2、Linux创建SSH密钥:
方法一:非交互式生成密钥:ssh-keygen  -t rsa -N '' -f  ~/.ssh/id_rsa -C "12700696@qq.com"    
cat  ~/.ssh/id_rsa.pub //提交密钥,复制里面的密钥(第3步要粘贴)
说明:ssh-keygen是ssh密钥生成器,-t指定算法为rsa,-N指定密码为空,-f指定私钥位置,-C指定注释信息(不指定则为主机名)。
3、将公钥加入到Github账户信息Account Settings->SSH Key
方法:登录到github网页中登陆自己的账号,然后再account setting中,找到SSH KEY讲复制的密钥加入(需要再次输入github的密码)


4、测试验证是否成功。
ssh -T git@github.com     提示successfully说明成功
Hi someone! You've successfully authenticated, but GitHub does not provide shell access.  


##同步github到本地
1、复制项目到本地:
mkdir  /test
cd  /test
git clone git@github.com:rshare/mydocker.git   ##以SSH方式克隆到本地,可以读写  
git clone https://github.com/rshare/docker-installer.git ##以https方式克隆到本地,可以读写  
ls  查看文件列表


2、创建新文件,并上传到github中。
cd  /test/mydocker
ls -a
git  remote
cp  -v  /etc/{hosts,group,passwd}  ./
git  add  hosts  group  passwd
git  status
git  commit  -m  '3files'
git  push  -u  origin  master
验证:在github个人网站的mydocker仓库中查看是否多了三个文件(hosts,group,passwd)。


git其他命令:
git branch   #查看分支(即目录结构) 




3、删除远程仓库中的文件。
cd  /test/mydocker
ls  -a
git rm --cached  hosts  group  passwd    #删除缓存数据,并不删除本地文件
git  status
git commit -m "hehe" 
git push origin 
验证:在github个人网站的mydocker仓库中查看是否少了三个文件(hosts,group,passwd)。


====网络docker  hub的应用===============
flyer520对docker镜像下载和上传实例:
第1步,注册docker-hub账号。在https://hub.docker.com/网站注册。
注:我的账号是flyer520,邮箱12700696@qq.com


第2步,linux登录docker测试。
我的账号:docker login  --username=flyer520  --email=12700696@qq.com  (登录OK)
查看登录信息:cat  ~/.docker/config.json 


第3步,下载docker镜像。
docker  pull  busybox
docker  pull  nginx
docker  images


第4步,修改标签(重设标签)。
测试1:修改nginx标签,并push上传到flyer520的docker-hub中。
docker  tag   nginx  flyer520/nginx
docker  push  flyer520/nginx


测试2:修改busybox标签,并push上传到flyer520的docker-hub中。
docker  tag   busybox  flyer520/busybox
docker  push  flyer520/busybox


验证:登录到docker-hub,查看是否多了nginx镜像。




待续....


到此,本实验操作完毕。

=================

##git安装和使用案例(centos6.5)
##git案例在线资料:https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%8A%80%E5%B7%A7%E5%92%8C%E7%AA%8D%E9%97%A8
git简介:
Git是目前世界上最先进的分布式版本控制系统。可以将同一个文件在不同时间的修改结果保存到git仓库中,随时可以恢复到某个需要的版本进行查看。
常规的文件版本管理实现:每次修改前复制上一个版本,在文件名中用数字或日期来标识版本号,再修改其内容,然后保存。
git版本管理:直接对文件修改,用git提交版本到仓库中,文件名不改变,用版本标识来区分。每次修改后必须提交修改版本并指定“版本标识”。恢复版本时用"版本标识"的SHA序列号。


git工作过程:创建本地文件--->复制到Staging area(index)--->提交到git repository仓库


学习网站:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373962845513aefd77a99f4145f0a2c7a7ca057e7570000
网友的github实用资源:https://github.com/dl528888/ansible-examples
说明:上面的网友的github中有很多实用的案例,是ansible自动化运维必备的资源。


#本地yum源安装
yum  install  -y  git


#git常用命令
全局设置:
git  config  --global  user.name  "用户名"
git  config  --global  user.mail  "用户名@qq.com"


初始化:git  init  /目录


添加文件缓存区:git  add  文件名
查看git状态:git  status
添加文件到git仓库中:git  commit  -m  "版本描述"


查看git日志:git  log
删除文件:rm  文件名 ; git  rm  文件名
恢复文件:git  reset  --hard   SHA序号




#案例
#目标:
1、创建一个项目目录/pro
2、设置git的全局参数
3、用git对目录中的文件版本进行管理:初始化git数据
4、管理工作如下:(生成文件、提交版本、恢复)
a、创建新文件my.txt,添加一行内容
b、用git将文件添加到git的缓存区
c、用git提交当前版本,并查看git状态和日志
d、再次在my.txt文件中增加一行内容,参考b、c步骤的步骤处理my.txt文件
e、再次执行d的操作。
f、删除my.txt文件,将删除操作提交保存到版本信息中,查看git状态和日志。
g、用git恢复my.txt到第一次保存的版本,查看my.txt文件内容。
k、查看git日志文件,恢复到my.txt第3次保存的版本,查看my.txt文件内容。


#实施步骤:
1、创建一个项目目录/pro
mkdir  /pro


2、设置git的全局参数
git  config  --help
git  config  --global  user.name  "sky"    //用户信息
git  config  --global  user.mail  "sky@qq.com"   //用户邮箱
说明:用来标识是哪个用户提交的版本。团队开发时必须区分。


3、用git对目录中的文件版本进行管理:初始化git数据
cd  /pro     
git  init   //生成git的初始化数据,用于后git后期对/pro目录进行管理


4、管理工作如下:(生成文件、提交版本、恢复)
a、创建新文件my.txt,添加一行内容
cd  /pro
vi  my.txt  添加如下内容
first  hello
:wq保存退出vi


git  status   //查看git状态


b、用git将文件添加到git的缓存区
git  add  my.txt
git  status


c、用git提交当前版本,并查看git状态和日志
git  commit  -m  "1 my.txt"    //提交当前版本到git仓库中
git  log    //查看git日志
git  status   //查看git状态


d、再次在my.txt文件中增加一行内容,参考b、c步骤的步骤处理my.txt文件
vi  my.txt  添加如下内容
2 hello  world
:wq保存退出vi


git  status
git  add  my.txt
git  commit  -m  "2 my.txt"
git  log
git  status


e、再次执行d的操作。
vi  my.txt  添加如下内容
3 hi world
:wq保存退出vi


git  status
git  add  my.txt
git  commit  -m  "3 my.txt"
git  log
git  status


f、删除my.txt文件,将删除操作提交保存到版本信息中,查看git状态和日志。
rm  my.txt    //删除my.txt文件
git  rm  my.txt    //用git删除my.txt文件,仍然保存在git仓库中
git  commit  -m  "del  my.txt"
git  log
git  status


g、用git恢复my.txt到第一次保存的版本,查看my.txt文件内容。
git  log   //查看git日志,并复制需要恢复的commit版本号(SHA值)
git  reset  --hard  24e0f54e8ebfe987d04697d2fdd0fd55d9232856


k、查看git日志文件,恢复到my.txt第3次保存的版本,查看my.txt文件内容。
git  log  /pro      //查看/pro目录的git日志,发现没有需要的日志,用下一条命令查看所有日志
cat  /pro/.git/logs/HEAD   //查看所有日志,并记下要恢复的commit版本号(每行行首)
cd  /pro
git  reset  --hard  24ccb8f08c4ea3a1cee3e9e2e1dd98afbe934e2b


==============================
网络github的使用
Git链接到自己的Github(1)简单的开始


  好久没写帖子了,今天回来先开始弄下Git,在版本控制下更加宏观地观察每次的变化。


1、在centos中安装git
yum  install  -y  git git-core
  
2、配置本机的git
git config --global user.name "fly"
git config --global user.email fly@qq.com


3、生成密钥
ssh-keygen -t rsa -C "abcd@efgh.com" //邮箱同上


4、提交密钥
cat  ~/.ssh/id_rsa.pub //复制里面的密钥


然后,到github网页中登陆自己的账号,然后再account setting中,找到SSH KEY讲复制的密钥加入(需要再次输入github的密码)


5、检验是否链接上了github
ssh  git@github.com
//正常情况下,回显如下
PTY allocation request failed on channel 0
Hi plinx! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
  
6、首次推送
mkdir tmper      //创建推送目录
cd tmper         //进入推送目录    
git init       //设置该目录为推送
touch README   //生成readme
git add README //加入修改列表
git commit -m 'first commit' //递交修改声明
git remote add origin git@github.com:abcd/tmper.git //为远程Git更名为origin
git push -u origin master //推送此次修改


然后各种问题从这里开始了,以下谈一下解决的方法:
问题一:
ERROR: Repository not found.
 这个问题是因为在你推送的github账户中,并没有这个Repository。
 解决方法:
  1)检查自己的github中的Repository,检查自己创建的目录,必须要两者一致;
  2)先git clone下github中的Repository,然后再进行更改,这样就一定一致了。


问题二:
Agent admitted failure to sign using the key. 
Permission denied (publickey)
 这个问题是因为你的ssh key并没有加入到你想git的github账户的ssh key中,所以没有访问权限。
 解决方法:
   1)重新拷贝一份当前的~/.ssh/id_rsa.pub中的ssh key到github中添加;
  2)先删除~/.ssh/in_rsa*文件,然后重新ssh-keygen一份sshkey来生成密钥,然后复制到github,接着ssh链接github来检验是否成功联通。


问题三:
//出现如下提示
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ...
 这个问题是因为,github中已经有了这个代码,不允许你覆盖它。
 解决方法:
  1)强制推送,一般不推荐!
       git push -f


  2)
       git pull
  然后将出现其他提示,具体意思是说branch与merge未指定,git无法选择要推送的分支。


  可以通过修改 .git/config文件中的下列内容
[branch "master"]
    remote = origin
    merge = refs/heads/master


  也可以直接命令行修改
git config branch.master.remote origin
git config branch.master.merge ref/heads/master


  目前了解到的也就这三个问题了。


  之后就可以成功得推送了。
------------------------------------------------------------
Git链接到自己的Github(2)进阶使用


  接着上一篇的,从github clone下代码。


1、先查看当前开发分支
cat .git/HEAD    显示结果如下
ref: refs/heads/master
  这里的master是默认分支。


2、查看当前状态
git status    信息如下
# On branch master
nothing to commit (working directory clean)
  目前是无推送状态,即使你推送了一个未做任何改变的文件,当前状态仍未无推送状态。


进入README添加一句之后
git add README
//之后有两种方法填写推送信息
//比较简单的一种,直接写入推送信息,-m 就是 message 的意思
git commit -m 'message you want to write.'


//比较麻烦的一种
git commit


//进入GNU nano编辑器,底行有操作提示
  将提示
[master bc30d5d] updated the status.
 1 file changed, 1 insertion(+)


然后再看一下状态
git  status    信息如下
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)


3、git中有日志可以查看推送记录
git log


4、检查不同
git diff
//这项操作时要在添加推送之前执行的,否则就看不出哪里不同了


5、创建分支
git remote add origin git@github.com:abcd/tmper.git
git branch test0.1   //创建一个test0.1分支
git checkout test0.1   //进入这个分支中来
git branch   //查看当前分支情况,所在分支前面有'*'号
git add -A     //将本次修改的所有内容都加入修改列表
git commit -m "commit all"   //提交说明
git push -u origin test0.1  //将此次修改提交到分支test0.1中去


 6、只对项目精简了而没有增加内容
git commit -a 
git push -u origin code_ver0.1
//分支和账户请勿对号入座


-----------------
git和github的附加练习:
1、初始化本地git环境,并登录到远程github服务器。
git config --global user.name "fly"
git config --global user.email fly@qq.com


ssh-keygen -t rsa -C "12700696@qq.com" //生成密钥,邮箱同上
cat  ~/.ssh/id_rsa.pub //提交密钥,复制里面的密钥
然后,到github网页中登陆自己的账号,然后再account setting中,找到SSH KEY讲复制的密钥加入(需要再次输入github的密码)


检验是否链接上了github
ssh  git@github.com   //正常情况下,回显如下
PTY allocation request failed on channel 0
Hi plinx! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.


#ssh -T git@git.oschina.net   //测试秘钥


2、在/etc目录加载git功能
cd  /etc
git  init


3、远程连接到github的tk.git仓库中,创建分支etc0.1,并查看分支状态。
git remote -v    查看远程仓库
git remote add origin git@github.com:rshare/tk.git    添加远程仓库
git branch etc0.1   //创建一个test0.1分支
git checkout etc0.1   //进入这个分支中来
git branch   //查看当前分支情况,所在分支前面有'*'号


4、将hosts、passwd、group文件添加到git仓库中
cd  /etc
git  status
git  log
git  add  hosts  passwd  group
git  commit  -m  "hosts passwd  group commit"
git  push  -u  origin  etc0.1


5、将/etc目录的所有文件上传到github的tk仓库的etc0.2分支中。
git remote add origin git@github.com:rshare/tk.git
git branch etc0.2   //创建一个test0.2分支
git checkout etc0.2   //进入这个分支中来
git branch   //查看当前分支情况,所在分支前面有'*'号
cd  /etc
git  status
git  log
git  add  -A
git  commit  -m  "etc all commit"
git  push  -u  origin  etc0.2
git remote show origin    显示远程仓库数据


-------
参考资料:https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93%E7%9A%84%E4%BD%BF%E7%94%A8#远程仓库的删除和重命名
git远程仓库常用命令:
查看当前的远程库:git  remote  -v
添加远程仓库:git remote add  pb别名 git@github.com:rshare/tk.git
实例1:git remote add origin git@github.com:rshare/tk.git
实例2:git remote add pb别名  git://github.com/paulboone/ticgit.git


显示仓库信息:
get  fetch  origin
说明:上面是抓取rshare有的,但本地仓库没有的信息。


推送数据到远程仓库:
命令格式:git push [remote-name] [branch-name]
例:如果要把本地的 master 分支推送到 origin 服务器上
(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字),
可以运行下面的命令:
git  push  origin  master


注意:只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,
这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,
那你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,合并到自己的项目中,
然后才可以再次推送。


查看远程仓库信息:
git remote show [remote-name] 
功能:查看某个远程仓库的详细信息,比如要看所克隆的 origin 仓库,可以运行:
git remote show origin


远程仓库的删除和重命名
在新版 Git 中可以用 git remote rename 命令修改某个远程仓库在本地的简称,比如想把 pb 改成 paul,可以这么运行:
$ git remote rename pb paul
$ git remote  显示信息如下
origin
paul
注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 pb/master 分支现在成了 paul/master。


碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库,可以运行 git remote rm 命令:
$ git remote rm paul
$ git remote  信息如下
origin


--------------------


原创粉丝点击