Git 常用指令笔记

1 篇文章 0 订阅

1、环境变量的配置
2、基本使用
查看windows的内容,mount
查看c盘,cd /cygdrive/c
查看内容,ls。
3、cygwin的工作机制
cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目;kppppp标文件。然 后,他们要把这些工具移植到windows平台上去。
4、简单的linux命令
pwd   显示当前的路径
cd    改变当前路径,无参数时进入对应用户的
home  目录
ls    列出当前目录下的文件。此命令有N多参数,比如
ls -al ps    列出当前系统进程
kill  杀死某个进程
mkdir 建立目录
rmdir 删除目录
rm -rf .git    删除文件
rm -rf  删除文件夹
mv    文件改名或目录改名
man   联机帮助
less  示文件的最末几行
mv  移动目标文件当前路径   目的路径    
5、Cygwin就是一个windows软件,该软件就是在windows上仿真linux操作系统。Cygwin运行起来后也可以linux方式直接访问windows下的其余任何文件

①进入工作区
cd /cygdrive/d/dengguikun
②初始化
git init
git checkout -b 可创建并切换到新的分支(选)
③创建文件
echo "文件内容" >> 文件名
git add 文件名
④添加内容使用
echo "文件内容" >> 文件名
⑤提交到暂存
git add .
⑥提交
git commit 
⑦返回
shift + :
输入q



-------------------------------------------------------- 
--------查看日志  ---------------
git log
git log --pretty=oneline 单行简洁显示
--------查看状态--------------------------------
git ls-tree -l head(直观的查看暂存区及head中的目录树)
--------------------------------

--小指令
git reset head 文件名(可以将文件在暂存区取消)
git status -s (可以简洁显示状态)
git checkout -- 文件名(可以撤销对工作区的修改)
ls --full-time .gi/index(可以看时间戳)
touch 文件名(重置时间搓)
rm -rf .git    (删除文件)
git stash(保存进度)
git stash apply(恢复进度)
------对比
git diff 当前工作区状态
git diff head 当前暂存区状态
git diff --cached版本库状态


 pwd   ---显示当前目录
 mkdir -p a/b/c 创建目录a/b/c
 rmdir 删除目录
 git init   ---创建git管理库
/cyg +tab 目录
cd /cyg+tab /d 进入D盘
 git diff  ---查看修改内容查看默认的区别

git add  .  ------当前本目录更新修改的文件

 git add  文件名 -----将修改文件放入缓存区

 git status   ---查看分支状态

 git branch ------查看分支

 git branch -d 分支名  ---删除分支

 git checkout -b 分支名   -----创建并切换分支

 git push 

 git pull origin dev  ----文件拖到Dev分支上

 git log --pretty=oneline  ---日志输出一行

  git merge  分支名  -------命令用于合并指定分支到当前分支

 git checkout 分支名 -----切换分支

 git checkout . ----------丢弃修改文件


 git commit -m '修改注释说明'  ------提交修改文件到本地库中

 git log   ------查看日志

 git reflog   ----来记录你的每一次命令

 git reset --hard commit_id  ------------

 history    ------查看命令历史记录
 --------------------------------------------------------------
 git config --global core.autocrlf true  ----提交时转换成lf ,检出时不转换 crlf
git reflog dev/master 可以查看历史变动

------------------------------------------------------------------
  从git远程迁文件
  git clone  ssh://git@git.party1.cn/~/party1.git   --克隆项目到本地

  git branch   ---查看分支

  git checkout dev(分支名)---切换分支

  vi .gitconfig   ---查看global的参数

  --获取密钥(文件)http://www.chiark.greenend.org.uk/~sgtatham/putty/

 -------------------------------------------------------------
 -------将Map对象转成key=value & key=value--------------
    //按照key来排序
  Map sortMap = new TreeMap<String, String>(map);
        sortMap = Maps.filterValues(sortMap, new Predicate<String>() {

            public boolean apply(String input) {
                // 过滤Map中value值为空的元素
                return !Strings.isNullOrEmpty(input);
            }
        });
        String keyValPairs = Joiner.on("&").withKeyValueSeparator("=").join(sortMap);

