From 42049d1571ba07de06e63bed43f0a659bd0960fd Mon Sep 17 00:00:00 2001 From: zhangyongge <396963330@qq.com> Date: Sun, 19 Apr 2015 21:17:01 +0800 Subject: [PATCH 1/6] add file taobaomm --- taobaomm.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 taobaomm.py diff --git a/taobaomm.py b/taobaomm.py new file mode 100644 index 0000000..c751f00 --- /dev/null +++ b/taobaomm.py @@ -0,0 +1,30 @@ +#encding=utf-8 +import urllib2 + +mmurl = 'http://mm.taobao.com/json/request_top_list.htm?type=0&page=' +i = 0 +while i < 1: + url = mmurl + str(i) + i += 1 + up = urllib2.urlopen(url) + content = up.read() + + ahref = ' Date: Mon, 20 Apr 2015 10:07:23 +0800 Subject: [PATCH 2/6] add file gitCommand.txt --- gitCommand.txt | 124 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 gitCommand.txt diff --git a/gitCommand.txt b/gitCommand.txt new file mode 100644 index 0000000..840f684 --- /dev/null +++ b/gitCommand.txt @@ -0,0 +1,124 @@ +�����汾�� + +��ʼ��һ��Git�ֿ⣬ʹ��git init��� +�����ļ���Git�ֿ⣬�������� +��һ����ʹ������git add ��ע�⣬�ɷ������ʹ�ã����Ӷ���ļ��� +�ڶ�����ʹ������git commit����ɡ� + + +�汾���� + +Ҫ��ʱ���չ�������״̬��ʹ��git status��� +���git status���������ļ����޸Ĺ�����git diff���Բ鿴�޸����ݡ� +HEADָ��İ汾���ǵ�ǰ�汾����ˣ�Git���������ڰ汾����ʷ֮�䴩��ʹ������gitreset--hard commit_id�� + ����ǰ����git log���Բ鿴�ύ��ʷ���Ա�ȷ��Ҫ���˵��ĸ��汾�� +Ҫ�ط�δ������git reflog�鿴������ʷ���Ա�ȷ��Ҫ�ص�δ�����ĸ��汾 + + +���������ݴ��� + +ÿ���޸ģ������add���ݴ������ǾͲ�����뵽commit�С� + + +�����޸� + +����1����������˹�����ij���ļ������ݣ���ֱ�Ӷ������������޸�ʱ��������git checkout-- file�� +����2�����㲻�������˹�����ij���ļ������ݣ������ӵ����ݴ���ʱ���붪���޸ģ�����������һ��������git reset HEAD file���ͻص��˳���1���ڶ���������1������ + + +ɾ���ļ� + +����git rm����ɾ��һ���ļ������һ���ļ��Ѿ����ύ���汾�⣬��ô����Զ���õ�����ɾ������ҪС�ģ���ֻ�ָܻ��ļ������°汾����ᶪʧ���һ���ύ�����޸ĵ����� + + +����Զ�̿� + +Ҫ����һ��Զ�̿⣬ʹ������git remote add origin git@server-name:path/repo-name.git��������ʹ������git push -u origin master��һ������master��֧���������ݣ� +�˺�ÿ�α����ύ��ֻҪ�б�Ҫ���Ϳ���ʹ������git push origin master���������޸ģ� + + +��Զ�̿��¡ + +Ҫ��¡һ���ֿ⣬���ȱ���֪���ֿ�ĵ�ַ��Ȼ��ʹ��git clone�����¡��Git֧�ֶ���Э�飬����https����ͨ��ssh֧�ֵ�ԭ��gitЭ���ٶ���졣 + + +������ϲ���֧ + +Git��������ʹ�÷�֧�� +�鿴��֧��git branch +������֧��git branch +�л���֧��git checkout +����+�л���֧��git checkout -b +�ϲ�ij��֧����ǰ��֧��git merge +ɾ����֧��git branch -d + + +�����ͻ + +��Git�޷��Զ��ϲ���֧ʱ���ͱ������Ƚ����ͻ�������ͻ�����ύ���ϲ���ɡ� +��git log --graph������Կ�����֧�ϲ�ͼ�� + + +��֧�������� + +�ϲ���֧ʱ������--no-ff�����Ϳ�������ͨģʽ�ϲ����ϲ������ʷ�з�֧���ܿ��������������ϲ�����fast forward�ϲ��Ϳ����������������ϲ��� + + +BUG��֧ + +�޸�bugʱ�����ǻ�ͨ�������µ�bug��֧�����޸���Ȼ��ϲ������ɾ���� +����ͷ����û�����ʱ���Ȱѹ����ֳ�git stashһ�£�Ȼ��ȥ�޸�bug���޸�����git stashpop���ص������ֳ��� + + +Feature��֧ + +����һ����feature������½�һ����֧�� +���Ҫ����һ��û�б��ϲ����ķ�֧������ͨ��git branch -D ǿ��ɾ���� + + +����Э�� + +�鿴Զ�̿���Ϣ��ʹ��git remote -v�� +�����½��ķ�֧��������͵�Զ�̣��������˾��Dz��ɼ��ģ� +�ӱ������ͷ�֧��ʹ��git push origin branch-name���������ʧ�ܣ�����git pullץȡԶ�̵����ύ�� +�ڱ��ش�����Զ�̷�֧��Ӧ�ķ�֧��ʹ��git checkout -b branch-name origin/branch-name�����غ�Զ�̷�֧���������һ�£� +�������ط�֧��Զ�̷�֧�Ĺ�����ʹ��git branch --set-upstream branch-name origin/branch-name�� +��Զ��ץȡ��֧��ʹ��git pull������г�ͻ��Ҫ�ȴ�����ͻ�� + + +������ǩ + +����git tag �����½�һ����ǩ��Ĭ��ΪHEAD��Ҳ����ָ��һ��commit id�� +git tag -a -m "blablabla..."����ָ����ǩ��Ϣ�� +git tag -s -m "blablabla..."������PGPǩ����ǩ�� +����git tag���Բ鿴���б�ǩ�� + + +������ǩ + +����git push origin ��������һ�����ر�ǩ�� +����git push origin --tags��������ȫ��δ���͹��ı��ر�ǩ�� +����git tag -d ����ɾ��һ�����ر�ǩ�� +����git push origin :refs/tags/����ɾ��һ��Զ�̱�ǩ�� + + +ʹ��Github + +��GitHub�ϣ���������Fork��Դ�ֿ⣻ +�Լ�ӵ��Fork��IJֿ�Ķ�дȨ�ޣ� +��������pull request���ٷ��ֿ������״��롣 + + +���������ļ� + +����ijЩ�ļ�ʱ����Ҫ��д.gitignore�� +.gitignore�ļ�����Ҫ�ŵ��汾������ҿ��Զ�.gitignore���汾������ + + +�Git������ + +�Git�������dz��򵥣�ͨ��10���Ӽ�����ɣ� +Ҫ���������Կ����Gitosis�� +Ҫ��SVN������̬�ؿ���Ȩ�ޣ���Gitolite�� + + From 6b61fae268e329af36d8bfe45be28f73726934ea Mon Sep 17 00:00:00 2001 From: zhangyongge <396963330@qq.com> Date: Mon, 20 Apr 2015 11:25:45 +0800 Subject: [PATCH 3/6] modify #encoding=utf-8 --- taobaomm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taobaomm.py b/taobaomm.py index c751f00..bfe4d0c 100644 --- a/taobaomm.py +++ b/taobaomm.py @@ -1,4 +1,4 @@ -#encding=utf-8 +#encoding=utf-8 import urllib2 mmurl = 'http://mm.taobao.com/json/request_top_list.htm?type=0&page=' From caf40a240aab5155e533e15f3218b88a4b670544 Mon Sep 17 00:00:00 2001 From: zhangyongge <396963330@qq.com> Date: Tue, 17 Nov 2015 15:17:05 +0800 Subject: [PATCH 4/6] BlackList.java --- BlackList | 220 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 BlackList diff --git a/BlackList b/BlackList new file mode 100644 index 0000000..07ac6f8 --- /dev/null +++ b/BlackList @@ -0,0 +1,220 @@ +package com.chuanke.pay.proofread; + +import java.io.InputStream; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Properties; + +import org.apache.commons.mail.EmailException; +import org.apache.commons.mail.SimpleEmail; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MainService { + protected static final Logger logger = LoggerFactory.getLogger(MainService.class); + + static String DRIVER = ""; + static String HOST = ""; + static String USER_NAME = ""; + static String PASSWORD = ""; + static String TIMES = "5"; + + static String SMTPHost = ""; + static String SMTPUsername = ""; + static String SMTPPassword = ""; + static String SEND_TO = ""; + + static Connection conn; + static PreparedStatement pst; + + static { + InputStream is = MainService.class.getClassLoader().getResourceAsStream("config.properties"); + Properties prop = new Properties(); + try { + prop.load(is); + } catch (Exception ex) { + logger.error("读取config.properties配置文件出错", ex); + } + DRIVER = prop.getProperty("jdbc.driver"); + HOST = prop.getProperty("jdbc.url"); + USER_NAME = prop.getProperty("jdbc.username"); + PASSWORD = prop.getProperty("jdbc.password"); + TIMES = prop.getProperty("order.times"); + SMTPHost = prop.getProperty("mail.SMTPHost"); + SMTPUsername = prop.getProperty("mail.SMTPUsername"); + SMTPPassword = prop.getProperty("mail.SMTPPassword"); + SEND_TO = prop.getProperty("mail.sendTo"); + } + + public static void sendMail(List memberList) throws EmailException { + SimpleEmail email = new SimpleEmail(); + email.setHostName(SMTPHost); + email.setAuthentication(SMTPUsername, SMTPPassword); + if(!"".equals(SEND_TO)) { + String[] sendTos = SEND_TO.split(";"); + if(sendTos != null && sendTos.length > 0) { + for(String sendTo : sendTos) { + email.addTo(sendTo); + } + } + } + email.setFrom(SMTPUsername, "民生商城公共邮箱"); + email.setSubject("信用卡商城以下用户已被加入黑名单"); + email.setCharset("UTF-8"); + email.setMsg("以下用户" + memberList.toString() + "已被自动加入黑名"); + email.send(); + } + + public static final Connection getConnection() { + Connection con = null; + try { + Class.forName(DRIVER); + con = DriverManager.getConnection(HOST, USER_NAME, PASSWORD); + } catch (Exception e) { + logger.error("数据库连接失", e); + } + return con; + } + + /** + * 查询符合条件的订单列" + * + * @return 返回订单列表 + */ + public static List queryOrders() { + conn = getConnection(); + try { + String sql = "SELECT o.member,o.consignee,o.address,o.phone FROM xx_order o, xx_order_item oi WHERE o.create_date > date_sub(CURDATE(), INTERVAL 1 DAY) AND o.create_date < CURDATE() AND o.id=oi.orders AND oi.product IN (SELECT pl.product_id FROM xx_product_limit pl WHERE pl.start_date < NOW() AND pl.end_date > NOW())"; + logger.info("查询订单sql" + sql); + pst = conn.prepareStatement(sql); + ResultSet rs = pst.executeQuery(sql); + List orderList = new ArrayList(); + while (rs.next()) { + String[] order = new String[4]; + order[0] = rs.getString("member"); + order[1] = rs.getString("consignee"); + order[2] = rs.getString("address"); + order[3] = rs.getString("phone"); + orderList.add(order); + } + return orderList; + } catch (SQLException e) { + logger.error("查询数据库失", e); + try { + pst.close(); + conn.close(); + } catch (SQLException e1) { + } + } + return null; + } + + /** + * 处理订单列表 + * + * @param orderList + * @return 返回"��插入黑名单表的用户ID集合 + */ + public static List handleMemberBlacklist(List orderList) { + List orderInnerList = new ArrayList(); // 拷贝列表 + orderInnerList.addAll(orderList); + List memberBlacklist = new ArrayList(); + for (int i=0; i orderTempList = new ArrayList(); + // 内层循环 + for (int j=i+1; j= Integer.valueOf(TIMES)) { + memberBlacklist.add(order[0]); + if (orderTempList != null && orderTempList.size() > 0) { + for (String[] orderTemp : orderTempList) { + if (!memberBlacklist.contains(orderTemp[0])) { + memberBlacklist.add(orderTemp[0]); + } + } + } + } + if (orderTempList != null && orderTempList.size() > 0) { + // 内层循环完毕,剔除已参与判断的order记录 + orderInnerList.removeAll(orderTempList); + orderTempList.clear(); + } + } + logger.info("加入黑名单的用户列表" + memberBlacklist.toString()); + return memberBlacklist; + } + + /** + * 将过滤后的用户id插入黑名单表" + * + * @param memberList + */ + public static void insertMemberBlacklist(List memberList) { + try { + conn.setAutoCommit(false); + String sql = "SELECT userId FROM xx_member_blacklist"; + pst = conn.prepareStatement(sql); + ResultSet rs = pst.executeQuery(sql); + List userIdList = new ArrayList(); + while (rs.next()) { + String userId = rs.getString("userId"); + userIdList.add(userId); + } + if (memberList != null && memberList.size() > 0 + && userIdList != null && userIdList.size() > 0) { + memberList.removeAll(userIdList); + logger.info("用户ID为:" + userIdList.toString() + + "的用户已经在黑名单表中存在,本次不做数据插入"); + } + String insertSql = "insert into xx_member_blacklist(userId,create_date,modify_date) values(?,?,?)"; + pst = conn.prepareStatement(insertSql); + for (String memberId : memberList) { + pst.setString(1, memberId); + pst.setTimestamp(2, new Timestamp(new Date().getTime())); + pst.setTimestamp(3, new Timestamp(new Date().getTime())); + pst.addBatch(); + } + pst.executeBatch(); + conn.commit(); + logger.info("已成功将用户ID为:" + memberList.toString() + "的用户插入到黑名单表"); + } catch (SQLException e) { + logger.error("插入黑名单用户出现异", e); + } finally { + try { + pst.close(); + conn.close(); + } catch (SQLException e) { + } + } + } + + public static void main(String[] args) { + // 方法入口 + List orderList = queryOrders(); + List memberList = handleMemberBlacklist(orderList); + insertMemberBlacklist(memberList); + if(memberList != null && memberList.size() > 0) { + try { + sendMail(memberList); + } catch (EmailException e) { + e.printStackTrace(); + } + } + } +} From 5c257dbb3a2cd6772709977dc925936e5a128def Mon Sep 17 00:00:00 2001 From: zhangyongge <396963330@qq.com> Date: Tue, 17 Nov 2015 15:17:39 +0800 Subject: [PATCH 5/6] Rename BlackList to BlackList.java --- BlackList => BlackList.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename BlackList => BlackList.java (100%) diff --git a/BlackList b/BlackList.java similarity index 100% rename from BlackList rename to BlackList.java From 40d6fde40e5f4f2483dad4f82d6e042df677c5d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E5=AE=9D?= <396963330@qq.com> Date: Tue, 18 Oct 2016 17:09:13 +0800 Subject: [PATCH 6/6] Update gitCommand.txt --- gitCommand.txt | 143 +++++++++++++++++++++++++------------------------ 1 file changed, 73 insertions(+), 70 deletions(-) diff --git a/gitCommand.txt b/gitCommand.txt index 840f684..8647913 100644 --- a/gitCommand.txt +++ b/gitCommand.txt @@ -1,124 +1,127 @@ -�����汾�� +创建版本库 -��ʼ��һ��Git�ֿ⣬ʹ��git init��� -�����ļ���Git�ֿ⣬�������� -��һ����ʹ������git add ��ע�⣬�ɷ������ʹ�ã����Ӷ���ļ��� -�ڶ�����ʹ������git commit����ɡ� +初始化一个Git仓库,使用git init命令。 +添加文件到Git仓库,分两步: +第一步,使用命令git add ,注意,可反复多次使用,添加多个文件; +可能会出现错误:windows中的换行符为 CRLF, 而在Linux下的换行符为LF,所以在执行add . 时出现提示,解决办法: +rm -rf .git // 删除.git +git config --global core.autocrlf false //禁用自动转换 +第二步,使用命令git commit,完成。 -�汾���� +版本回退 -Ҫ��ʱ���չ�������״̬��ʹ��git status��� -���git status���������ļ����޸Ĺ�����git diff���Բ鿴�޸����ݡ� -HEADָ��İ汾���ǵ�ǰ�汾����ˣ�Git���������ڰ汾����ʷ֮�䴩��ʹ������gitreset--hard commit_id�� - ����ǰ����git log���Բ鿴�ύ��ʷ���Ա�ȷ��Ҫ���˵��ĸ��汾�� -Ҫ�ط�δ������git reflog�鿴������ʷ���Ա�ȷ��Ҫ�ص�δ�����ĸ��汾 +要随时掌握工作区的状态,使用git status命令。 +如果git status告诉你有文件被修改过,用git diff可以查看修改内容。 +HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令gitreset--hard commit_id。 + 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。 +要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本 -���������ݴ��� +工作区和暂存区 -ÿ���޸ģ������add���ݴ������ǾͲ�����뵽commit�С� +每次修改,如果不add到暂存区,那就不会加入到commit中。 -�����޸� +撤销修改 -����1����������˹�����ij���ļ������ݣ���ֱ�Ӷ������������޸�ʱ��������git checkout-- file�� -����2�����㲻�������˹�����ij���ļ������ݣ������ӵ����ݴ���ʱ���붪���޸ģ�����������һ��������git reset HEAD file���ͻص��˳���1���ڶ���������1������ +场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout-- file。 +场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。 -ɾ���ļ� +删除文件 -����git rm����ɾ��һ���ļ������һ���ļ��Ѿ����ύ���汾�⣬��ô����Զ���õ�����ɾ������ҪС�ģ���ֻ�ָܻ��ļ������°汾����ᶪʧ���һ���ύ�����޸ĵ����� +命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容 -����Զ�̿� +添加远程库 -Ҫ����һ��Զ�̿⣬ʹ������git remote add origin git@server-name:path/repo-name.git��������ʹ������git push -u origin master��һ������master��֧���������ݣ� -�˺�ÿ�α����ύ��ֻҪ�б�Ҫ���Ϳ���ʹ������git push origin master���������޸ģ� +要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;关联后,使用命令git push -u origin master第一次推送master分支的所有内容; +此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改; -��Զ�̿��¡ +从远程库克隆 -Ҫ��¡һ���ֿ⣬���ȱ���֪���ֿ�ĵ�ַ��Ȼ��ʹ��git clone�����¡��Git֧�ֶ���Э�飬����https����ͨ��ssh֧�ֵ�ԭ��gitЭ���ٶ���졣 +要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。 -������ϲ���֧ +创建与合并分支 -Git��������ʹ�÷�֧�� -�鿴��֧��git branch -������֧��git branch -�л���֧��git checkout -����+�л���֧��git checkout -b -�ϲ�ij��֧����ǰ��֧��git merge -ɾ����֧��git branch -d +Git鼓励大量使用分支: +查看分支:git branch +创建分支:git branch +切换分支:git checkout +创建+切换分支:git checkout -b +合并某分支到当前分支:git merge +删除分支:git branch -d -�����ͻ +解决冲突 -��Git�޷��Զ��ϲ���֧ʱ���ͱ������Ƚ����ͻ�������ͻ�����ύ���ϲ���ɡ� -��git log --graph������Կ�����֧�ϲ�ͼ�� +当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。 +用git log --graph命令可以看到分支合并图。 -��֧�������� +分支管理策略 -�ϲ���֧ʱ������--no-ff�����Ϳ�������ͨģʽ�ϲ����ϲ������ʷ�з�֧���ܿ��������������ϲ�����fast forward�ϲ��Ϳ����������������ϲ��� +合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。 -BUG��֧ +BUG分支 -�޸�bugʱ�����ǻ�ͨ�������µ�bug��֧�����޸���Ȼ��ϲ������ɾ���� -����ͷ����û�����ʱ���Ȱѹ����ֳ�git stashһ�£�Ȼ��ȥ�޸�bug���޸�����git stashpop���ص������ֳ��� +修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; +当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stashpop,回到工作现场。 -Feature��֧ +Feature分支 -����һ����feature������½�һ����֧�� -���Ҫ����һ��û�б��ϲ����ķ�֧������ͨ��git branch -D ǿ��ɾ���� +开发一个新feature,最好新建一个分支; +如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。 -����Э�� +多人协作 -�鿴Զ�̿���Ϣ��ʹ��git remote -v�� -�����½��ķ�֧��������͵�Զ�̣��������˾��Dz��ɼ��ģ� -�ӱ������ͷ�֧��ʹ��git push origin branch-name���������ʧ�ܣ�����git pullץȡԶ�̵����ύ�� -�ڱ��ش�����Զ�̷�֧��Ӧ�ķ�֧��ʹ��git checkout -b branch-name origin/branch-name�����غ�Զ�̷�֧���������һ�£� -�������ط�֧��Զ�̷�֧�Ĺ�����ʹ��git branch --set-upstream branch-name origin/branch-name�� -��Զ��ץȡ��֧��ʹ��git pull������г�ͻ��Ҫ�ȴ�����ͻ�� +查看远程库信息,使用git remote -v; +本地新建的分支如果不推送到远程,对其他人就是不可见的; +从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; +在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; +建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name; +从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。 -������ǩ +创建标签 -����git tag �����½�һ����ǩ��Ĭ��ΪHEAD��Ҳ����ָ��һ��commit id�� -git tag -a -m "blablabla..."����ָ����ǩ��Ϣ�� -git tag -s -m "blablabla..."������PGPǩ����ǩ�� -����git tag���Բ鿴���б�ǩ�� +命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id; +git tag -a -m "blablabla..."可以指定标签信息; +git tag -s -m "blablabla..."可以用PGP签名标签; +命令git tag可以查看所有标签。 -������ǩ +操作标签 -����git push origin ��������һ�����ر�ǩ�� -����git push origin --tags��������ȫ��δ���͹��ı��ر�ǩ�� -����git tag -d ����ɾ��һ�����ر�ǩ�� -����git push origin :refs/tags/����ɾ��һ��Զ�̱�ǩ�� +命令git push origin 可以推送一个本地标签; +命令git push origin --tags可以推送全部未推送过的本地标签; +命令git tag -d 可以删除一个本地标签; +命令git push origin :refs/tags/可以删除一个远程标签。 -ʹ��Github +使用Github -��GitHub�ϣ���������Fork��Դ�ֿ⣻ -�Լ�ӵ��Fork��IJֿ�Ķ�дȨ�ޣ� -��������pull request���ٷ��ֿ������״��롣 +在GitHub上,可以任意Fork开源仓库; +自己拥有Fork后的仓库的读写权限; +可以推送pull request给官方仓库来贡献代码。 -���������ļ� +忽略特殊文件 -����ijЩ�ļ�ʱ����Ҫ��д.gitignore�� -.gitignore�ļ�����Ҫ�ŵ��汾������ҿ��Զ�.gitignore���汾������ +忽略某些文件时,需要编写.gitignore; +.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理! -�Git������ +搭建Git服务器 -�Git�������dz��򵥣�ͨ��10���Ӽ�����ɣ� -Ҫ���������Կ����Gitosis�� -Ҫ��SVN������̬�ؿ���Ȩ�ޣ���Gitolite�� +搭建Git服务器非常简单,通常10分钟即可完成; +要方便管理公钥,用Gitosis; +要像SVN那样变态地控制权限,用Gitolite。