Git 的基本使用(有些啰嗦!!)

git命令学习


git分布式版本控制系统,安全性较高
集中式版本控制系统,如果服务器出了问题,所有人歇菜

1,安装git 在Linux上
    git  查看是否有
    sudo apt-get insatll git 命令直接安装等待
    git --version 查看版本,确定是否安装上
    或者在官网下载git源码 然后解压,在输入 ./config , make , sudo make install 安装即可
    
    安装完成之后最后一步设置在命令行输入
        git config --global user.name "your name"
        git config --global user.email "xiaoming@163.com"
        注意git config 命令的 -- global参数 ,用了这个参数,表示你这台机器上1所有的git仓库都会使用这个配置,当然也可对某个仓库指定不同的用户名和Email 

2,创建版本库  将所有的文件都可被git管理,每个文件的curd,都能跟踪,可追踪历史,或者还原
    1,创建一个空的目录
    make learngit
    cd learngit     进入目录
    pwd         显示仓库的目录
   2,通过命令把这个目录变成git可以管理的仓库
       git init   
       在当前目录下就会出现一个.git  文件
       
3,创建文本 
        1,在刚创建的learngit创建文件
        2,添加文件到仓库
         git add XXX.txt
        3,把文件提交到仓库
            git commit -m "写入一个文件(描述)"
            
4,可在修改文件之后查看
        1,git status 显示之前的文件被修改还没有提交
        2,如果修改前后时间太久,想看具体的内容
            git diff 修改的文件名
            就能显示具体的修改内容
            继续git add 文件  然后通过git status 看一下是否是自己修改的文件 放心 git commit 即可
            再用过git status 查看仓库当前状态
        小结:    
      要随时掌握工作区的状态,使用git status命令。
      如果git status告诉你有文件被修改过,用git diff可以查看修改内容

5,    版本回退    
        查看历史记录,提交了几个版本
        git log  显示从最近到最远的提交日志
        如果不习惯看显示太多内容可用:
        git log --pretty=oneline
        想要回退版本,必须知道自己当前在哪个版本
        git 中 用HEAD表示当前版本,上个版本是HEAD^,上上个版本HEAD^^,如果版本太多,可用HEAD~10 (向上回退10个版本)
        git reset --hard HEAD^
        回到指定的版本:
        git reset --hard 版本号前几位即可
        回退完,又想回退回去可通过 
        git reflog 查看之前版本的 commit id  直接回去

6,git 暂存区问题
        相对于SVN git 与之不同的地方就是多了一个暂存区的概念
       
        
        git add 将文件提交到暂存区
        git commit 将暂存区所有的文件提交到当前的分支
        当前的分支是在创建git版本库时,git西东为我们创建唯一的一个master分支
        可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改

7,撤销文件区的修改
        直接修改改乱的内容
        git checkout --file
        如果只进行了add 没有commit
        可以用 git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:
        git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
        
8,删除文件 :rm 文件名
        git rm 文件名 
        git commit -m "删除xx文件"
        如果删错或者改错了,那就直接回退
        git checkout -- 文件名
        相当于一键还原
9,创建远程的服务器端 GitHub 或者gitee
        创建好之后将目标的网址clone
        注意GitHub需要配置公钥SSL
        
10,分支创建 合并
    创建Dev分支 然后切换
    git checkout -b dev
    git checkout 加 -b表示创建并切换相当于下面两条命令:
    git branch dev
    git checkout dev
    用git branch命令查看当前分支:
        git branch 会列出所有的分支当前分支前面会显示一个 *
        然后提交:
        git add xx.txt
        git commit -m "branch test"
        dev分支创建完成可切换回master分支
        git checkout master
        将dev分支的工作提交合并到master分支上
        git merge dev
        git merge 命令用于合并指定分支到当前分支
        合并完成之后可以将dev删除:
            git branch -d dev
        此时可以查看branch,就只剩下master分支:
            git branch
        创建分支完成工作相对于直接在master上完成工作较为安全
        
    Git鼓励大量使用分支:
    查看分支:git branch
    创建分支:git branch <name>
    切换分支:git checkout <name>
    创建+切换分支:git checkout -b <name>
    合并某分支到当前分支:git merge <name>
    删除分支:git branch -d <name>
11,分支冲突:
    新建一个分支,在分支下修改数据并提交
    再回到master分支对之前分支修改的数据进行从新修改提交就会产生冲突报警,
    git merge合并就会产生问题必须手动解决
    
    git status可以告诉我们冲突的文件
    通过查看文件修改冲突部分,在进行提交,
    再通过git log查看分支的合并情况,
    没有问题在进行删除最开始创建的分支
    总结:
    当混帐无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
    解决冲突就是把Git的合并失败的文件手动编辑为我们希望的内容,再提交。
    用git log --graph命令可以看到分支合并图产品。
