zoukankan      html  css  js  c++  java
  • Git 使用指南

    git 是什么?为什么要使用git ? 使用前,先去看看他的简介    Git 简介

    Git 操作简介

     

    安装  

      windows版本:     Git-1.9.5-preview20150319.exe 

      TortoiseGit32位:TortoiseGit-1.8.14.0-32bit.msi 

      TortoiseGit64位:TortoiseGit-1.8.14.0-64bit.msi

     ps:先安装 Git-1.9.5-preview20150319.exe  再安装小乌龟

    安装成功后点开始-git–git bash 打开

     

     

     

    打开git bash 默认位置是C盘,每次都要切换到D workspace,这个地方可以自行修改 

       点桌面的快捷方式,右键属性,然后更改启始位置

      

    安装完成

     

     

    用户名和邮箱配置
            git config --global user.name "wangshoufang"
            git config --global user.email  wangshoufang@jd.com

    如果git库地址是http格式,可以设置保存密码
            git config --global credential.helper store

    查看自己的所有配置
           git config --list
           less ~/.gitconfig


    git 账号密码既自己erp账号密码

     

    取得项目的 Git 仓库

    有两种取得 Git 项目仓库的方法。 

    第一种是从已有的 Git 仓库克隆出一个新的镜像仓库来。

    第二种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。 

    第一种:

    git clone http://source.jd.com/app/tuan_gittest.git
    cd tuan_gittest
    新开开发分支
    git branch my_branch 
    切换到开发分支
    git checkout my_branch
    这两步可以合并成一个命令
    git checkout -b my_branch
    查看当前所在分支
    git branch
    查看服务器所有分支
    git branch -r

                 删除本地分支

                 git branch -d  branchName 

                 删除远程分支

                 git push origin --delete <branchName>

                 删除远程tag

                 git push origin --delete tag <tagname>



    分支切完了,开始干活
    先建一个文件练练手 touch doc.txt
    然后往里面写点内容 echo "helloworld" >> doc.txt
    更改完了就提交呗
    提交之前需要把新加的内容添加到index中,有哪些是新加的呢?
    一个命令搞定 git status -s
    然后添加到索引 git add doc.txt
    如果add的内容太多你可以一次性添加所有 git add xxx.txt xxx2.txt xxx3.txt 或者 git add .
    添加之后然后提交 git commit -m "add helloworld by wsf" doc.txt
    这个地方需要说一下 commit 只是提交到本地的缓存区,并没有提交到真正主干,
    你可以在本地commit很多次,然后再提交到主干,提交主干命令 git push origin my_branch

    当两个人在同一个分支开发,不免要用到别人写的东西,这个时候你需要更新下别人的代码
    git pull 更新别人的代码

    代码开发完了要合并trunk ,直接合并trunk?万一有问题怎么办?
    解决办法先把trunk 合并到自己的分支上
    步骤1: git checkout my_branch
    步骤2: git merge master 把主干的分支合并到自己分支,然后测试环境上回归下
    测试通过后再合并主干 
    git checkout master
    git merge my_branch
    过程中有可能有冲突,冲突解决完了再提交

    上线之前还有一个问题,上线之前把自己合并后的代码打tag
    为什么要打tag呢?有可能你上线后发现应用有问题,你准备回滚,但是trunk上也已经修改目前还不能上线,这个时候回滚就麻烦了
    如果每次上线之前我们给应用打tag的话,我们就可以拿上次的tag上线
    git tag -a tagname 

    第二种

                  Step1:创建项目

                                mvn archetype:create -DgroupId=com.jd.tuan -DartifactId=web -DarchetypeArtifactId=maven-archetype-webapp

                  Step2:初始化项目

                               cd web

                              git init  然后通过 ls -alt  查看会创建一个.git 文件,你的所有操作都会保存在这里面

                              git add . 把当前目录下的所有文件添加索引,有时候你 mvn clean package 之后会生成 target目录,这里面的内容你是不想添加到索引并且提交的,你可以通过 .gitignore 文件类过滤

                              touch .gitignore  然后把过滤你不想添加的内容配置如下: target/  就可以了,git 操作的时候就会忽略里面的内容

                              git commit  -a     第一次提交直接 -a  提交所有

                              最后就是push git 库了,这个时候到git服务器上创建一个git库,并拷贝url

                             git  remote add origin  git库地址   

                             最后 git push origin master       

    这个地方提示下:一定在分支下建立一个.gitignore 文件,把编辑器默认生成的.project .setting xxx.iml  target/ 放进去,避免有时候一不小心给提交进去,合并的时候很麻烦并且这些东西跟项目没关系

             

    开发过程中的小问题 

    查看日志 git log 
    美化日志 git log --oneline
    git diff HEAD -- doc.txt 当前目录和缓存区的不同

    发现自己改的某个文件乱七八糟想重新来怎么办?(未提交到缓存区,之前有提交过,这个过程不可逆)
    git checkout -- doc.txt 

    git reset HEAD  可以用来清除已经add到缓存区但是不想进一步提交的内容。

    git reset –hard HEAD^恢复到上一版本上   (已经提交到分支上)
    git reset –hard commitid恢复到某个commitid上面 (已经提交到分支上)

    当你恢复到之前版本时,发现回滚错误,使用git log 也没有的时候怎么办?
    git reflog 查看所有所有log

    问责,查看某个文件的提交人

    git blame filename

    查看某次提交具体提交的内容

    git show commitid            

     git revert HEAD   还原最近一次提交的修改
     git revert commitid 
    还原指定版本的修改:

    场景:    某天你正在coding,然后xxx领导跑来跟你说,线上有个紧急的bug,你赶紧去把问题给fix掉!这个时候你的第一反应是不是从当前master上面重新切个分支?git checkout -b 20141210_xxx_bug ?

                这个时候会有一个问题的,你刚刚写的内容和这个bug是没关系的,是不想提交的,并且不想带入当前分支的怎么办?                   

    git stash暂存未提交的代码  然后切换到master上面重新切分支
    git stash pop恢复并且删除stash里面内容
    git stash apply stash@{1}恢复但是不删除stash里面内容
    git stash drop stash@{1}删除stash里面内容

     

     

    ### 有写常用的命令可以保存快捷方式

    vim ~/.bashrc

    alias ll="ls -lt"

    source   ~/.bashrc

     

    ### git log
    --oneline单行显示历史信息,包括7位的commit哈希值和注释信息的首行
    -数字:显示指定条数的log信息,可以跟任意整数
    --graph --all:以图形的方式显示多条分支的历史信息,一般配合--oneline参数执行 
    --stat显示每次提交的文件变动列表
    -p显示每次文件变动的具体内容 
    文件名:显示某个文件的历史变动 
    提交范围:显示某一个范围的提交,使用提交的哈希值标识(git log fwj9e8..HEAD 显示从fwj9e8到最新点的信息)

     

      

     

     

    ### 本地文档查看

    git [command] --help

     

    ### 参考文档

    1.    http://gitbook.liuhui998.com/index.html
  • 相关阅读:
    sqlserver中死锁问题
    sqlserver循环
    自动装箱和拆箱的原理
    资源文件
    SqlServer函数
    PGSql
    SOAP和REST
    Replication
    office等资料下载
    mysql
  • 原文地址:https://www.cnblogs.com/Dylanblogs/p/4925180.html
Copyright © 2011-2022 走看看