当前位置:   article > 正文

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"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

小结

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

git config --gloabl user.name "username"
git config --gloabl user.email "passwd"
  • 1
  • 2

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

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

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

SSH方式推送代码

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

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

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

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

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

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

此时,公私钥会保存在~/.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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

测试是否配置正确

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

连接成功,则会有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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

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

git分支使用

创建远程分支并切换

git checkout -b branch_name
  • 1

拉取远程分支到本地分支

git checkout -b local_branch origin/remote_branch
git fetch
  • 1
  • 2

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

git checkout 940ebaca9b8d10f2ca4a076b8b1a8c1dc3ae2dd2  //历史版本号
  • 1

提交到分支

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

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

查看所有分支

git branch -a
  • 1

删除远程分支

git push origin --delete remote_branch
  • 1

删除本地分支

git branch -d local_branch
  • 1

基于某分支创建新分支

git checkout -b your_new_branch origin/old_branch
  • 1

拉取某个远程分支到本地

已克隆其他分支情况

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

git pull origin remote_branch
  • 1
直接clone远端分支
git clone -b remote_branch address
  • 1
打标签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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
查看远端最新的提交记录

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

git log origin/远端分支名称
  • 1
git如何强制拉取远程项目覆盖本地项目?

只需两个步骤:

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

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

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

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

git branch -vv
  • 1

本地分支关联远端分支

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

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

git查看未提交的commit

一般用git status就能看到,如下:

On branch Mode
Your branch is ahead of 'origin/Mode' by 2 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
  • 1
  • 2
  • 3
  • 4
  • 5

在Mode分支上,你领先远端Mode分支2个commits,也就是说你本地有commit的代码,但是没提交;
或者用这个命令:

git log 本地分支 ^origin/远端分支
  • 1

能详细列出每笔commit修改情况

git放弃未提交的commit

soft和hard

git reset --soft或者--hard HEAD~1
  • 1

soft就是放弃commit提交但是保留文件
hard就是放弃commit同时删除commit的修改内容,这样保证恢复的文件是干净的

1就是放弃上一次,2就是放弃2次

这里要注意,如果你本地代码库有修改,但不需要这些修改,只要求恢复到和远端代码库一样的干净代码库,那你就把你本地的代码git add在commit进去,这步不要提交,在使用上面的reset --hard去清除commit,最后你的代码就是干净的了,和远端一模一样

把本地代码提交到远端不存在的分支(也就是基于本地分支创建一个新的远端分支)
git push -u origin local_branch:remote_branch
  • 1

push上去后就会创建远端分支remote_branch

查看某笔提交的修改内容

查看某笔提交的修改记录,以下查看会比较详细,会详细列举每个文件内部的修改内容

git show commit-id
  • 1

如果不需要看太详细,只需要查看哪些文件修改过,可以使用以下:

git show --name-only commit-id
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/586588
推荐阅读
相关标签
  

闽ICP备14008679号