当前位置:   article > 正文

Git 命令大全

git 命令

一、Git常用命令
1.git clone
    1.1 git clone <url> #克隆远程版本库
    1.2 git --version #查看git版本
    1.3 git status #查看状态
    1.4 git config --list #查看git配置
    1.5 git config --system #对当前机器上所有的用户和git项目都生效
    1.6 git config --global #当前用户主目录的.gitconfig文件,对当前用户有效
    1.7 git config #项目的.git目录下的config文件,仅仅对当前git管理的这个项目有效
    1.8 git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -nosession" #配置默认的文本编辑器

2.git init
    2.1 git init #初始化本地版本库
3.git add
    3.1 git add . #将当前新增或者修改过的文件加入到暂存区
        git add --all . #将当前新增、修改或者删除的文件加入到暂存区
    3.2 git add <file> #跟踪指定的文件
    3.3 git add -i #进入交互模式将暂存区的文件挪出来
    3.4 git add -f <file> #强制提交已忽略的文件
    3.5 
4.git commmit
    4.1 git commit -m "commit message" #提交所有更改过的文件
    4.2 git commit --amend #修改最后一次提交的备注信息
5.git log
    5.1 git log #查看当前分支指向的commit之前的提交历史
        git reflog #查看完整的提交历史
    5.2 git log -p <file> #查看指定文件的提交历史
    5.4 git log --patch -2 #查看最近2次提交的代码的差异
    5.5 git log --stat #显示每次提交的统计信息
    5.6 git log --pretty=oneline #每个提交显示一行
    5.7 git log --pretty=format:"%h - %an, %ar : %s" #显示短hash、作者、多长时间以前、提交说明
    5.8 git log --oneline --abbrev-commit --graph #可以看到整个commit树结构,包括如何合并的
    5.9 git log --abbrev-commit master..feature/001 #查看feature/001的那些commit还没有合并到master中去
    5.10 git log --abbrev-commit feature/001..master #查看那些commit在master上有但是feature/001还没有
    5.11 git log --abbrev-commit origin/master..HEAD #查看本地的修改还有多少没有推送到远程master上去
    5.12 git log --abbrev-commit feature/001 feature/002 --not master #查看在feature分支上都有的commit,在master还没有
    5.13 git log --abbrev-commit feature/001...feature/002 #查看那些commit存在于两个分支的某一个,但不是两个分支都有
6.git checkout
    6.1 git checkout HEAD <file> #撤销指定的未提交文件的修改内容
    6.2 git checkout <branch/tag> #切换到指定分支或标签
    6.3 git checkout -b feach001 origin/feach001 #创建本地分支并跟踪远程分支
    6.4 git checkout -- <file> #用版本库的文件替换工作区的文件
7.git reset
    7.1 git reset --hard HEAD #撤销工作目录中所有修改文件的修改内容
    7.2 git reset --soft HEAD^ #撤回了git commit 的操作
    7.3 git reset HEAD^ #撤回了git commit 和 git add 的操作
    7.4 git reset --hard HEAD^ #就可以回退到上一个版本
    7.5 git reset --hard HEAD~5 #退回到HEAD之前的倒数第5个commit的状态
    7.6 git reset --hard d324644 #指定一个commit的hash值,回退到很老的版本
    7.7 
8.git branch
    5.1 git branch #显示所有本地分支
        git branch -a #查看本地和远程所有分支
    5.2 git branch -vv #查看本地分支和远程分支的对应关系
    5.3 git branch <new-branch> #创建新分支
    5.4 git branch -d <branch> #删除本地分支
    5.5 git branch -D <branch> #强制删除本地分支
    
9.git tag
    9.1 git tag #列出所有本地标签
    9.2 git tag <tagname> #基于最新提交创建标签
    9.3 git tag -d <tagname> #删除标签
    9.4 git tag <tagName> <版本号> #把版本号打上标签,版本号就是commit时,跟在旁边的一串字母数字
    9.5 git tag -a <tagname> -m "<说明>" #创建带说明的标签
10.git diff
    10.1 git diff #查看工作区和暂存区变更内容
    10.2 git diff --cached #暂存区和仓库
    10.3 git diff HEAD #工作区和仓库
    10.4 git diff feature/001 master #两个分支之间的差异
    10.5 git diff HEAD HEAD^ #两次提交之间的差异
11.git pull
    11.1 git pull <remote> <branch> #下载代码及快速合并
    11.2 git pull --rebase #执行变基式合并,让commit的提交历史看起来是一条直线
12.git push
    12.1 git push <remote> <branch> #上传代码及快速合并
    12.2 git push <remote> :<branch/tag-name> #删除远程分支或标签
    12.3 git push origin --tags #上传所有标签到远程
    12.4 git push origin <tagname> #推送某个标签到远程
    12.5 git push -u origin master #把仓库区的主分支master提交到远程仓库里
    12.6 git push -u origin <其他分支> #把其他分支提交到远程仓库
    12.7 git push origin --delete serverfix #删除远程分支
    
13.git romote
    13.1 git remote -v #查看远程版本库信息
    13.2 git remote show <remote> #查看指定远程版本库信息
    13.3 git remote add <remote> <url> #添加远程版本库
    13.4 git remote add origin https://github.com/name/name_cangku.git #把本地仓库与远程仓库连接起来
14.git show
    14.1 git show master #查看master分支指向那个commit
    14.2 git show HEAD^ #查看当前分支的上一个commit    
    14.3 git show HEAD~2 #查看当前分支的上上个commit
    14.4 git show <tagname> #查看标签信息
