git高频率操作指导

git简介

git是著名分布式控制系统,没有所谓的“中央服务器”托管代码,每个PC都保存了一份完整的代码,各个PC如果做了修改,会进行相互推送修改的代码部分;服务器只需要部署git这个应用程序即可,而完成代码相互推送需要进行配置,通常来说有HTTP和ssh两种方式,下面就记录这两种方式

HTTP方式推送代码

使用HTTP方式,交互过程数据不会进行加密的;
一般使用步骤

  1. 在git服务端申请HTTP账号,例如申请的账号和密码分别是:jackzhous passwd
  2. 本地客户端配置;如果不进行配置的话在你使用git clone命令时会提示你输入上诉的用户名和密码,这样会太繁琐,下面是我的配置
    在本地你要拉下项目来的位置
git init  //git生成相关的配置环境

cd .git  //切换到期环境目录

vim config //这个config就是需要配置的文件

git config user.name "username"
git config user.email "passwd"

配置好后,查看配置文件如下:
这里写图片描述

小结

一般只需要配置user即可,这样以后git clone拉取文件就可;这里是针对局部配置,如果切到另外一个路径则需要重新配置;如果需要一次性搞定配置,在所有路径下都可以Git clone代码的话,则使用以下配置:

git config --gloabl user.name "username"
git config --gloabl user.email "passwd"

经过上诉配置后,会保存在你的~/.gitconfig里面的;每次进行git clone项目时会读取该配置文件使用其中user信息;

如果配置多个账户如何配置呢?

经常会有这种需求的,比如你个人平时的代码在github上的,而公司又专门又有一个gitlab, 这时候可以公司用全局配置,个人用局部配置,两者不冲突

SSH方式推送代码

ssh方式采用加密方式推送同步代码,其加密算法使用不对称加密算法,先生成一对公私钥,ssh客户端保存私钥,ssh服务端保存公钥;

  1. 本地生成公私钥
ssh-keygen -t RSA -C "xx.email" //后面出现提示输入内容直接回车即可

此时,公私钥会保存在~/.ssh路径下,分别是id_rsa和id_rsa.pub
2. 将file.pub的内容拷贝到git服务端保存,以github为例,如下图:
这里写图片描述

  1. 此时,git去可克隆项目即可

同上,多个git账号如何配置?

  1. 生成公私钥
ssh-keygen -t RSA -C "xx.email" -f file //名字不要和上一个相同,不然会覆盖上一个配置文件

此时,公私钥会保存在~/.ssh路径下,分别是file和file.pub

2.同上配置,拷贝公钥到服务器上即可
3.默认情况下,~/.ssh目录下没有配置文件,需要你自己创建一个config,配置内容如下:

## github
Host github.com
	HostName github.com
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/id_rsa

# company github http://117.174.122.33/
Host 172.16.3.21
	HostName 172.16.3.21
	Port 80
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/file

上面配置好后,当你使用git去clone项目时会跟进clone的地址自动进入相应的配置,从而去拉取项目

测试是否配置正确

ssh -T -v git@你的服务器IP或域名

连接成功,则会有successful的提示;

博主这一步遇到了这个问题,测试发现返回这样的结果:

OpenSSH_7.5p1, LibreSSL 2.5.4
debug1: Reading configuration data /Users/sever1/.ssh/config
debug1: /Users/sever1/.ssh/config line 9: Applying options for 172.16.3.21
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 52: Applying options for *
debug1: Connecting to 172.16.3.21 [172.16.3.21] port 80.
debug1: Connection established.
debug1: identity file /Users/sever1/.ssh/zywlw type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/sever1/.ssh/zywlw-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.5
debug1: ssh_exchange_identification: HTTP/1.1 400 Bad Request


debug1: ssh_exchange_identification: Server: nginx


debug1: ssh_exchange_identification: Date: Wed, 25 Jul 2018 21:51:06 GMT


debug1: ssh_exchange_identification: Content-Type: text/html


debug1: ssh_exchange_identification: Content-Length: 166


debug1: ssh_exchange_identification: Connection: close


debug1: ssh_exchange_identification: 


debug1: ssh_exchange_identification: <html>


debug1: ssh_exchange_identification: <head><title>400 Bad Request</title></head>


debug1: ssh_exchange_identification: <body bgcolor="white">


debug1: ssh_exchange_identification: <center><h1>400 Bad Request</h1></center>


debug1: ssh_exchange_identification: <hr><center>nginx</center>


debug1: ssh_exchange_identification: </body>


debug1: ssh_exchange_identification: </html>


ssh_exchange_identification: Connection closed by remote host

看最后一步,这是被远端所关闭,有可能被服务器禁了,需要你去找后台人员确认解决

git分支使用

创建远程分支并切换

git checkout -b branch_name

拉取远程分支到本地分支

git checkout -b local_branch origin/remote_branch
git fetch

回滚本地代码到某个历史版本

git checkout 940ebaca9b8d10f2ca4a076b8b1a8c1dc3ae2dd2  //历史版本号

提交到分支

git push origin remote_branch      //提交道远程分支

以上所有的操作都必须先要clone项目的mater后方可操作

查看所有分支

git branch -a

删除远程分支

git push origin --delete remote_branch

删除本地分支

git branch -d local_branch

基于某分支创建新分支

git checkout -b your_new_branch origin/old_branch

拉取某个远程分支到本地

已克隆其他分支情况

本地必须先创建好分支,不然会覆盖本地当前分支

git pull origin remote_branch

直接clone远端分支

git clone -b remote_branch address

打标签tag

//对某个历史版本打上标签
git tag -a tag_name 版本commit数字 -m "标签说明"
//推送标签到远端
git push origin tag_name

//删除本地标签
git tag -d tag_name
//将本次删除推送到远端
git push origin :refs/tags/tag_name 

查看远端最新的提交记录

git查看记录是用git log来查看,但是它只是查看本地分支最新的提交记录,无法查看远端仓卡分支最新的记录;如何查看就是用:

git log origin/远端分支名称

git如何强制拉取远程项目覆盖本地项目?

只需两个步骤:

  • 拉取远程仓库所有分支代码,但不合并
git fetch --all

如果不加–all默认就会拉取当前分支的代码到本地

  • 将拉取下来某个分支的代码强制覆盖到本地
git reset --hard origin/远端分支名

git设置本地分支追踪远端某分支

查看当前本地分支关联的远端分支

git branch -vv

本地分支关联远端分支

git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>

例如:
git branch --setupstream-to=origin/remote_ba local_ba

posted @ 2018-07-26 14:51  帅气好男人_jack  阅读(7)  评论(0编辑  收藏  举报  来源