git 常用命令解析

来源:互联网 发布:淘宝5星好评 编辑:程序博客网 时间:2024/05/29 18:04

1. git init

建立个git库及完成git初始化,生成一个名为.git的文件夹,所有git的数据和资源都放到这个文件内。

2. git clone

git clone url

eg:git clone git://github/your_github_user/your_git_repository.git

3. git status

查看当前git库的文件状态,git有三种状态:未暂存、已暂存、已入库

git status -s

 简短单行格式,可以用于编写脚本的判断

     ' ' = unmodified   M = modified    A = added   D = deleted    R = renamed   C = copied   U = updated but unmerged

           已暂存         未暂存     Meaning
           -------------------------------------------------
                     [       MD]      not updated
           M              [ MD]     updated in index
           A               [ MD]    added to index
           D              [ M]       deleted from index
           R              [ MD]    renamed in index
           C              [ MD]    copied in index
           [MARC]                 index and work tree matches
           [ MARC]     M        work tree changed since index
           [ MARC]     D        deleted in work tree
           -------------------------------------------------
           D           D    unmerged, both deleted
           A           U    unmerged, added by us
           U           D    unmerged, deleted by them
           U           A    unmerged, added by them
           D           U    unmerged, deleted by us
           A           A    unmerged, both added
           U           U    unmerged, both modified
           -------------------------------------------------
           ?           ?    untracked
           !           !    ignored
           -------------------------------------------------

eg: git status -s

已 未 filename

M       build.py                                                    //修改了git库里的文件,已经add进暂存区
      M build.sh                                                   //修改了git库里的文件,还没有add进暂存区
      D test.sh                                                     // 删除了git库里文件test.sh,还没有add进暂存区

?    ?  sldgjasg                                                //不是git库内的文件,没有add到暂存区内,也就是说这个是新加的文件

4. git add

git add filename 添加文件到暂存区内

git add . 添加当前目录下所有未暂存的文件到暂存区内,注意:使用命令前确保环境干净,否则不要用这个命令,把其他没有用的东西添加进去了

git rm file 删除暂存区内和git库的文件,直接rm 不能删除掉暂存区内的file

git rm . 见git add .

5. git commit

将当前git 库的修改记录到git库中,填写git log 信息,shift +zz

git commit -m "直接填写git log 信息 不用进去编辑模式"

git commit --amend【很好用的命令】

修改上一次的提交,包括git log 和git 库里面的内容,需要先 git add git rm 添加删除指定的文件到暂存区内,否则没有暂存的文件不会改到提交内

git commit --amend --author="沐天 <test@test.com>"  --file=/home/test/test_gitlog_gitcommit_message

更改上次提交的作者和邮箱为  沐天 test@test.com,git log message 用/home/test/test_gitlog_gitcommit_message代替

 6. git log

查看提交历史记录

commit ID SHA 值 作者的名字<邮箱> 和提交时间 提交信息说明及commit信息

commit message 提交信息可以根据项目要求设置特定的模板,

git config --global commit.template  /home/work/.gitmsg.template(及编辑.gitmsg.template文件内容就是commit message模板信息,下次直接 git commit  就会自动弹出 填好模板信息的commit message 界面,自己填下参数,如BUG id 模块 要件 等等用于项目质量统计的)

作者和邮箱也可以这样改,如:

$git config --global user.name "你的名字"
$git config --global user.email "你的mail地址"

git config --global

设置当前用户的git config 参数设置,即相当于改~/.gitconfig的文件

git config --system

设置系统全局的git config 参数设置,即相当于改/etc/gitconfig的文件

git会优先选择范围最小的,及当前的.git/config > ~/.gitconfig >/etc/gitconfig

git log -p -n

查看最近n次提交的diff及修改内容

eg: git log -p -1

commit 4f235f69f2bd9eef5fe92c5c9f14f6600de03775
Author: test <test@test.com>
Date:   Sun Apr 28 14:51:34 2013 +0800

    add somefile to my  repository

 

diff --git a/create-all-commit-patch-new4-26.sh b/create-all-commit-patch-new4-26.sh
new file mode 100755
index 0000000..38f716f
--- /dev/null
+++ b/create-all-commit-patch-new4-26.sh
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+rm -f result-bug-check.list
+DATESTR=`date '+%Y-%m-%d'`
+OUTDIR=~/patch-outdir/$1/$2
+LOCALDIR=$PWD
+rm -rf $OUTDIR
+mkdir -p $OUTDIR
......省略

git log --name-status

查看提交历史记录中每个提交修改了那些文件,挺使用的,往往查找谁改了那些文件可以这样查看,也可以git blame filename

eg:git log --name-status

commit a7042334b29eaa6a50b040425f29869a2e5d5dd9
Author: test <test@test.com>
Date:   Sat Apr 13 16:52:35 2013 +0800

    add gerrit-2.1.4.war of google

A       gerrit-2.1.4.war

git log --stat

每个提交做了那些改动

eg:git log --stat

commit 4f235f69f2bd9eef5fe92c5c9f14f6600de03775
Author: test <test@test.com>
Date:   Sun Apr 28 14:51:34 2013 +0800

    add somefile to my  repository

 ssh/authorized_keys   |    1 +
 ssh/id_rsa                     |   27 +++++++++++++++++++++++++++
 ssh/id_rsa.pub             |    1 +
3 file changed, 29 insertions(+), 0 deletions(-)

git log --oneline

显示单行的git log信息
7. git remote

 远程仓库操作命令

$ git clone git://github/your_github_user/your_git_repository.git

 下载个远程git 库后

$ git remote

$ origin

可以看到我们的远程仓库名

$ git remote -v

origin git://github/your_github_user/your_git_repository.git (fetch)

origin git://github/your_github_user/your_git_repository.git (push)

及我们对 origin进行操作可以上传下载远程的git 库

git fetch origin

下载更新远程库git://github/your_github_user/your_git_repository.git 到本地库里面

git push origin  当前分支名:master --tags

将本地的当前分支推到远程的master分支上,没有那个分支的话会自动创建,--tags是联通本地的tag一起推上去

git push origin :master  

注意:在:前没有分支则是删除远程的master分支,切勿马虎操作,后果很严重!

git remote add  test git://github/your_github_user/your_git_repository.git

添加远程仓库test

git remote rename test  test123

修改test仓库名改为test123

git remote rm test123

删除远程仓库test123

8. git tag

非常重要的标签,每次升级或者版本变动必须打上相应的TAG,这样可以同过TAG 间查看之间的提交,利用TAG切新的分支,做rebase分支等等 很多很多,不要忘了打TAG

git tag tagname

新建tag

git tag -d tagname

删除tag

9. git branch

创建分支

git branch test123

以当前分支创建分支 test123

git branch test1234  test

用分支test创建新分支test1234

git branch test12345 V1.0

用tag V1.0 创建新分支test12345

git branch -d test12345

删除test12345分支

10. git checkout

切换分支和清除暂存文件

git checkout test1234

切换到分支test1234上

git checkout -f

清除当前分支已经add进暂存区内的文件

一个好用的清除git环境命令:git checkout -f;git clean -fd

 11. git merge

合并分支

12.git rebase

13. git cherry-pick

14.git format-patch

15.git am

16.git filter-branch

 

 

===========================================待整理

原创粉丝点击