git使用增加:
1)回退 到某一版
git reset --hard xvxvxvxvxvxvxvxvxvxvxcvx
2)更新到最新
git pull
3)
$ git branch Fix //建立一个新分支
$ git checkout Fix //Switched to branch 'Fix'
git提供了两种简单的patch方案。一是用git diff生成的标准patch,二是git format-patch生成的Git专用Patch。
首先这里我们需要做的是 git专用patch。
zyk:
Step:
1. $ git status
# On branch ipp33
# Your branch is ahead of 'origin/xxx' by 1 commit.
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: IPP3ISelDAGToDAG.cpp
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# 0001-Modify-for-bug-15645-the-error-of-c-register-in-tstn.patch
# 0001-abcd.patch
# 0002-Modify-for-13042.-Improve-the-performance.-Combine-I.patch
# 0003-Fix-Optimizing-ASM-bugs.patch
# IPP3ISelDAGToDAG.cpp_b
# aa
# bb
# cc
# ff.sh
# gg
# his
# list
# log
# sh.sh
no changes added to commit (use "git add" and/or "git commit -a")
2. git diff -check
3. git commit -a -m "xxxxx"
4. git log
5. git format-patch -1
插播 git branch:
转自:http://blog.chinaunix.net/uid-20780196-id-3240975.html
1,branch的建立及使用
git clone user@192.168.0.136:/media/projiect/omap4/nexttab/kernel kernel/android3.0/ //下载内核源码
git checkout -b xx //建立分支并切换到分支xx
git branch //查看当前分支的状态
git status //查看分支及当前修改过的文件
git add . //增加所有文件(如果添加某个文件,用git add file) (
git commit -a -m "branch xx test " //上传到本地git仓库,注释信息为branch xx test
git push user@192.168.0.136:/media/projiect/omap4/nexttab/kernel xx //推送xxx分支到服务器上
git clone user@192.168.0.136:/media/projiect/omap4/nexttab/kernel -b xx kernel/android3.0//下载xx分支
2,branch的管理
git branch //查看当前分支的状态
git checkout master //切换到主分支
git merge xx //合并分支xx到主分支
git branch -d xx //删除分支,如果还未合并到master,则会出现不能删除提示,用-D可以强制删除
git branch -v //查看分支的最后修改
分支前带*的为还为合并分支到master分支的,无*的为已经合并到master中,可以将无*的分支删除掉。
二、git diff生成的标准patch
2.1、制作标准补丁
我们可以首先用
git diff
制作一个
patch
。
本文示例的工作目录里最初有一个
文件a
,内容是“This is the file a.”,放置在master分支中。为了修改代码,我们一般的做法是建立一个新分支:
sweetdum@sweetdum-ASUS:~/GitEx$
git
branch
Fix //建立一个新分支
sweetdum@sweetdum-ASUS:~/GitEx$
git
checkout
Fix //
Switched to branch 'Fix'
接下来我们在a文件里面追加一行,然后执行
git diff
。
sweetdum@sweetdum-ASUS:~/GitEx$
echo 'Fix!!!'>>
a
sweetdum@sweetdum-ASUS:~/GitEx$
git diff
diff --git a/a b/a
index 4add65f..0d295ac 100644
--- a/a
+++ b/a
@@ -1 +1,2 @@
This is the file a.
+Fix!!!
我们看到了Git diff的输出,这是一个非常典型的Patch式diff。这样我们可以直接把这个输出变为一个Patch:
sweetdum@sweetdum-ASUS:~/GitEx$
git
commit
-a
-m
"
Fix
"
[Fix b88c46b] Fix
1 files changed, 1 insertions(+), 0 deletions(-)
sweetdum@sweetdum-ASUS:~/GitEx$
git
diff
master
>
patch
sweetdum@sweetdum-ASUS:~/GitEx$
git
checkout
master
Switched to branch 'master'
2.2、应用标准补丁
我们现在有一个patch文件,并且签出了master,接下来我们可以使用git apply来应用这个patch。当然了,实际应用中,我们不会这样在一个分支建patch,到另一个分支去应用,因为只有merge一下就好了。我们现 在权当没有这个Fix分支。一般情况下,为了保护master,我们会建立一个名叫
PATCH
的分支来专门处理新提交来的patch的
sweetdum@sweetdum-ASUS:~/GitEx$
git
branch
PATCH
sweetdum@sweetdum-ASUS:~/GitEx$
git
checkout
PATCH
Switched to branch 'PATCH'
sweetdum@sweetdum-ASUS:~/GitEx$
git
apply
patch
sweetdum@sweetdum-ASUS:~/GitEx$
git
commit
-a -m
"Patch Apply"
[PATCH 9740af8] Patch Apply
1 files changed, 1 insertions(+), 0 deletions(-)
看,现在我们在PATCH分支中应用了这个补丁,我们可以把PATCH分支和Fix比对一下,结果肯定是什么也没有,说明PATCH分支和Fix分支完全一样。patch应用成功。即使有多个文件git diff 也能生成一个patch。
三、git format-patch生成的git专用补丁
3.1、制作git专用补丁
我们同样用上面那个例子的工作目录,这次,我们在Fix分支中的a添加了新行之后,用
git format-patch生成一个patch。
sweetdum@sweetdum-ASUS:~/GitEx$
git checkout Fix
Switched to branch 'Fix'
sweetdum@sweetdum-ASUS:~/GitEx$
echo 'Fix!!!'>>a
sweetdum@sweetdum-ASUS:~/GitEx$
git
commit -a
-m
"Fix1"
[Fix 6991743] Fix1
1 files changed, 1 insertions(+), 0 deletions(-)
sweetdum@sweetdum-ASUS:~/GitEx$
git
format-patch
-M
master
0001-Fix1.patch
git
format-patch
的-M选项表示这个patch所在的当前分支要和那个分支比对。现在它生成了一个patch文件,我们看看那是什么:
sweetdum@sweetdum-ASUS:~/GitEx$
cat
0001-Fix1.patch
From 6991743354857c9a6909a253e859e886165b0d90 Mon Sep 17 00:00:00 2001
From: Sweetdumplings <linmx0130@163.com>
Date: Mon, 29 Aug 2011 14:06:12 +0800
Subject: [PATCH] Fix1
---
a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/a b/a
index 4add65f..0d295ac 100644
--- a/a
+++ b/a
@@ -1 +1,2 @@
This is the file a.
+Fix!!!
--
1.7.4.1
看,这次多了好多东西,不仅有diff的信息,还有提交者,时间等等,仔细一看你会发现,这是个E-mail的文件,你可以直接发送它!
注意
:
如果master与Fix分支中间有多次提交,它会针对每次提交生成一个
patch
。
3.2、应用git专用补丁
git format-patch
生成的补丁,必须使
用
git am命令
来应用。
sweetdum@sweetdum-ASUS:~/GitEx$
git
checkout
master
Switched to branch 'master'
sweetdum@sweetdum-ASUS:~/GitEx$
git
branch
PATCH
sweetdum@sweetdum-ASUS:~/GitEx$
git
checkout
PATCH
sweetdum@sweetdum-ASUS:~/GitEx$
git
am
0001-Fix1.patch
Applying: Fix1
sweetdum@sweetdum-ASUS:~/GitEx$
git
commit -a -m
"
PATCH apply"
在提交了补丁之后,我们可以再看看目前文件a的情况:
sweetdum@sweetdum-ASUS:~/GitEx$
cat
a
This is the file a.
Fix!!!
果然,多了一个Fix!!!
git add:
1)git status 查看有变化的文件(一般有变化的文件会以红色显示出来)
2)git add + 想要提交的文件名
3)git commit -m "注释的一些信息"
如果在这一步出错的话:git reset --hard HEAD 回滚到add之前的状态
4)git push 完成这一步,你的文件就已近提交到了分支上,别人通过git pull 命令就可以把你提交的文件拉到他本地
转自:
http://blog.csdn.net/hudashi/article/details/7669468