15.git stash
    15.1 git stash #将本地修改的内容暂存起来
    15.2 git stash list #查看stash列表
    15.3 git stash apply #将最近一次stash的内容恢复回来但是不删除
         git stash pop #恢复的同时把stash内容也删了
    15.4 git stash apply stash@{0} #恢复到指定的一次stash
    15.5 git stash apply --index #如果执行git stash的时候有内容放入了暂存区,恢复的时候用此命令
    15.6 git stash drop stash 名称 #手动删除掉某个stash
    15.7 git stash --include-untracked #将暂存区中的内容,tracked和untracked的内容全都暂存
16.git rebase
    16.1 git rebase -i HEAD~3 #调整最近3个commit
    16.2 git rebase --continue
    16.3 git rebase --abort
    16.4 git rebase --skip
    16.5 git rebase <branch> #衍合指定分支到当前分支
    16.6 git rebase #把分叉的提交历史“整理”成一条直线,看上去更直观
17.git merge
    17.1 git merge --abort #两个分支merge时出现冲突,取消merge
    17.2 git merge <branch> #合并指定分支到当前分支 
    17.3 git merge --no-ff <分支名字> #合并分支的时候禁用Fast forward模式,因为这个模式会丢失分支历史信息
    


杂项:
    1.1 git mv <old> <new> #文件改名
    1.2 git rm <file> #删除文件
    1.3 git rm --cached <file> #停止跟踪文件但不删除
    1.4 git blame <file> #以列表方式查看指定文件的提交历史
    1.5 git revert <commit> #撤销指定的提交
    1.6 git check-ignore -v <file> #强制提交已忽略的文件
    1.7 git fetch <remote> #从远程库获取代码
    1.8 git config --global color.ui true #让Git显示颜色,会让命令输出看起来更醒目

二、操作流程
1.从git上拉代码的流程
    git stash --将本地修改暂存
    git pull --将远程分支的代码拉到本地
    git stash pop --将本地暂存的代码释放
2.对比两个分支修改的文件
    git diff A..B --stat
3.将本地的master分支和远程的master分支做关联
    git branch --set-upstream-to=origin/master master
4.在本地创建分支develop,推送到远程仓库
    git checkout -b develop #在本地创建develop分支,并切换到develop分支
    git push -u origin develop #将本地develop分支推送到远程仓库
5.修改了工作区的内容,但是还没有放入暂存区和仓库,此时要抛弃这些修改
    git reset --hard HEAD
6.修改了工作区的内容,放入了暂存区,但是没有提交,此时要抛弃这些修改
    git reset HEAD = git reset --mixed HEAD #将暂存区里加入的内容撤销掉,然后在工作区重新修改代码
    git reset --hard HEAD #将暂存区和工作区的内容一次性抹掉
7.修改了工作区的内容,已经提交,此时要放弃这些修改
    git reset --hard HEAD^ =  git reset --hard commit 标识符
8.在本地commit,同时还推送到了远程仓库,此时要撤回
    git revert HEAD #本地撤回commit操作    
    git push origin master #完美同步撤回远程仓库的commit操作了
9.在两个分支合并的的时候出现冲突,取消,不想merge
    git merge --abort
10.如果在本地merge后想要撤回
    git reset --hard HEAD^
11.推送了merge之后的commit到远程仓库后想要撤回
    ①如果是要撤回已经push到远程仓库的merge操作
    ②在本地执行git revert -m 1 HEAD,再执行git push origin master,此时本地和远程的提交历史都会多一个commit出来,该commit的内容和合并之前的master指向的那个commit是一样的,同时master此时指向最新的那个commit
    ③但是后面,如果要再次将release分支和master分支进行合并,此时是需要特殊处理的,再次在本地执行:git revert HEAD,git push origin master。就是再次将master还原到指向一个新的commit,该commit的内容与上一次merge后的那个commit一样,包含merge的内容
    ④最后再次将release分支与master分支进行合并,此时可以保证release分支所有的内容,都是合并到master分支的
12.查找谁在那次commit引入了bug
    ①git bisect start:开始二分查找
    ②git bisect bad:标注当前这个commit是有bug的
    ③git biset good v1.0.0:用tag来标注说从上一次哪个上线为止,是没有bug的,就是那个tag对应的commit之前都是好的
    ④git bisect reset:从二分查找状态中恢复到之前的状态
13.删除远程标签
    ①git tag -d v1.0 #删除本地标签v1.0
    ②git push origin:refs/tags/v1.0     #删除远程标签v1.0
14.将一个项目发到gitlab上
    ①git init
    ②git remote add origin https://git.lug.ustc.edu.cn/LiAnChen/mylims.git
    ③git add .
    ④git commit -m "Initial commit"
    ⑤git push -u origin master    

15.git制作增量包

①先找到指定的开始提交id,比如 05104e3475f63e1e49fbfcbd424a4a3801b95645

②找到结束的提交id,比如 a0eb9bc6d4e1801062877fd435eefb81f11598b8

③在命令行下进入到git代码目录中,敲命令制作增量包

    git archive -o hot-fix-20151001.zip HEAD $(git diff 05104e3...a0eb9bc --name-only)

    注:git diff 后边的commit id, 可以只取前7位或全部写上都可以

④命令执行完成后,在当前目录生成一个.zip的文件,这个就是增量包文件了

Tips: 其实还可以把zip文件生成到指定目录中,把上边git archive的命令改一下

    git archive -o /root/hot-fix-20151001.zip HEAD $(git diff 05104e3...a0eb9bc --name-only)

    


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/540189
推荐阅读
相关标签
  

闽ICP备14008679号