git使用
- Git操作基本指令:
- 分支操作:
- 操作远程仓库:
- 文件操作
- 比较文件差异
- 删除文件
- 撤销文件
- 重命名文件
- 操作标签
- SSH密钥
- git错误示例
- 1、git status(或任何其他git命令)然后会出现fatal: Not a git repository (or any of the parent directories)错误。
- 2:error: Your local changes to the following files would be overwritten by merge: 错误:您对以下文件的本地更改将被merge覆盖:
- 3、合并产生冲突
Git操作基本指令:
查看本地版本:git --version
设置用户签名:git config --global user.name 用户名
设置用户邮箱:git config --global user.email 邮箱
初始化本地库:git init
查看本地库状态:git status
添加到暂存区:git add 文件名
添加所有修改、已删除的文件到暂存区:git add -u 文件路径
添加所有修改、已删除、新增的文件到暂存区:git add -A 文件路径
查看所有修改、已删除但是没有提交的文件:git add -i 文件路径
提交到本地库:git commit -m “日志信息” 文件名
修改上次提交的描述信息:git commit --amend
不包括未被版本库跟踪的文件,等同于先调用了 “git add -u” :git commit -a
提交时显示所有diff信息:git commit -v
查看历史记录:git reflog
查看版本详细信息:git log
以图形化的方式显示提交历史的关系,这就可以方便地查看提交历史的分支信息,当然是控制台用字符画出来的图形:git log --graph
查看文件内容:cat 文件名
删除暂存区文件:git rm --cached 文件名
版本穿梭:git reset --hard 版本号(移动head指针指向)
分支操作:
查看分支:git branch -v
查看分支合并图:git log --graph
创建分支:git branch 分支名
创建分支与指定的远程分支建立追踪关系:git branch --track 分支名称 远程分支名称
删除本地分支:git branch -d 分支名称
强制删除指定的本地分支:git branch -D 分支名称
修改分支名称:git branch -m 原分支名 新分支名
强制修改分支名:git branch -M 原分支名 新分支名
切换分支:git checkout 分支名
创建并切换到指定分支 保留所有提交记录:git checkout -b 分支名
创建并切换到指定分支 删除所有提交记录:git checkout -orphan 分支名称
替换本地的改动 新增的文件和已添加到暂存区的内容不受影响:git checkot 文件路径
把指定的分支合并到当前分支上:git merge 分支名
把已经提交的记录合并到当前分支:git cherry-pick
操作远程仓库:
git remote -v :列出远程仓库的详细信息 在别名之后列出URL地址
git remote add 远程仓库的别名 远程仓库的URL地址:添加远程仓库
git remote rename 原远程仓库的别名 新的别名:修改远程仓库的别名
git remote remove 远程仓库的别名:删除指定名称的远程仓库
git remote set -url 远程仓库的别名 新远程仓库的url地址:修改远程仓库的url地址
推送本地分支到远程仓库:git push 别名 分支
git push远程仓库别名 --delete 远程分支名 :删除指定远程仓库的分支
拉取远程库分支到本地库:git pull 别名 分支
文件操作
比较文件差异
比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
$ git diff
比较暂存区中的文件和上次提交时的差异
$ git diff --cached
$ git diff --staged
比较当前文件和上次提交时的差异
$ git diff HEAD
查看从指定的版本之后改动的内容
$ git diff
比较两个分支之间的差异
$ git diff <分支名称> <分支名称>
查看两个分支分开后各自的改动内容
$ git diff <分支名称>…<分支名称>
查看文件列表
默认查看所有缓存的文件
$ git ls-files
查看未被跟踪的文件
$ git ls-files -o
查看被修改的文件
$ git ls-files -modified
查看暂存区中文件明细
$ git ls-files -s
删除文件
git rm -r 文件路径 移除跟踪指定的文件夹,并从本吧第仓库的文件加中删除
#删除工作区未跟踪文件
$ rm
移除工作区所有未跟踪文件
一般会加上参数-df,-d表示包含目录,-f表示强制清除。
$ git clean -df
直接从暂存区删除文件,工作区则不做出改变
$ git rm --cached
不但从暂存区中删除,同时删除工作区文件,-f 强制删除
$ git rm -f
撤销文件
重置暂存区,但文件不受影响
相当于将用 “git add” 命令更新到暂存区的内容撤出暂存区,可以指定文件
没有指定 commit ID 则默认为当前 HEAD
$ git reset [<文件路径>]
$ git reset --mixed [<文件路径>]
将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset
$ git reset --mixed
将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
相当于调用 “git reset --mixed” 命令后又做了一次 “git add”
$ git reset --soft
将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard
用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。
$ git checkout – filename
生成一个新的提交来撤销某次提交
$ git revert
重命名文件
git mv
-F:强制重命名或移动文件
-k:跳过会导致错误情况的移动或重命名操作。
-n:什么也没做,只显示会发生什么
-v:移动文件时报告文件的名称。
#重命名指定的文件或者文件夹
$ git mv [-v] [-f] [-n] [-k] <源文件/文件夹> <目标文件/文件夹>
操作标签
git tag :打印所有的标签
git tag 标签名称[] :添加轻量标签 指向提交对象的应用 可以指定之前的提交记录
git tag -a 标签名称 -m 标签描述信息 [] :添加带有描述信息的附注标签 可以指定之前的提交记录
git checkout 标签名称:切换到指定标签
git show 标签名称 :查看指定标签信息
git tag -d 标签名称:删除指定的标签
git push 远程仓库的别名 标签名称 :将指定的标签提交到远程仓库
git pish 远程仓库的别名 -tags 将本地所有的标签全部提交到远程仓库
SSH密钥
检查本地是否有SSH Key存在:ls -al ~/.ssh
在 C盘 User 自己的账户下右键 git bash here,ssh-keygen -t rsa -C 自己的邮箱签名
生成SSH Key:
将公钥复制到平台,接下来再往远程仓库push东西的时候使用SSH连接就不需要登录了。
git错误示例
1、git status(或任何其他git命令)然后会出现fatal: Not a git repository (or any of the parent directories)错误。
必须实际进入目录。比如:
$ git clone https://gitee.com/l-tinghao/git-demo.git
Cloning into 'git-demo'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 24 (delta 8), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (24/24), done.
Resolving deltas: 100% (8/8), done.$ git status
fatal: Not a git repository (or any of the parent directories): .git
$ cd git-demo/
$ git status
# On branch master
2:error: Your local changes to the following files would be overwritten by merge: 错误:您对以下文件的本地更改将被merge覆盖:
原因:出现了代码冲突,你正在编译的文件有人修改并且提交,导致二者出现冲突。例如:
$ git pull git-demo2 master
From https://gitee.com/l-tinghao/git-demo* branch master -> FETCH_HEAD
error: Your local changes to the following files would be overwritten by merge:helloGit.txt
Please commit your changes or stash them before you merge.
Aborting
Updating 45b292c..68d6fbb
解决办法:保存你的本地更改
$ git stash
Saved working directory and index state WIP on master: 45b292c Merge branch 'hot-fix'
$ git pull git-demo2 master
From https://gitee.com/l-tinghao/git-demo* branch master -> FETCH_HEAD
Updating 45b292c..68d6fbb
Fast-forwardhelloGit.txt | 3 ++-1 file changed, 2 insertions(+), 1 deletion(-)
3、合并产生冲突
原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替代我们决定使用哪一个,必须人为决定内容。
解决:编辑有冲突的内容,删除特殊符号,决定要使用的内容
特殊符号:<<<<<<<HEAD当前分支的代码======合并过来的代码>>>>>>>分支名