常用操作

  • 安装GIT

  • 简单配置

  • 创建仓库 维护旧仓库

  • 快速开始

  • 添加忽略

  • 从版本库中删除资源

  • 文件改名

  • git日志

  • 修改最近一次的描述信息

  • 文件管理

  • 添加别名

  • 分支branch && 分支合并

  • 解决冲突

  • 暂存区

  • TAG标签

  • 发成ZIP压缩包(代码发布)

  • 系统别名

  • 合并

  • github 使用SSH与GITHUB远程服务器进行连接

  • 本地版本库主动使用 remote与远程服务器关联

  • 本地分支与远程服务器分支同步

  • 多人合作开发

  • 搭建GIT服务器(centos7)

  • 使用 git-bash 生成公钥和私钥

安装git


# win 下载 git for windows 客户端 安装即可

# linux

yum install git -y

# 查看版本

git --version

简单配置


# --global 配置全局 去掉配置单个项目

git config --global user.email "xx@xx.com"

git config --global user.name "xxx"



# 回到用户目录 打开配置文件查看

cd

vim .gitconfig

创建仓库 维护旧仓库

创建仓库


# win 下 cmd; linux 类似

cd /d

mkdir -p github/test

cd github/test

git init

维护旧仓库

git clone https://xxxxxxx.com/xx.git

快速开始


# 远程获取

git pull



# 添加文件跟踪

git add .



# 提交

git commit -m '提交说明'



# 远程提交(默认同步到与本地同名的分支)

git push



# ex

touch a.txt b.txt

git status

git add a.txt b.txt

git status

git commit -m "描述"

git push

添加忽略

在项目目录创建一个 .gitignore的文件

touch .gitignore

vim .gitignore

添加内容


# 这是忽略配置文件

# 忽略所有 .txt 结尾的文件

*.txt

# readme.txt 文件除外

!readme.txt

# 忽略vendor 目录

/vendor

添加除了忽略的其它文件到跟踪

git add .

从版本库中删除资源

删除仓库中的 a.php 同时删除本地的 a.php

git rm a.php

只删除仓库中的 a.php 保留本地

git rm --cached a.php

文件改名


git mv a.php IndexController.php

git add .

git commit -m "rename file"

在window 下面如果只改文件名称的大小写 有可能会发生在版本中不识别变化。

可以 先改成 别的名字,再改成想要的大小写形式;也可以使用 git mv 命令,同linux命令。

git日志

查看日志


git log



# 查看详细信息

git log -p

# 查看最近一次变动 n -n

git log  -p -1

# 查看简短信息

git log --oneline -p

# 仅在提交信息后显示已修改的文件清单

git log --name-only

# 显示新增、修改、删除的文件清单

git log --name-status

修改最近一次的描述信息


# 修改最近一次的描述

git commit --amend



# 把新的提交归入到最近一次的提交

git add aa.txt

git commit --amend

文件管理

撤销对文件的跟踪

git reset HEAD a.php

添加别名

添加一个 跟踪命令的别名 a

git config --global alias.a add .

在 配置文件中 的[alias] 区域 配置 a = add . 两种方式等同

分支branch && 分支合并

一定是先有主干提交后才有分支的


# 查看分支 & 当前所在分支

git branch



# 创建bbs论坛分支

git branch bbs



# 切换到 bbs 论坛 分支

git checkout bbs



# 创建并 切换到 abs 分支

git checkout -b abs



# 合并分支

git checkout master

git merge bbs



# 删除分支

git branch -d bbs



# 强制删除分支(没有合并的化,需要强制删除)

git branch -D bbs



# 查看合并的分支

git branch --merged



# 查看没有合并的分支

git branch --no-merged

解决冲突

找到 冲突 文件,修改掉冲突的地方;提交即可。

暂存区

当前分支 没有最终提交;但需要临时切换到别的分支,即可以暂存当前分支文件


# 暂存

git stash



# 暂存列表

git stash list



# 恢复暂存区

git stash apply stash@{0}



# 删除暂存区

git stash drop stash@{0}



# eg

git checkout bbs

touch aa.php

git add .

git stash



touch bb.php

git add .

git stash



git stash list

.....

git stash apply stash@{0}

git stash drop stash@{0}

TAG标签

只给稳定的版本打标签 某个阶段的稳定版本

显示标签

git tag

添加标签

git tag v1.1

发成ZIP压缩包(代码发布)

git archive master --prefix='bbs' --forma=zip > bbs.zip

系统别名

区别于别名 别名要加 git; 系统别名使用别名即可。


cd

vim .bash_profile



# 添加

alias gs="git status"

alias gc="git commit -m "

合并

当分支未合并时,主干又提交了新的版本。

为了解决这个问题,把分支的节点挪到主干的最新节点即可。


# 进入分支

git checkout bbs

# 替换节点

git rebase master

git checkout master

# 合并分支

git merge bbs

github 使用SSH与GITHUB远程服务器进行连接


# 注册github账号

# 创建项目

# 生成秘钥

ssh -keygen -t rsa

cd

# 公钥 复制内容到 github 添加 ssh key

cat .ssh/id_rsa.pub



# 克隆项目

git clone xxxxxx.git



# 推送到远程

git push

本地版本库主动使用 remote与远程服务器关联

本地先有了项目,主动与服务器关联


# git@github.com:xxx/xx.git 项目git地址

git remote add origin git@github.com:xxx/xx.git



# 查看远程服务器

git remote -v



# 推送到远程服务器

git push -u origin master

本地分支与远程服务器分支同步

查看所有分支

git branch -a

同步分支到远程服务器 bbs 分支名

git push --set-upstream origin bbs

多人合作开发


# 克隆项目

git clone git@githubxxxx/xxx.git test



# 查看分支

git branch -a



# 获取远程 test分支 到本地 test分支

git pull origin test:test



# 切换到 test分支

git checkout test



# 模拟操作

touch a.c

git add .

git commit -m 'add a.c'



# 推送到远程

git push



# 如果没有与远程建立关联,则会推送失败

git push --set-upstream origin test



# 删除远程 test分支

git push origin --delete test

搭建GIT服务器(centos7)

安装git -- 先配置YUM源

yum install -y git


# 查看版本

git --version



# 创建git用户用于git服务 不能登录

useradd -s /usr/bin/git-shell git



# 收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

# git用户下 创建.ssh目录;有可能没有

mkdir /home/git/.ssh



# 创建authorized_keys文件

# 把用户的id_rsa.pub 内容放入keys文件中,一行一个

touch /home/git/.ssh/authorized_keys



# 创建一个git服务目录 如/repos

mkdir /repos



# 初始化一个仓库 test.git 名称自定义

git init --bare test.git



# 修改目录所有者--因为GIT用户不用于登录只用于服务GIT,需要单独把目录所有者给GIT用户和组

chown -R git:git test.git



# 查看本机IP

ifconfig



# 远程克隆即可

git clone git@ip:/repos/test.git

使用 git-bash 生成公钥和私钥

  • 打开git bash

  • 执行生成公钥和私钥的命令:ssh-keygen -t rsa 根据提示操作即可,一般直接回车即可

  • 接着会生成一个私钥 id_rsa和一个公钥id_rsa.pub。(可执行start ~ 命令,生成的公私钥在 .ssh的文件夹里面)

  • 查看公钥的命令:cat ~/.ssh/id_rsa.pub