git常用记录

1 仓库创建

git init --bare test.git   #创建git裸仓库

# 避免服务器装机导致的仓库被丢失,启用镜像库
git clone --mirror ssh://xxx@19.16.11.13/test.git
# 同步更新镜像库,也可以创建定时服务自动同步镜像库
# 若被删除,可以在使用git clone --mirror ssh://xxx@mirror-url/test.git 还原
git remote update
# or
git --git-dir=~/test.git remote update

# client pull
git clone xxx@19.16.11.13:/home/xxx/test.git test

附录

A.1 win10搭建git本地库

win10笔记本装Ubuntu虚拟机,有时候虚拟机突发异常,导致需重新安装虚拟机,但是这样虚拟机中的代码文档等很难找回,所以就有了,win10做git中心,Ubuntu做git client需求。

git安装

windows 版git 安装非常简单,但是git的安装路径跟之后的git仓库路径有关联,把git安装到F盘,其中选项全部使用默认。

Note

  1. 本机git安装目录:f:\Git
  2. 在git安装目录下创建repos目录,用于存放以后要创建的git仓库
openssh_server

打开“设置”,选择“应用”>“应用和功能”,然后选择“可选功能” 。

扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择“添加功能”,然后:

  1. 查找“OpenSSH 客户端”,再单击“安装”
  2. 查找“OpenSSH 服务器”,再单击“安装”

设置完成后,回到“应用”>“应用和功能”和“可选功能”,你应会看到已列出 OpenSSH 。

SSH server cfg

使用管理员模式打开PowerShell,运行如下命令,启动sshd服务

# 启动sshd
Start-Service sshd
# 配置开机运行
Set-Service -Name sshd -StartupType 'Automatic'

Note:安装 OpenSSH 服务器将创建并启用一个名为 OpenSSH-Server-In-TCP 的防火墙规则。 这允许端口 22 上的入站 SSH 流量。 如果未启用此规则且未打开此端口,那么连接将被拒绝或重置。

DefaultShell

ubuntu中git clone win10中仓库时,默认会走win10的命令行工具,这会导致很多问题,我们把默认的shell改为bash

  1. 打开“注册表编辑器”,ctrl+s,输入“regedit”,进入路径“计算机/HKEY_LOCAL_MACHINE/SOFTWARE/OpenSSH”,添加一个项目,类型为“字符串”,键名为“DefaultShell”,值为 bash.exe 所在的路径(例如:F:\Git\bin\bash.exe)
  2. 重启 SSH 服务
  3. Note:记得把win10当前的用户设置密码,用于Ubuntu下ssh连接使用
免密登录win10

先在本地(客户端可以是windows or linux)生成公钥

  • ssh-keygen -t rsa -C xxx@163.com

在本地用户的根目录下,找到公钥文件 id_rsa.pub

  • win,C:\Users\your_userName\.ssh
  • linux,~/.ssh

复制公钥文件内容,到服务端C:\Users\your_userName\.ssh下创建文件authorized_keys(没有文件后缀),粘贴公钥,保存退出。

服务端切换到C:\ProgramData\ssh\下(首次启动sshd后会生成该文件夹),打开sshd_config文件,

修改文件(以下是重点):

# 确保以下3条没有被注释
PubkeyAuthentication yes
AuthorizedKeysFile	.ssh/authorized_keys
PasswordAuthentication no

# 确保以下2条有注释掉
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

其余不做修改,基本都是已注释不启用。

重启服务:Restart-Service sshd

A.2 linux搭建git本地库

创建本地git仓库,用于局域网内访问

git init --bare test.git   #创建git裸仓库

# clone方式1
git clone xxx@19.16.11.13:/home/xxx/test.git test
cd test/;echo "hehe" > a.txt
git status .
git add .
git commit -m "aa"
git push origin master

# clone方式2
git clone ssh://xxx@19.16.11.13:/home/xxx/test.git test
cd test2/;echo "bb" >bb.txt
git status .
git add .
git commit -m "bb"
git push
免密登录linux
  • windows下当前的用户目录~/.ssh下面有一个密钥id_rsa和一个公钥id_rsa.pub,其中,公钥要复制到服务器上,这样才能在你登录时,进行公私钥配对
  • 使用vim编辑器打开.ssh目录下的authorized_keys(没有自行创建),将本地的id_rsa.pub内容复制进去,如有多个公钥则换行即可,并使用wq命令保存退出

A.3 git常用

