zoukankan      html  css  js  c++  java
  • GIT命令集合

    一、配置和日志

    配置信息
    git config --list                          //查看当前配置信息
    git config -e [--global]                   //编辑当前(全局)配置信息
    git config --global user.name "xxx"        //设置全局的用户名xxx
    git config --global user.email x@y.com     //设置全局的邮箱为x@y.com
    git clone [url]                            //从对应的url直接拉取对应的git代码
    
    日志查看
    git log                                    //查看日志
    git log --oneline                          //--pretty=oneline --abbrev-commit 合用的简写oneline会将每个提交放在一行显示
    git log -p                                 //按补丁格式显示每个提交引入的差异。diff形式
    git log -n                                 //查看n条提交记录
    git log --after(--before) '2021-05-23'     //查看时间之后(之前)的提交日志
    git log --stat                             //输出每次提交文件增删改的统计数据。
    git show (-n)                              //查看提交的(后n条)具体diff记录,默认只会输出最头上一条。比git log -p要全一些
    git show (hash)                            //查看指定的记录的diff。可结合git log --oneline中的hash值来查看
    git status [-s]                            //查看在你上次提交之后是否有对文件进行再次修改(-s简短输出)

    二、暂存区与提交

    添加到暂存区
    git add [file1] [file2] ...                //添加指定的file1,file2文件到暂存区
    git add [dir]                              //添加指定目录到暂存区,包括子目录
    git add .                                  //添加当前目录下的所有文件到暂存区,提交新的(new)和被修改(modified),不包括被删除(deleted)
    git add -u                                 //提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
    git add -A                                 //提交所有变化是 . 和 -u的和
    git add -i .                               //交互式拣选操作.([r]revert)输入序号n,删除添加到索引库的文件.([u]pdate)...
    
    将暂存区内容添加到本地仓库
    git commit -m [message]                    //提交暂存区到本地仓库中,提交信息为message
    git commit [f1] [f2]... -m [message]       //提交暂存区的指定文件到仓库区
    git commit --amend                         //追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中
    
    提交到远程仓库
    git push <远程主机名> <本地分支名>:<远程分支名> //从将本地的分支版本上传到远程并合并
    git push origin [master:]master            //将本地的 master 分支推送到 origin 主机的 master 分支
    git push --force[-f] origin master         //如果本地版本与远程版本有差异,但又要强制推送可以使用 --force ,或者是-f。谨慎使用
    git push --delete[-d] origin master        //删除远程分支
    
    删除 git rm [
    -f] [fileName] //将fileName文件从暂存区和工作区中删除。-f强制删除 git rm --cached [fileName] //将fileName文件从暂存区域移除,但仍然希望保留在当前工作目录中 git rm -r [fileName | dirName] //递归删除文件或文件夹

    三、分支操作

    git branch [-r] [-a]                       //查看分支,没有参数查看本地。-r查看远程分支,-a查看远程和本地
    git branch [-d] [-D] dev                   //-d删除dev分支。如果在分支中有一些未merge的提交,那么会删除分支失败,可以使用-D强制删除
    git push origin --delete [branchname]      //删除远程分支branchname
    git remote update origin --prune           //更新下本地的git分支保持和远程分支一致
    git merge [branch1]                        //将分支branch1合并大当前分支
    git merge --squash [branch1]               //从当前分支与branch1分支的共同结点开始,将branch1分支的所有commit压缩,合并成一个新的改动需要创建一个新的commit,让分支更加整洁和清晰。
    git rebase [branch1]                       //当前分支以branch1切的分支。当前branch1在切分支时,之后的提交也作为当前分支的基准.例如:master分支切分出了test1分支,test1开发完成之后准备重新rebase master,此时发现有第三者在master分支上(在test1开发的时间内)提交有a,b,c三个commit,那么rebase会将master上a,b,c三次提交也作为当前test1的切分基准.                     
    git rebase -i HEAD~3                       //将当前分支的最近3次commit进行压缩合并。pick:保留该commit(缩写:p);reword:保留该commit,但我需要修改该commit的注释(缩写:r);edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e);squash:将该commit和前一个commit合并(缩写:s);fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f);exec:执行shell命令(缩写:x);drop:我要丢弃该commit(缩写:d)
    git rebase -i [commit id]                  //合并从当前head到指定commit id的提交

    四、其他高级

    版本回退
    git reset [--soft|--mixed|--hard] [HEAD]   //命令用于回退版本,可以指定退回某一次提交的版本。--mixed 为默认用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变;--soft 回退到某个版本,只回退了commit的信息,不会恢复到index file一级;--hard 彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;
    git reset HEAD~2                           //回退到两个版本前。在还没有进行提交的时候,如果还想要回到头部,可以结合git reflog,再次git reset到头部的commitID
    git reset [commit id]                      //回退到指定版本号(不包括该提交)之前的所有提交
    git revert [commit id]                     //撤销commit-id的操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交
    git revert HEAD                            //撤销上一次提交,并生成一个新的提交
    
    暂存操作
    git stash [save "save message"]            //暂存当前分支未提交内容并添加备注,方便查找。只有git stash 也可以,但查找时不方便识别。
    git stash list                             //查看stash了哪些存储
    git stash show [-p] [stash@{$num}]         //默认显示第一个存储做了哪些改动(-p以patch form方式展示)。如果显示第二个存贮:git stash show stash@{1}
    git stash apply                            //应用某个存储,但不会把存储列表中删除。默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 
    git stash pop                              //命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,默认为第一个stash@{0}。如果希望删除并使用第二个同上。
    git stash drop stash@{$num}                //丢弃stash@{$num}存储,从列表中删除这个存储
    git stash clear                            //删除所有缓存的stash
    
    git cherry-pick [commit id]                //将其他分支指定的提交(commit)应用于当前分支。多个提交为git cherry-pick A B或者是git cherry-pick A..B,A到B的提交都应用

    五、GIT实战汇总

    1,忽略提交的文件

    git update-index --assume-unchanged [filePath]                                               //忽略每次都不想提交的文件
    git update-index --no-assume-unchanged [filePath]                                            //取消忽略不提交的文件
    git ls-files -v | grep '^h'                                                                  //查看忽略的文件列表
    git ls-files -v | grep '^h' | awk '{print $2}'                                               //提取忽略的文件路径
    git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged //取消所有被忽略的方法

    2,删除远程仓库的文件或文件夹

    git rm -r --cached 文件/文件夹名称  
    git commit -m "提交说明"
    git push origin [-f] master                                                                  //如果push报错可采用-f强制

     3,强制覆盖本地仓库

    git fetch --all
    git reset --hard origin/master
    git pull
    //或简写为
    git fetch --all && git reset --hard origin/master && git pull

    4,git修改分支名

    git branch -m oldbranch newbranch                                                            //oldbranch原分支名;newbranch新分支名称。基于原分支切新分支
    git push --delete origin oldbranch                                                           //删除远程原分支oldbranch
    git push origin newbranch                                                                    //将本地新分支newbranch推送到远程 
  • 相关阅读:
    Codeforces Round #248 (Div. 2) C. Ryouko's Memory Note
    Codeforces Round #103 (Div. 2) D. Missile Silos(spfa + 枚举边)
    Codeforces Round #174 (Div. 1) B. Cow Program(dp + 记忆化)
    Linux安装redis数据库及添加环境变量
    window安装redis数据库
    Python时间获取详解,Django获取时间详解,模板中获取时间详解(navie时间和aware时间)
    解决跨域HttpResponseJsonCORS, HttpResponseCORS 返回字典数据
    python通过原生sql查询数据库(共享类库)
    元组套元组转列表套字典数据格式
    django自带过滤器大全
  • 原文地址:https://www.cnblogs.com/bbgs-xc/p/14800983.html
Copyright © 2011-2022 走看看