Linux:Git

Git常见指令:

bash 复制代码
git  help  xx_command
git  xx_command  --help 
 
git   --version                            查看git版本
 
git config --global user.name  "xxx_name"       全局级别的签名设置,全局的放在本用
git config --global user.email "[email protected]"  户的家目录下的.gitconfig文件中
 
git config user.name "xxx_name"            项目级别的签名设置,放在工作仓库的.git/config里面
git config user.email "[email protected]"    项目级别的签名设置,放在工作仓库的.git/config里面
 
git config --list                        查看配置
git config --global --list               查看全局配置
git config --global --edit               编辑全局配置
 
 
 
git init                                 初始化本地仓库,会在当前目录下创建一个.git的目录
 
git status                               查看仓库当前状态
git status  -uno                         查看仓库当前状态,忽略未跟踪的文件
 
git add  [file name]                     本地写好的文件放到暂存区域
  git add .                              等于 git add -A 或者 git add --all
  git add 这个命令处理后面可以增加 pathname,也可以增加参数
  git add 默认不加参数,表示他会监控工作区的状态,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
  git add -u(--update),仅添加已经被git跟踪的文件(tracked file),会将修改(文件内容修改和文件删除)的文件提交到暂存区。git add -u 不会提交新文件(untracked file)。
  git add --all(-A, --no-ignore-removal),是上面两个的合集,即会把修改的文件加到暂存区,也会把新建的文件加到暂存区,同时还会把已经工作区删除了的文件从暂存区删除掉。
 
git restore
    git restore --staged                 将暂存区的文件从暂存区撤出,但不会更改文件文件的内容。
    git restore xxx                      撤销在工作空间但是不在暂存区的文件更改,如恢复工作区删除的文件xxx
 
 
git rm --cached <file>...                删除暂存区域的文件,和本地区域没关系
 
git commit  [file name]                  把暂存区域内容,维护到本地仓库
    git commit -a
    git commit -m "commit message" [file name]    不进入到文本模式,进行更改记录的添加
    git commit --message="commmint message log" [file name]
    git commit --amend                   修正上次的提交,可以使用上一次的提交信息,也可以对上次提交的内容进行修改。
                                         git commit -m "xxx" 提交之后,发现-m的说明文字写的有问题,想要重新写提交信息,
                                         或者又修改了某些文件,利用上次的提交信息并作部分修改,这个时候可以用命令 
        	                         git commit --amend  -m "xxx"  覆盖上一次的提交信息进行commit提交,
                                         且上次的提交信息不会出现在提交 git log中
    git commit -s -m XXX                 在git log 的时候会多展示 signed-off-by  行
    git commit -a -m XXX                 相当于先git add .  再git commit -m  XXX
 
 
git log                                  查看版本的更新日志,使用空格一屏一屏的切换
    git log --stat                           查看提交记录,显示文件列表改动,不包括内容改动
    git log -n                               n表示只显示最近n次的记录
    git log --pretty=oneline                 每次提交显示一行(全hash值)
    git log --oneline                        每次提交显示一行(哈希值的前7位)
    git reflog                               HEAD@{x}中x表示从当前版本回退到某个版本HEAD指针要移动的次数
    git log --oneline --decorate --graph --all   图像化的方式显示出分支创建后的版本迭代过程
    git log --oneline --graph
    git log --oneline -n --graph             n表示只显示最近n次的记录
    git log -- filename(git log filename)    可以看到该文件相关的commit记录
    git log -p filename                      可以显示该文件每次提交的diff
    log一页显示不全,英文状态下按Q退出git log 命令,按空格或者回车显示下面的信息
 
 
git reset    
--hard                            
  git reset --hard                       查看当前HEAD指向的版本
  git reset --hard  xxxxxxx              基于索引值(哈希值),xxxxxxx就是哈希值的前几位
  git reset --hard  HEAD^                基于^符号,只能向老版本回滚,不能向新版本回滚。
                                         向后回滚一个版本,HEAD后面的就一个^;向后回滚2个,在HEAD后面就使用两个^^
  git reset --hard  HEAD~n               基于~符号。只能向后回滚,回滚版本数n。
  git reset ---hard origin/master         回退到与远程master代码一样
--hard这个参数在一定情况下会有一定的危险。比如在工作区内容没提交工本地库之前,使用了--hard命令把本地库的内容重置到工作区和暂存区,会导致工作区更改的内容丢失。
 
git reset --mixed
git reset --soft
 
 
git branch\ git checkout
    git branch   分支名xx                     创建分支xx
    git checkout 分支名xx                     切换到分支xx
    git checkout -b 分支名xx                  基于当前分支(commit)创建并切换到分支xx
    git checkout -b 分支名xx commit_id        基于commit_id创建并切换到分支xx
    git checkout commit_id                    基于commit_id切到临时分支,可用于实验性修改
    git branch -d xx                          删除分支xx
    git branch -D xx                          强制删除分支xx
    git branch                                列出当前分支清单,列出所有分支
    git branch -a                             查看远程分支和本地分支
    git branch -r                             查看远程的分支名
    git branch -v                             查看各个分支最后一个提交信息
    git branch --merged                       查看哪些分支已经合并入当前分支
 
 