# 提交
git status
git add . #注意,有个点,表示当前目录及其子目录下的所有改动
git status
git commit -m ‘info’
git push origin 分支名 #提交到指定分支

# 分支合并
git checkout master
git pull
git checkout dev
git merge master
git push origin dev

# 查看
git status #查看仓库状态
git diff . #查看X文件修改了那些内容
git diff --cache . #查看X文件修改了那些内容
git log #查看历史记录
git reflog #查看历史记录的版本号id(记录你的每一次命令,不论是否提交)
git log --pretty=oneline #如果信息量太多可以进行比较好的列表显示
git remote -v  #查看仓库的拉取地址

# tag
git tag #列出所有的tag
git tag name #打轻量标签 name
git tag -d name #删除本地的tag
git push origin --delete tag name #删除远程的tag
git show name #查看tag信息
git push origin name #将tag提交到远程

# stash
git stash #把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list #查看所有被隐藏的文件列表
git stash apply #恢复被隐藏的文件,但是内容不删除
git stash drop #删除文件
git stash pop #恢复文件的同时 也删除文件

A.4 git基本流程

1 新建分支

  • 首先,在你新建分支之前,你应该在master分支,并且要保证你当前的是最新代码,要不然就是找死,最后提交代码就会出问题。
  • git pull origin master ,在master分支下,保证当前代码与线上同步,是最新的
  • git branch <分支名> ,正儿八经的新建分支。
  • git checkout <分支名> ,切换 到新建的分支上,再进行下一步。
  • git push origin <分支名> ,把本地分支推到远端,让远端也有一个你的分支,用来后面提交你的代码。
    • 新建分支并切换到该分支:git checkout -b <分支名>

2 提交代码

  • 在新建的分支上写完代码之后,就可以提交代码了。此时应该在你新建的分支上
  • git status ,查看自己写了哪些东西。
  • git add .
  • git commit -m ‘本次提交的描述(写自己的话,不要抄我的,哼!)’
  • git push origin <分支名> ,push是从本地向远端推代码,也就是把自己写的代码提交上去,像给老师交作业一样。
  • 执行完上一步,有可能报错,此时淡定,不认识英语的话在线翻译是干嘛的,大多数时候提示你,本地落后于远端,(意思就是远端比本地多了一些代码,为什么会出现这种情况呢,肯定是你跟别人共用一个分支,他提交了一段代码到远端,所以导致你的本地落后于远端)既然落后了,那就把他更新成最新的呗,
  • git pull --rebase origin 远程分支名
  • 执行完之后,你的代码就跟远端又一样了。并且你的修改仍然在,此时再提交你的代码
  • git push origin <分支名>

3 rebase代码

  • 提交完代码之后需要让测试人员进行测试,若测试没问题,就可以rebase代码,然后上线了。(这一步是保证你要上线的代码是基于最新的master)

  • git pull —rebase origin <分支名>

  • git pull —rebase origin master

  • 执行这两步的时候都有可能发生冲突,此时你要做的就是解决冲突,再继续提交。解决完冲突之后,

  • git add .

  • git rebase —continue

  • 若此时还有冲突,继续解决,解决完继续执行1,2步。

  • 若此时没有报错,git push origin <分支名>;(这一步必须在git pull —rebase origin master成功之后执行)

  • 此时若显示,当前分支落后于master分支,则需要强推,git push -f origin <分支名>,若不报错,则rebase成功。
    以上就是一个完整的流程,以下是一些常用的git操作

4 删除分支

  • 删除本地分支 ( 切换到master分支之后再删除 )
  • git branch -d <分支名>
  • 删除远端分支
  • git push origin --delete <分支名>

3 查看本地有哪些分支

  • git branch
  • 切换分支
  • git checkout <分支名>

5 如何从远程拉一个分支

  • 当你跟别人共用一个分支的时候(有时候前端会共用一个分支),如果别人新建了一个分支(此时远端应该已经有了你们要用的分支),你要做的就是把远端的分支拉到自己本地。
  • git fetch origin <分支名>: <分支名>

6 合并分支

  • 如果你基于主分支master新建了分支dev,再基于dev分支新建了一个分支test,在test分支开发完成后,需要将test合并到dev分支上。此时,先用git branch 查看自己在哪个分支上,然后git checkout dev(切换到需要合并的分支上),最后git merge test(在dev分支上执行这句,意思是将test合并到dev分支上)

7 git强制提交本地分支覆盖远程分支

  • git push origin 分支名 --force

–end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值