1.git命令
#######################################################################################################################################
###############################################################git用法#################################################################
$ git config [--global] user.name 【用户名】 #配置参数
$ git config [--global] user.email 【邮箱】
$ git init #初始化版本库
$ git add #从工作区添加文件到暂存区
$ git commit -m '提交注释' #从暂存区添加文件提交到该分支
$ git status #查看仓库当前状态
$ git diff 【文件名】 #查看工作区文件和当前仓库中对应文件的不同之处
$ git log [--pretty=oneline] #查看提交日志
$ git reset --hard [先前的'git commit'产生的commit id号码] #回退到指定的版本号(根据commit的id)
$ git reset --hard HEAD~数字 #回退到前几版本号
$ git reflog #记录每次git commit提交的commit id
$ git checkout -- 【文件名】 #撤销修改,撤销到最近一次的git commit 或者git add,针对在工作区或者暂存区的文件。【一键还原】
$ git reset HEAD 【文件名】 #针对指定的文件从暂存区回退到工作区
$ git rm 【文件名】 #从版本库删除文件
$ git commit -m '删除文件的注释' #提交删除的操作
$ ssh-keygen -t rsa -C '邮箱地址' #创建ssh密钥。id_rsa私钥,id_rsa.pub公钥
$ git remote add origin git@github.com:用户名/learngit.git #关联github的自己远程仓库。origin:远程仓库远端。
$ git --help #查看git命令帮助
$ git push -u origin master #origin:远端;master:本地仓库的master分支。首次从本地仓库推送到远端。期间验证密钥指纹信息输入yes确认加入列表。
$ git push origin master #非首次的推送到远端。
$ git clone git@github.com:用户名/learngit.git #克隆远程仓库。git clone ssh远程地址
$ git checkout -b 【分支名称】 #创建新分支并切换到该分支
$ git checkout -b dev #dev分支
$ git branch dev #创建分支dev
$ git checkout dev #切换到分支dev
$ git branch #列出所有分支,当前分支前面标有*号。
$ git checkout master #切换到master分支
$ git branch -d dev #删除dev分支
$ git merge dev #假设当前在master分支下,那就是合并dev分支到当前master分支下
$ git log --graph --pretty=oneline --abbrev-commit #查看分支合并的情况(分支合并图)
$ git merge --no-ff -m '禁用fast-forward模式(快速合并)的注释' dev #禁用快速合并模式,把dev分支合并到当前分支,比如master分支
$ git stash #把当前分支的工作现场“储藏”起来,比如针对dev分支
$ git stash list #列举查看工作现场
$ git stash apply stash@{0} #恢复工作现场
$ git stash drop #删除储藏的工作现场
$ git stash pop #恢复工作现场同时删除储藏的stash内容进行删除
$ git branch -D test #强制删除没被合并的test分支
$ git remote #查看远程库信息
$ git remote -v #查看远程库详细信息
$ git push origin master #主分支。从本地仓库的分支master-->推送到远程仓库的master分支
$ git push origin dev #开发分支。本地分支dev--->推送到远端dev分支。
$ git push origin bug #bug修复分支
$ git push origin featue
$ git clone git@github.com:用户名/learngit.git #克隆仓库
$ git checkout -b dev origin/dev #创建本地dev分支(跟远端dev分支对应)。在本地创建和远程分支对应的分支
$ git add .
$ git commit -m 'add a file'
$ git push origin dev #推送
$ git pull
$ git branch --set-upstream dev origin/dev #创建本地仓库的分支和远端仓库的分支的链接关系。建立本地分支和远程分支的关联
$ git pull #从远端仓库获取到本地仓库
$ git tag 【标签名】 #针对当前分支,打标签。标签即特定的commit_id提交版本号,方便记忆。
$ git tag #列举出打过了哪些标签
$ git log --pretty=oneline --abbrev-commit #查看历史提交日志
$ git tag v0.9 6224937 #针对提交commit_id为6224937
$ git show 【标签名】 #查看标签信息
$ git tag -a 【标签名】 -m '打标签的说明文字' 【commit_id提交的值】 #创建带有说明的标签
$ git push origin 【标签名】 #推送一个标签到远端
$ git push origin --tags #推送全部没被推送过的标签到远端
$ git tag -d 【标签名】 #删除本地某个标签(1)
$ git push origin :refs/tags/【标签名】 #可以删除一个远程标签。(2)
#经过上两个的(1)和(2)结合起来->可以对远端删除某个标签
$ git remote rm origin #删除远端origin
$ git config color.ui true #让git显示颜色
#忽略某些文件时,需要编写.gitignore
#.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
#git忽略特殊文件,参看:
#教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758404317281e54b6f5375640abbb11e67be4cd49e0000
#在线浏览配置文件(.gitignore):https://github.com/github/gitignore
$ git config alias.【别名】 命令名 #比如git config alias.st status然后就可以使用git st命令查看当前分支的状态
#配置别名
$ git config alias.ci commit #配置提交的别名
$ git config --global alias.ci commit #配置全局参数: --global
$ git config alias.co checkout
$ git config alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" #用于查看日志。git lg
#######################################################################################################################################
#######################################################################################################################################
###############################################关联多个远程仓库:GitHub和码云##########################################################
$ git remote -v
$ git remote #查看远端仓库信息
$ git remote add github git@github.com:用户名/learngit.git #关联github
$ git remote add gitee git@gitee.com:用户名/learngit.git #关联码云
$ git config user.name 'GitHub用户名' #Github
$ git config user.email 'GitHub账户邮箱'
$ git push github master
$ git push github dev
$ git push github --tags
$ git config user.name 'gitee用户名' #gitee码云
$ git config user.email 'gitee账户邮箱'
$ git push gitee master
$ git push gitee dev
$ git push gitee --tags
######################################################################################################################################
#######################################################################################################################################
###############################################搭建Git服务器##########################################################
#1.安装git
$ sudo apt-get update
$ sudo apt-get install git #安装git
#2.创建git用户,用来运行git服务
$ sudo adduser git #添加一个git用户 # /home/git
#3.创建证书登陆(添加公钥,id_rsa.pub文件里面的内容):
#收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
#4.初始化Git仓库:
#先选定一个目录作为Git仓库,假定是/home/git/srv/sample.git,在/home/git/srv目录下输入命令:
$ sudo git init --bare sample.git #初始化仓库
#Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:
$ sudo chown -R git:git sample.git
#5.禁用shell登录:
#出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
#git:x:1001:1001:,,,:/home/git:/bin/bash
#修改为:
#git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
#这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
#6.克隆远程仓库(本地):
$ git clone git@192.168.128.128:/home/git/srv/sample.git #192.168.128.128为自己服务器的ip,我用的是vmware创建的虚拟机
$ git config user.name '用户名'
$ git config user.email '邮箱'
$ touch test
$ git add .
$ git commit -m '添加test文件'
$ git push origin master #推送到自己的服务器端的git远程仓库
#######################################################################################################################################