-----------------------------------------------------------------------------------------
page<T> ,list<T> ,set<T>是泛型类
    需要指定"T" 为collection的类 -----page<T extends collection> P

------------------------------------------------------------------------------
mybatis 中enum (枚举类型) 是指该类型,属性的值value 只能是 enum 中列举的

------------------------------------------------------------------------------
nullable  与   not  null
    相同字段的表一个字段为not null 与 nullable 相比查询速度上的区别

-------------------------------------------------------------------------
将一个object  (this)转成 map 类型 
     Map<String, String> map = BeanUtils.describe(this);

 ---------------------------------------------------------------------------
将json 转成 Model
 ---生成URL--
     String queryUrl = MessageFormat.
     format(Config.getProperty("wechat.user.query.url"), accessToken, openId);

-----将json转成Model
     ExtraProcessor subTimeProcessor = new ExtraProcessor() {

            public void processExtra(Object object, String key, Object value) {
                Player vo = (Player) object;
                if (key.equals("subscribe_time")) {
                    vo.subscribeTime = new DateTime(Longs.tryParse(value.toString()) * 1000).toDate();
                }
            }
        };

 Player pObj = JSON.parseObject(userInfoJson, Player.class, subTimeProcessor);
---------------------------------------------------------------------------
    ">" &gt; "<" &dt;
-----------------------------------------------------------------------------
项目创建步骤
1.编写 Model  编写相应 Mapper.java 和 Mapper.xml ()

2.在 Model 充血模型编写相应的方法 (顺序: select --insert -- update --count --delete )

3.编写 Model 测试用例 

4.controllers 的编写,测试用例 Response response = POST("/wechat/pay/query");

----------------------------------------------------------------------------
render(); 类似于 return;  当执行render 时,下面的代码将不再执行,

renderAgrs.put() 渲染页面  可以相当于作用域。

renderSuccessJson(); // 返回正确码


renderBinary();//
---------------------------------------------------------------------------
正则表达式
    @Match("^[1-9][0-9]*$")
    @Match("^(COIN|POINTS)$") 
----------------------------------------------------------------------
   定时操作  jobs类

   Bootstrap jobs是在play应用程序启动的时候被执行

    --@OnApplicationStart 把一个job标记为bootstrap job
         --@OnApplicationStart(async=true)标记的job在应用程序启动时会自动启动,
           并且所有这些异步job是在同一时刻启动的。

    --@Every注解来标记job 每隔多久执行一次

    --@On("0 0 12 * * ?") 

    应用程序关闭时执行的任务:@OnApplicationStop
---------------------------------------------------
 --
     String jsonText = JsonUtil.toJson(new AjaxResult(items), GameItem.class, "id", "name", "money", "points",
            "coin");


-----------------------------------------------------------------
BIZ_limit   BIZ是业务 

---------------------------------------------------------------------
Joiner.on('|').join(productId, deskId, gameId, positionId, playerId);

---------------------------------------------------------------------
IO.readContentAsString  //io流写入

 renderXml(result.toXml());

------------------------------------------------------------
toString() 方法

ToStringBuilder.reflectionToString(this).toString()

ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE)

//guava
MoreObjects.toStringHelper(this)
            .add("toUserName", toUserName)
            .add("fromUserName", fromUserName)
            .add("createTime", createTime)
            .add("msgType", msgType)
            .add("event", event)
            .add("eventKey", eventKey)
            .toString();




            $.ajax({


            })




Git主要功能
Git 是一个分布式版本控制/软件配置管理软件。
开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。其使用了分布式版本库的做法,不需要服务端软件就可以运作版本控制。
 
实现原理
Git本身关心档案(文件数据)的整体性是否有改变。
Git像一个档案系统,直接在本机上取得资料(绝大多数操作只需要访问本地文件和资源),不必连线到host端取资料回来。
 
库结构
hooks:存储钩子的文件夹。
logs:存储日志的文件夹。
refs:存储指向各个分支的指针(SHA-1标识)文件。
objects:存放Git对象。
config:存放各种设置文档。
HEAD:指向当前所在分支的指针文件路径,一般指向refs下的某文件。
 
