git常用操作

git status
    untracked  新增文件,未被添加到staged, git不能管理
    Changes not staged for commit 已修改或者已通过git add 添加到staged的新增文件
    Changes to be committed 可执行git commit 进行提交
    
git branch
    git branch 查看本地分支
    git branch -r 查看远程分支
    git branch -a 查看所有分支, 包括本地和远程
    git branch branchName 创建本地分支
    git branch -d branchname / git branch -D branchname 删除本地分支, D 强制删除
    git branch -d -r branchname 删除远程分支
    
git clean 从你的工作目录中删除所有没有tracked,没有被管理过的文件
    n :显示将要被删除的文件,不会真的删除
    d :删除未被添加到 git 路径中的文件(将 .gitignore 文件标记的文件全部删除)
    f :强制运行
    x :删除没有被 track 的文件
    
git checkout
    git checkout branchname 切换本地分支
    git checkout -b 本地分支名 origin/远程分支名                  切换远程分支,需要先将远程分支与本地分支关联,该命令可以将远程仓库里指定的分支拉取到本地,并在本地创建一个分支与指定远程仓库分支关联起来。并切换到新建的本地分支中   
    git checkout . 放弃所有工作区的修改
    git checkout --filename 放弃工作区指定文件的修改
    git checkout -f 放弃工作区和暂存区的所有修改

补丁操作:
1、生成补丁  
    git format-patch 
        git format-patch HEAD^   打包最近的一个patch
        git format-patch HEAD^^  打包最近的两个patch
        git format-patch HEAD^^^ 打包最近的三个patch
        git format-patch -1      打包最近的一个patch
        git format-patch -2      打包最近的两个patch
        git format-patch -n1 -n2 打包版本n1与n2之间的patch,包括n1 n2
        git format-patch commitid 某次提交以后的所有patch,不包含此次提交    
        git format-patch commitid --stdout > filename.patch 将所有patch输出到一个指定位置的指定文件,不包含此次提交
        git format-patch -1 -k committed 打包最新一次提交
2、补丁检查
        git apply --stat filename.patch 不应用补丁,而是输出补丁diff
        git apply --check filename.patch 不应用修补补丁,而是查看补丁是否适用
3、应用补丁
        git apply filename.patch  git apply不会将补丁中的修改做commit操作,改动的文件在工作区,git log 不会显示日志
        git am filename.patch     git am 会将补丁中的修改做commit操作,git log 会显示日志
        git am *.patch            一次打入多个文件
4、将最新一次提交打包为patch的步骤
        1、git format-patch -1 -k committed 最新一次提交打包为patch
        2、git reset --hard HEAD^ 恢复提交到上一次提交, 恢复一次提交的目的是为了检查patch, 在最新的提交下patch不能检查成功(这个命令可以?git am --keep-cr my.patch)
        3、git apply --stat filename.patch  
        4、git apply --check filename.patch   patch 检查,检查时没有输出表示应用成功
        5、git am / git apply filename.patch  git apply执行之后需要自己提交文件,区别见上

git diff 查看工作区修改的内容
git diff —cached  查看添加到暂存区但还未提交的内容
git diff > patchfile 生成兼容unix系统的标准格式patch, 搭配git apply 使用?

git stash       将未提交的代码隐藏起来
git stash list  显示隐藏的未提交的代码
git stash pop   恢复隐藏的未提交的代码
git stash apply 恢复隐藏的未提交的代码, 与git stash pop不同的是git stash pop会删除隐藏代码的记录id,git stash apply不会删除记录,git stash list还能看到
注意:
    多次git stash后,会有多条隐藏代码的记录id, git stash pop / git stash apply id  能够恢复指定的记录

git submodule
    在项目中创建一个子模块
        git submodule add <submodule_url> 
    第一次克隆时,在项目中获取子模块
        git clone 主项目 --recurse-submodules   第一种方法
        git submodule init git submodule update 直接克隆主项目后,执行左边命令
    子模块内容的更新
        当前项目下子模块文件夹内的内容发生了未跟踪的内容变动,通常是在开发环境中,直接修改子模块文件夹中的代码导致的,此时在主项目中使用 git status 能够看到关于子模块尚未暂存以备提交的变更,但是于主项目而言是无能为力的,使用 git add/commit 对其也不会产生影响,在此情景下,通常需要进入子模块文件夹,按照子模块内部的版本控制体系提交代码,当提交完成后,主项目的状态则进入了情况2,即当前项目下子模块文件夹内的内容发生了版本变化
            
        当前项目下子模块文件夹内的内容发生了版本变化
            可以使用 git add/commit 将其添加到主项目的代码提交中,实际的改动就是那个子模块文件所表示的版本信息
            
        当前项目下子模块文件夹内的内容没变,远程有更新  
             cd project-sub
             git pull origin master 
             此时,子模块目录下的代码版本会发生变化,转到情况2的流程进行主项目的提交,当主项目的子项目特别多时,可能会不太方便,此时可以使用 git submodule 的一个命令 foreach 执行
             git submodule foreach 'git pull origin master'

git add
    git add file1 file2 file3   git add 添加多个文件,文件之间以空格隔开
    git add file1               git add 添加单个文件
    git add .                   添加所有的文件
    git add 文件夹名            git add 文件夹
    git add config/*                config目录下及子目录下所有文件
    git add home/*.php              home目录下的所有.php文件

git push
    git push <远程主机名> <本地分支名>:<远程分支名>
    git branch -vv 本地分支和远程分支追踪关系查看
    git push --set-upstream origin skywalking_trace 本地分支skywalking_trace和origin skywalking_trace分支建立追踪关系并推送
    git branch --set-upstream-to=origin/waf

git pull
    git pull <远程主机名> <远程分支名>:<本地分支名>
    
git remote
    git remote -v               显示所有远程仓库
    git remote show name        显示某个远程仓库的信息
    git remote add name url     添加远程版本库
    git remote add origin git@github.com:username/Hello-World.git
        
    git remote rm name          删除远程仓库
    git remote rename old_name new_name   修改仓库名
       
git reset
    git reset --hard    回滚commit的同时,stage区和工作区的改动也全消失
    git reset --soft    回滚commit的同时,保留工作目录和暂存区中的内容,并把重置 HEAD 所带来的新的差异放进暂存区
    git reset --mixed   不带参数默认使用,保留工作目录,并且清空暂存区,工作目录的修改、暂存区的内容以及由 reset 所导致的新的文件差异,都会被放进工作目录
    
git merge
git rebase

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值