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 "xxx@gmail.com" 户的家目录下的.gitconfig文件中
git config user.name "xxx_name" 项目级别的签名设置,放在工作仓库的.git/config里面
git config user.email "xxxxx@gmail.com" 项目级别的签名设置,放在工作仓库的.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 #如果远端对文件修改,则本地同步