三种文件状态
已提交(committed):表示该文件已经被安全的保存在本地数据库中了。
已修改(modified):表示修改了某个文件,但还没提交保存。
已暂存(staged):表示把已修改的文件放在下次提交时要保存的清单中。
文件流转的三个工作区域:Git的工作目录,暂存区域,以及本地仓库。
 
Git配置
1)、/etc/gitconfig:系统中对所有用户都适用的配置文件,使用—system选项。
2)、 ~/.gitconfig:用户目录下的配置文件只适用于该用户,使用—global选项。
3)、.git/config:当前项目的.git目录中的配置文件,仅针对当前项目有效。
用户信息 git config --global user.name “Wang”
git config --global user.email h@e.com
文本编辑器 git config --global core.editor vim
差异分析工具 git config --global merge.tool vimdiff
 
日常基本命令的使用
1、取得项目的Git仓库
1)在当前工作目录中初始化新仓库,需在此项目所在的目录中执行$ git init,
若当前目录下有文件要纳入版本控制,需先用git add命令告诉git开始跟踪然后提交。 git add *.c
git add readme
git commit -m'initial project version'
2)从现有的仓库克隆,这会在当前目录下创建一个名为grit目录,其中包含一个.git的目录。执行 git clone (url)git://github.com/schacon/grit.git命令。
2、检查当前文件状态,执行 git status 命令
Uctracked files:表示未跟随文件(新文件)。
Changes to be committed:表示已暂存,但未提交(已git add,但未提交)。
Changes not staged for commit:表示已修改,但未git add暂存。
Changed but not upadated:已修改,但未git add暂存。
3、跟踪新文件
git add file.txt
4、忽略某些文件
cat .gitignore
*.a :忽略所有.a结尾的文件。
!lib.a :忽略除了lib.a以外的文件。
/TODO :忽略根目录下的TODO文件,不包括swbdir/TODO。
build/ :忽略build/目录下:忽略doc/notes.txt但不包括doc/server/arch.txt。
5、查看已暂存和未暂存的更新
查看尚未暂存的文件更新了哪些部分,执行 git diff 命令。
查看已经暂存的文件与上次提交时的差异,执行 git diff --cached(staged) 命令。
6、提交更新,执行 git commit 命令;
也可以用  git commit -m 参数后跟提交说明的方式。
7、跳过使用暂存区域,执行 git commit -a命令,Git自动把所有已经跟踪过的文件暂存起来一并提交,跳过 git add 过程。
8、移除文件
1)从工作目录中手工删除文件,运行 git rm wenjianming 命令;
2)若删除前已经修改过且已经放到暂存区,则必须用强制删除选项 -f。
3)想删除但仍希望保留在当前工作目录中(仅仅从跟踪清单中删除),执行git rm --cached readme.txt 命令;也可以使用glob模式,即$ git rm log/\*.log
9、修改文件名,执行 git mv file_from file_to 命令。
10、查看提交历史,执行 git log 命令。
git log -p -2 ,常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新。
11、撤销操作
1)修改最后一次提交,执行 git commit --amend 命令。
2)取消已经暂存的文件,使用 git reset HEAD <file> 方式。
12、远程仓库
1)查看当前的远程仓库,可以用 git remote 命令。git remote -v ,显示对应的克隆地址。
2)添加远程仓库,运行 git remote add [shortname] [url] 。
3)从远程仓库抓取数据,使用 git fetch [remote-name] 命令。
4)推送数据到远程仓库,使用 git push [remote-name] [branch-name] 命令。
5)查看远程仓库数据,使用 git remote show [remote-name] 命令。
13、标签
1)显示已有的标签,git tag。
2)新建含附注的表情,git tag -a [tag-name] -m [标签说明]。
3)签署标签,git tag -s 。
4)轻量级的标签,git tag [tag-name] 。
5)验证标签,git tag -v [tag-name]。
6)分享标签,git push origin [tag-name]。要一次推送所有本地新增的标签上去,可以使用git push origin --tags 。
14、分支
在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。
1)创建一个testing分支,git branch testing。
2)转化到testing分支上,git checkout testing。
3)新建并切换到testing分支,运行 git checkout -b testing。
4)用 git merge testing(分支)命令来进行合并。
5)合并后,可以删除testing分支,git branch -d testing。
15、Git基本原理
1)git init初始化一个仓库,在工作目录下生成一个.git的隐藏文件夹,其保存了git工作所需要的所信息;
2)add文件后,会把所有文件的hash记录下来,初始化一个空的commit树;
3)执行commit命令,生成一个commit节点并加在本地仓库的commie树上,这个节点记录了这次提交修改的文件的快照;
4)it把当前分支的指针和HEAD指针都指向这个节点,并且会在分支指针的历史记录上记下这个节点;
5)同步到远程服务器,可以用git push把新的提交推到远程仓库上。
16、核心命令
1)fetch,把远程仓库同步到本地仓库,但是不会改变工作目录的文件
2)push,把本地仓库同步到远程仓库
3)merge,把一个提交的内容合并到当前目录。
4)pull,相当于fetch+merge,从远程仓库同步到本地仓库,并且把对应当前分支的内容merge到当前工作目录,其结果会生成一个新的提交。
5)commit,把当前工作目录的修改提交到本地仓库。
 
 
17、分布式Git
1)工作流程
集中式工作流:
一个存放代码仓库的中心服务器,可以接受所有开发者提交的代码。所有的开发者都是普通的节点,作为中心集线器的消费者,平时的工作就是和中心仓库同步数据。
集成管理员工作流:
项目维护者可以推送数据到公共仓库 blessed repository(项目仓库)。
贡献者克隆此仓库,修订或编写新代码。
贡献者推送数据到自己的公共仓库 developer public(公共仓库)。
贡献者给维护者发送邮件,请求拉取自己的最新修订。
维护者在自己本地的 integration manger(克隆仓库) 仓库中,将贡献者的仓库加为远程仓库,合并更新并做测试。
维护者将合并后的更新推送到主仓库 blessed repository。
司令官与副官工作流:
一般的开发者在自己的特性分支上工作,并不定期地根据主干分支(dictator 上的 master)衍合。
副官(lieutenant)将普通开发者的特性分支合并到自己的 master 分支中。
司令官(dictator)将所有副官的 master 分支并入自己的 master 分支。
司令官(dictator)将集成后的 master 分支推送到共享仓库 blessed repository 中,以便所有其他开发者以此为基础进行衍合。
2)
3)
4)
 
 
 
 
 
 
【最常用】add,bisect,branch,checkout,
clone,commit,diff,fetch,grep,init,log,
merge,mv,pull,push,rebase,reset,rm,
show,status,tag,git help <command>
 
-----日常使用流程----
获取项目代码:git clone -b master ssh://git.atoninc.com/~/common.git
查看改动状态:git status
修改文件后暂存:git add <fileName>  或者 git add -u(仅暂存有改动的)
提交到本地版本库:git commit -m ‘注释说明’
上传到远程版本库:git push
获取别人的提交:git pull
使用图形工具:gitk 
 
其他更多功能如下:
 
-----版本库管理----
1、初始化版本库: git init
2、从远程仓库复制:
git clone [-b <branch>] <url> [newName or default]
[例]
git clone -b master ssh://git.atoninc.com/~/common.git
git clone -b master ssh://git.atoninc.com/~/common.git aton-common
 
 
【创建裸库,不含工作区,一般用来在服务器上作共享库】
git clone --brae <repository> <repository.git>
git clone --mirror <repository> <repository.git>
3、查看远程对象:git ls-remote <remoteName>
git ls-remote origin
git ls-remote --heads origin
git ls-remote --tags origin
 
-----暂存(到暂存区)----
git add <fileName>
git add -u
git add -A (添加所有文件,忽略的除外)
 
-----比较--------e
1、当前工作区&暂存区 git diff
2、暂存区&本地版本库 git diff --cached / git diff --staged
3、当前工作区&本地库 git diff HEAD <fileName>
 
-----提交(到本地库)----
git commit
git commit -m <注释>         
git commit -a -m <注释> (跳过暂存区)
查看提交详细
git log -p <fileName> 查看目前没一行最后改动的提交
#检出某次历史提交 git checkout <commit-id>
 
