您的位置:首页 > 其它

git 常用命令解析

2013-04-28 16:19 537 查看
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

===========================================待整理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: