【总结】Git命令使用

Posted on Posted in 计算机649 views

2015-09-15 by xiaoxia 

0、概念

工作区 –> git add –> 暂存区 –>git commit –> 分支(与暂存区合称版本库) –>git push –> 远程仓库

 

表格 1:命令概览

命令

作用

参数

git init

初始化

git add     

. :添加所有文件

filename:添加文件

git commit

-m”xxxx”:添加提交的备注

git push

推送

origin   branchname:推送分支

origin   tagname:推送某个标签到远程

origin   –tags:一次性推送全部尚未推送到远程的本地标签

origin   :refs/tags/name:从远程删除

git clone  

URL:从远程仓库克隆master分支

git pull     

抓取远程对应分支

git status 

查询状态:文件添加、更新、合并状态

git diff

—   file:查看不同,显示修改

HEAD   — file:查看工作区和版本库里最新版本的区别

git log

查看日志

–graph:查看分支合并图

git reflog

查看所有提交日志,包括返回的版本提交

git rm

filename:从版本库中删除该文件

git reset   

把暂存区修改回退到工作区

HEAD   file:把暂存区的文件修改退回【撤销add还要checkout

–hard   HEAD^:回到上一个版本【返回版本】

–hard   commit_id:返回的对应版本

git checkout

查看工作区变化

—   file:可以丢弃工作区的修改【撤销工作区修改】

name:切换到分支        

-b   name:创建并切换到分支

-b name   origin/name:创建远程originname分支到本地

git branch

查看分支信息

name:创建分支         

-d name:删除分支,之前需要合并

-D      name:强行删除分支

-set-upstream   dev origin/dev

                   指定本地dev与远程origin/dev分支链接

git merge

name:将name分支合并到当前分支

–no-ff   name:强制禁用Fast forward模式来合并,会保留历史分支信息

git stash

存储工作现场

list:查看储存的现场列表

apply:恢复工作现场

drop:删除储存的工作现场

pop   :恢复工作现场,并删除储存的

git remote

查看远程库信息

add   origin git@server-name:path/repo-name.git:关联远程库

-v:显示详细的远程库信息

git tag

查看标签

name:给对应分支打标签

name commit_id:给对应的commit打标签

show tagname:参看标签详细信息

-a tagname   -m "xxx" commit_id:打标签并给标签添加说明

-s   tagname -m "blablabla…"       :用PGP签名标签

-d name:删除标签

git config

设置当前

–global:设置全局  

1、基本流程

        git init    

        git add file/.  

        git commit -m"xxx"

        git push

2、常用命令

        git clone    下载

        git pull      从远程仓库下拉

        git status    查询状态   

        git diff file   查看不同,显示修改        

                                git diff HEAD — readme.txt查看工作区和版本库里最新版本的区别

        git log        查看日志,注意不能查看回溯间的       

                                git log –pretty=oneline //一行显示      

        git reflog     查看所有提交日志

        git rm         从版本库中删除该文件

3、关于返回

    A、返回版本

        git reset –hard HEAD^     回到上一个版本   

                                //HEAD表示当前版本,HEAD^上一个,HEAD^^上两个。。。

        git reset –hard commit_id        返回的对应版本   

                                //commit_id 可以通过git reflog

    B、工作区(没有add)修改撤销

        git checkout — file                可以丢弃工作区的修改   

                                //git checkout 查看文件变更

    C、暂存区(没有commit)修改撤销

        git reset HEAD file       把暂存区的修改退回到工作区

                                //git reset          将整个暂存区退回

        git checkout — file                可以丢弃工作区的修改

    D、版本(没有push)撤销

    参考A

    E、已经推送(push)       

4、关于分支

        git branch name      创建分支

        git branch                  查看分支信息

        git checkout name     切换到分支        

        git checkout -b name        创建并切换到分支

        git merge name                    name分支合并到当前分支

        git branch -d name  删除分支,之前需要合并

        git branch -D    name         强行删除分支

           合并冲突解决:利用git status查看冲突的文件,然后修改,提交

        git log –graph            查看分支合并图

        git merge –no-ff dev          强制禁用Fast forward模式来合并,这样会保留历史分支信息          

5、关于中断、储存工作现场

        git stash                         存储工作现场

        git stash list                 查看储存的现场列表

        git stash apply           恢复工作现场

        git stash drop             删除储存的工作现场

        git stash pop               恢复工作现场,并删除储存的

6、关于远程仓库

        git remote add origin git@server-name:path/repo-name.git    关联一个远程库

        git remote                                查看远程库信息

        git remote -v                           显示详细的远程库信息

        git push origin branchname                         推送分支

        git checkout -b name origin/name  创建远程origindev分支到本地

        git pull                                      抓取远程对应的分支

        git branch –set-upstream dev origin/dev        指定本地dev与远程origin/dev分支链接

7、关于标签

    标签也是版本库的一个快照,其实它就是指向某个commit的指针,但不能移动。

        git tag v1.0                                        给对应分支打标签

        git tag                                                  查看标签

        git tag v0.9 commit_id                 给对应的commit打标签

        git show tagname                          参看标签详细信息

        git tag -a tagname -m "version 0.1 released"  commit_id       打标签并给标签添加说明

        git tag -s <tagname> -m "blablabla…"       PGP签名标签

        git tag -d v0.1                                  删除标签

        git push origin <tagname>      推送某个标签到远程

        git push origin –tags                   一次性推送全部尚未推送到远程的本地标签

        git push origin :refs/tags/v0.9         从远程删除

8、其他

       .gitignore文件:      把要忽略的文件名填进去,Git就会自动忽略这些文件。

       git config –global alias.st status 配置别名,用st代替status

   配置Git的时候,加上–global是针对当前用户,如果不加,只对当前仓库起作用。

   配置文件:.git/config,对每个仓库;用户目录下的,为全局的配置文件

9、搭建Git服务器

    待补充


10、补充

10.1、.gitignore 文件的例子

# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/notes.txt
doc/notes.txt

10.2、我的团队使用流程

    1、管理员新建项目 

        A、先在gitlab新建project,得到项目地址,如: https://gitlab.com/evanxia/xxx.git;

        B、克隆到本地,然后进入项目文件夹,将项目拷贝进去;

        C、git init –> git add . –> git commit –> git push origin master;

        D、在gitlab平台中新建dev分支;

    2、开发者开发项目

        A、首次:克隆项目到本地,然后拉取dev分支新建到本地:

git checkout -b dev origin/dev

        B、新建并切换到一个自定义的分支如:xia;

git checkout -b xia

        C、然后开发,可用git status查看工作区状态;

        D、在xia分支中提交代码:git add -A –>git commit;

        E、 切换到dev分支,先pull拉取当点dev最新代码,然后将xia分支合并到dev,再提交:

git checkout dev
git pull
git merge xia
#可能要处理冲突
git status
git push origin dev

        F、开发过程就是一直循环B~E;

11、参考

    参考:http://www.liaoxuefeng.com

           


转载标明出处:https://blog.evanxia.com/2016/01/141