----撤销-----
1、修改最后一次提交  git commit --amend    
2、撤销暂存 git reset HEAD <fileName>
3、撤销修改 git checkout -- <fileName> (撤销工作区的修改,覆盖为暂存区的内容)
#回退所有内容到上一个版本  git reset HEAD^
#回退a.py这个文件的版本到上一个版本  git reset HEAD^ a.py
#向前回退到第3个版本  git reset –soft HEAD~3
#将本地的状态回退到和远程的一样  git reset –hard origin/master
#回退到某个版本  git reset 057d
#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit : git revert HEAD
 
-----移除文件----
git rm <fileName>
git rm -f <fileName> (防止删除前的暂存修改丢失)
git rm --cached <fileName>  (仅移除跟踪不删除实际文件)
【从版本库中彻底移除冗余文件】
#查找文件相关提交记录 git log --pretty=oneline -- eclipse
#从起始commit_id删除该文件 git filter-branch --index-filter \
'git rm --cached --ignore-unmatch eclipse' -- 5d80191^(6位commit_id)
 
-----远程库----
1、管理 git remote [-v(查看库地址)]
git remote add <remoteName>
git remote rm <remoteName>
git remote rename <old> <new>
2、更新
git fetch <remoteName>(不会自动merge)
demo:{
  git fetch origin master:tmp
  git diff tmp
  git merge tmp
}
git pull <remoteName> <branchName> 自动抓取数据,自动合并远端分支到本地库当前分支
(默认参数按照config中的配置)
3、推送
git push <remoteName> <branchName>
git push --tags
 
-----分支----
1、管理 git branch [-v(最后一次提交信息)| --list]
创建 git branch <branchName>
过滤 git branch --merged/--no-merged
删除 git branch -d/D(强制)  <branchName>
2、切换(检出)
git checkout [-b(同时新建)] <branchName>
【注意工作区的清洁,其他未提交的修改,解决方法如下:】
1、 git stash 切换之前保存当前工作进度
2、 git checkout <new_branch> 检出(或新建)新分支
3、 git checkout <orignal_branch>工作完成切换回原分支
4、 git stash pop 恢复之前的进度     
=====[stash管理]====
查看 git stash list
删除 git stash drop stash@{1} (无参数默认删除第一个)
清除 git stash clear (删除全部)
找回 git stash apply stash@{1} (无参数默认操作第一个git stash apply == git stash pop)
比较 git stash show stash@{1} (无参数默认首个?)
 
3、合并 git checkout master , git merge <branchName>(合并其他分支到当前,即master)
git mergetool (可视化冲突合并工具)
 
-----远程分支-----
1、查看  git ls-remote --heads <origin>
本地查看 git branch -r
2、检出
检出远程其他分支 git checkout <remoteBranch>(自动在本地新建同名分支并与远程分支关联)
从本地分支创建跟踪分支 git checkout --track -b <newBranch> <localBranch>
3、新建
提交本地{特定}分支作为远程{已存在的}分支
git push origin <localBranch>:<remoteBranch>
 
提交本地{特定}分支作为远程{新建的}分支
git push origin <localBranch>:<new remoteBrnahc>
 
 
-----标签(里程碑)---- git tag -n
1、查看
过滤
2、新建
在当前commit:git tag -a v0.1 [-m 'Version 0.1']
在特定commit:git tag -a v1.0 <commit-id> [-m 'Version 1.0,balabala...']
3、删除
删除本地:git tag -d <tagName>
删除远程:git push origin :refs/tags/<tagName>
 
更新到远程库 git push [branch] --tags
 
=====设置======
windows下特别注意:
#忽略文件权限的改动:git config --global core.filemode false
 
#文件checkout时自动把LF转成CRLF,check in 时自动把CRLF转成LF
git config --global core.autocrlf true
 
----.gitignore----
 
!白名单
 
正则黑名单
 
-----> ~/.gitconfig----
 
增加命令别名:
 
[alias]
s = status
ck = checkout
df = diff
cm = commit
br = branch
pl = pull
ps = push
cl = clone
1、注释的默认编辑器     git config --global core.editor
2、信息显示着色 git config --global color.ui true
 
调整Git日志显示格式
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"
 

git 获取秘钥
cat ~/.ssh/id_rsa.pub

git 修改远程地址
 git remote set-url origin git@git.kahntang.cc:party1/party1-oauth2-service-play.git

git 查看当前远程地址
git remote -v

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值