1_git基本操作
创建分支
git branch new_branch
本地删除分支
git branch -D delete_branch
更新到远程删除分支
git checkout master
git pull -u -u origin :delete_branch
git pull 失败提示fatal: refusing to merge unrelated histories ,处理方法
git pull origin master --allow-unrelated-historiesn
查看提交提记录
git log
git log -p -2 #查看最近两次的提交差异
git log --stat #仅仅现实行数的变更
git log --pretty=oneline #每次提交,在一行显示
git log --pretty=format:"%h - %an, %ar : %s" #格式显示
选项 | 说明 |
---|---|
%H | 提交对象(提交)的完整哈希字串 |
%h | 提交对象的简短哈希字串 |
%T | 树对象(树)的完整哈希字串 |
%t | 树对象的简短哈希字串 |
%P | 父对象(父)的完整哈希字串 |
%p | 父对象的简短哈希字串 |
%an | 作者(作者)的名字 |
%ae | 作者的电子邮件地址 |
%ad | 作者修订日期(可以用-date =选项定制格式) |
%ar | 作者修订日期,按多久以前的方式显示 |
%cn | 提交者(提交者)的名字 |
%ce | 提交者的电子邮件地址 |
%cd | 提交日期 |
%cr | 提交日期,按多久以前的方式显示 |
%s | 提交说明 |
缓存git密码
git config --global credential.helper store
服务端搭建git(centos7)
id git # 查看是否存在git用户,存在就不创建了。
useradd git
passwd git
输入密码,我设置的是xxx@123
客户端开启公钥认证认证,免密push/pull
- 首先服务端需要开启ssh服务
vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如果是centos7.4以上(含7.4),ssh1已经不支持了,只支持ssh2代协议。所以RSAAuthentication项是没有的
- 客户端执行 执行ssh-keygen -t rsa 生成公钥和私钥
- 复制客户端公钥到服务器端ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
服务端创建git仓库
mkdir -p /data/git/gittest.git
# 初始化这个仓库
cd /data/git/gittest.git
git init --bare .
# 目录所属用户设置
chown -R git:git /data/git
客户端clone远程仓库
mkdir localgit
cd localgit
git clone [email protected]:/data/git/gittest.git .
# 提示输入服务端git账户的密码。
#修改完就可以提交了
touch abc.txt
git add .
git commit -m 'aaa'
git push
tag 和branch的区别
- Git tag是一系列commit的中的一个点,只能查看,不能移动。
- branch是一系列串联的commit的线。
git tag的用法
- 我们常常在代码封板时,使用git 创建一个tag ,这样一个不可修改的历史代码版本就像被我们封存起来一样,不论是运维发布拉取,或者以后的代码版本管理,都是十分方便的
git的tag功能
- git 下打标签其实有2种情况
轻量级的:它其实是一个独立的分支,或者说是一个不可变的分支.指向特定提交对象的引用 - 带附注的:实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证,电子邮件地址和日期,一般我们都建议使用含附注型的标签,以便保留相关信息
所以我们推荐使用第二种标签形式
创建tag
- git tag -a V1.2 -m 'release 1.2'
- 上面的命令我们成功创建了本地一个版本 V1.2 ,并且添加了附注信息 'release 1.2'
查看tag
-
git tag
-
要显示附注信息,我们需要用 show 指令来查看
-
git show V1.2
-
但是目前这个标签仅仅是提交到了本地git仓库.如何同步到远程代码库
-
git push origin --tags
-
如果刚刚同步上去,你缺发现一个致命bug ,需要重新打版本,现在还为时不晚.
-
git tag -d V1.2
-
到这一步我们只是删除了本地 V1.2的版本,可是线上V1.2的版本还是存在,如何办?这时我们可以推送的空的同名版本到线下,达到删除线上版本的目标:
-
git push origin :refs/tags/V1.2
-
如何获取远程版本?
-
git fetch origin tag V1.2
-
这样我们可以精准拉取指定的某一个版本.适用于运维同学部署指定版本.