git merge 要合并的(from)分支名称       要先切换到接受修改的(to)分支上,由接受修改的分支来执行merge合并命令
 
git commit -m "commit msg"                分支冲突解决后,提交不能有文件名
 
 
git remote -v                             查看当前的远程仓库连接
git remote add origin URL                 为远程库取个别名,叫origin
 
git push
  git push <远程主机名> <本地分支名>  <远程分支名>    
     如 git  push  origin  master:refs/for/master   将本地的master分支推送到远程主机origin上的对应master分支, 
                                                    origin 是远程主机名,第一个master是本地分支名,第二个master是远程分支名。
  git push origin master             如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
  git push -u origin master          如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push
  git push origin               如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支 
  git push                      如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名
 
 
git clone
    git clone URL           1完整的把远程库下载到本地  2创建origin远程库别名  3初始化本地库
    git clone -b 分支名  仓库地址  存放路径    克隆指定的分支到本地目录,然后在该目录下push时,对应的就是push到远端的对应分支。
    git clone --recursive URL     递归克隆项目下面的所有git项目
 
 
 
git fetch [远程库别名] [远程库分支]     将远程主机的内容拉到本地,不合并
git merge [远程库别名/远程库分支]       本地合并远程库内容
当然上面这两步可以用一个操作 git pull 来统一完成
 
git pull
    git pull 命令的作用是:将远程主机的内容拉下来后直接合并,即:git pull = git fetch + git merge,可能会产生冲突,需要手动解决。它的完整格式稍稍有点复杂。
 
    git pull [<options>] [<repository> [<refspec>...​]]
    git pull  <远程主机名>   <远程分支名>:<本地分支名>
        比如,要取回origin主机的next分支,与本地的master分支合并,需要写成下面这样:
    git pull origin next:master
        如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:
    git pull origin next
 
        什么时候使用  git pull [远程主机名] [远程分支名] [本地分支名]  ?
        修改比较简单,确定不会产生合并冲突的时候。
 
        什么时候使用git fetch [远程主机名] [远程分子名],git merge [远程库名/远程分支名] [本地分支]
        远程仓库的修改可能和本地仓库产生冲突的时候,可以先把远程仓库的放到本地。经过对比之类后,再进行合并(也要解决冲突)。
 
 
git rm
  如果是对所有文件都取消跟踪的话,就是
  git rm -r --cached .   //不删除本地文件
  git rm -r --f .        //删除本地文件
 
 
  对某个文件取消跟踪
  git rm --cached readme1.txt    删除readme1.txt的跟踪,并保留在本地。
  git rm --f readme1.txt         删除readme1.txt的跟踪,并且删除本地文件。
  当需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 
    可以使用 git rm --cached xxx
  git rm --cached 会从index里面删除该文件,下次commit的时候会修改git仓库,
    但是本地的文件还是保留
 
 
git blame                        显示文件的每一行最后修改的版本和作者
    用法:git blame [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--      incremental] [-L n,m]  [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>] [--abbrev=<n>]  [<rev> | --contents <file> | --reverse <rev>] [--] <file>
    例如,git blame -L 100,120   xx.c
 
git diff
    git diff    //比较工作区与暂存的(git add 后)的差别,一个文件可以在commit之前多次add
    git diff --cached || --staged          //比较暂存区文件 与上一次commit 的差别
    git diff branch1 branch2 --stat        //显示出所有有差异的文件列表
    git diff branch1 branch2 具体文件路径   //显示指定文件的详细差异
    git diff branch1 branch2               //显示出所有有差异的文件的详细差异

Linux下Git仓库管理:

.gitignore 凡是在这个文件内部的后缀,对应的文件,不会被上传到gitee上!
.git 所谓的git仓库,本质就是一个目录,.git文件里面的内容。
**push:**本质上就是将.git里面的内容同步到gitee上去,也就是上传本地内容!

日志不能乱写!git log

如果Linux没有安装Git :sudo apt install git ,当你首次安装Git时,会提示你进行配置用户名和邮箱。

向Gitee提交流程:

bash 复制代码
mkdir example
mv /path /path/example/
git add [文件名]  #添加到暂存区 add .
git commit .  #提交改动到本地
git push     #同步到远端服务器上,需要填用户名和密码
git status   #查看git的变化
git rm filename #删除仓库文件,再commit,再push
git log  #查看日志
git pull #如果远端对文件修改,则本地同步
相关推荐
枫叶落雨2229 小时前
Git 使用规范指南
git
德育处主任15 小时前
聚沙成塔,三步成书:GitBook极简入门教程
前端·git·电子书
m0_6356474815 小时前
git管理github上的repository
git·github
Jiude16 小时前
基于开源项目开发公司项目,如何同步开源仓库的最新更新(以vben为例)
git·开源·github
PAK向日葵16 小时前
【软件工程】如何使用Git Rebase同步团队开发进度
git·面试
枫叶落雨22219 小时前
git checkout C1解释
git
Dontla19 小时前
git stash介绍(临时保存当前工作目录中尚未提交的修改)
git
黎相思21 小时前
Git多人协作
git
一只名叫Me的猫21 小时前
Git 常用命令 - 服务器用
git
黎相思1 天前
Git基本操作
git