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推送到远程 
原文地址:https://www.cnblogs.com/bbgs-xc/p/14800983.html