12,分支管理:
    普通分支合并,Git会使用Fast forword模式,在这种模式下,删除分支后,会丢掉分支信息
    可以强制禁用Fast word模式,git会在merge时生成一个新的commit,这样就会从分支的历史上查看出分支信息
    基本流程如下:
    git checkout -b dev
  对修改的文件一通操作
    git add xxx.txt
    切回master git checkout master 
    准备合并dev分支,注意--no-ff参数,表示禁用Fast word
    git merge --no-ff -m"merge with no-off" dev
    由于本次合并创建一个新的commit,所以加上-m,把commit描述写进去
    合并之后,使用git log 查看分支历史
    详细显示分支合并的历史:
    git  log --graph --pretty=online --abbrev-commit
13,错误分支:
    如果在开发过程中出现错误,但是文档没有提交,
    git提供一个stash功能,隐藏之前的工作区域,
    git stash
    方便创建新的分支,修改bug,然后合并,最后删除
    在使用  git stash pop,回到工作现场
14,丢弃一个未合并的分支
    开发新功能,最好新建一个分支7
    git branch -D 分支名
15,多人协作:
    查看远程仓库的信息:git remote
    或者:git remote -v显示详细信息
    推送分支:指定本地分支,对应远程的分支,
    git push origin master
    其他分支就是:git push origin 分支名
    一般master dev开发分支 需要推送
    错误分支就在本地即可
    开发:
    git clone@远程库的SSL或者http
    查看 git branch 当前所在的分支、
    在dev上开发就必须创建远程origin的dev:
        git checkout -b origin/dev
        现在就可以在dev上继续修改,push等命令
        
        如果两人的提交有冲突,先把最新的git pull下来,进行合并在推送
        如果pull失败了,本地dev分支未指定和远程origin/dev分支的链接,根据提示设置dev:origin/dev 的链接
        git branch --set-upstream-to <branch-name> origin/<branch-name>
    再进行pull,
    pull成功但是合并的时候有问题需要手动解决,和分支管理的解决方法一致,再提交,推送
    
16,变基(适合强迫症)
    1,在进行远程推送时,推送失败,pull ,然后使用git status查看状态 ,了解当前的位置,在使用log看看历史,然后就会看到一坨。受不了,操作一下进行整理,重订,git rebase 出来一串英文,赶紧使用git log 看看现在的情况,身心舒服
    这就进行了变基,具体自己CSDN
    变基操作的特点:把分叉的提交历史“整理”成一条直线,看上去更直观
    缺点是:本地的分叉提交已经被修改过了
    
17,标签:绑定一个commit号,版本更新啥的更方便
    打标签:切换到打标签的分支上
    git tag v1.0 标签打好了
    不放心就用:git tag 看看 就是 v1.0
    一般默认的标签会打在最新提交的commit上,如果,工作忙忘记打了咋办?
    找到历史提交的commit,然后打就行:
    git log --pretty=oneline --abbrev-commit
    找到对应commit id xxx,敲:
    git tag v1.1 xxxx
    在用git tag看看
    注意:标签不是按时间顺序排列,而是按照字母排的可以使用:
    git show v1.1 查看标签信息
    
    还可以创建带有说明的标签 -a标签名 -m指定说明文字:
    git tag -a v1.2 -m "very good!" xxx
    
    删除本地标签:
    git tag -d v1.1
    推送标签到远程:
    git push origin v1.1
    或者一次性推送所有本地标签:
    git push origin --tags
    远程的标签删除:
    先删除本地标签:git tag -d v1.0
    然后删除远程:
    git push origin :refs/tags/v1.0
    然后登陆GitHub查看

18,链接远程码云:
    git remote add origin git@码云的地址
    如果使用命令git remote add时报错:
    fatal: remote origin already exists.
    说明本地已经关联一个origin的远程库
    可以通过:git remote -v查看远程库的信息
    根据需要删除,关联码云,在使用git remote -v查看
    推送到码云:git push gitee master
    
19,自定义的一些功能:
    让git显示颜色:git config --glonal color.ui true
    忽略文件的设置:在Git工作区根目录下创建一个特殊文件的.gitignore 将想要忽略的文件名填进去,Git就会自动忽略这些文件
    
    如果以后想添加文件到Git,但是添加不了,原因有可能是这个文件被忽略了。如果确实想添加可用 -f强制添加
    git add -f APP.class
    或者是.gitignore书写有问题,规则的问题,通过
    git check-ignore命令查询
    
    git 别名的设置:
        例如:设置git status
        git config --global alias.st status
        之后敲git st 直接OK
        git config --global alias.co checkout
        git config --global alias.ci commit
        git config --global alias.br branch
        --global参数是全局参数,这些命令在这台电脑的所有Git仓库下都有用。
        最省心的就是把log直接修改lg 直接起飞。
        配置文件:在.git/config文件下
        别名就在[alias]下:直接删除别名对应的行就可删除别名的使用
        所以能躺着绝不坐着!!!
        
20,搭建Git服务器
        1,一台运行的Linux机器,Ubuntu或者Debian,然后就是apt命令
        2,安装:sudo apt-get insatll git
        3,创建一个git用户,用来运行git服务
        sudo adduser git
        4,创建证书登录
        收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
        5,初始化Git仓库
        先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
        sudo git init --bare sample.git
        Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:
        sudo chown -R git:git sample.git
        6,禁止使用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每次一登录就自动退出。
        7,克隆远程仓库:现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行
        git clone@....
        
        8,公钥的管理:
        把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就行

    
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值