Git 使用指南

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 使用指南

 

 

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

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

  Git 使用指南

安装完成

 

 

用户名和邮箱配置
        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