Git命令行操作
![](https://i-blog.csdnimg.cn/blog_migrate/5cbf91d320c7cc64fa03ca357e31df3a.png)
- 设置签名
用户名:
email:
- 项目级别
git config
git config user.name Pioneer4
git config user.email electricalqzhang@gmail.com
- 系统用户级别
git config --global
git config --global user.name Pioneer4
git config --global user.email electricalqzhang@gmail.com
项目级别>系统级别
产看配置好的参数
cat .git/config
系统信息:C:\Users\zhang.gitconfig
git status
查看仓库状态
·git add·
git rm -cached [file]
版本控制
git log
最完整的形式
git log --pretty=oneline
显示hash值和注释
git log --oneline
显示hash值前7位和注释
git reflog
显示hash前几位和注释以及到当前版本的步数
git log --graph
显示版本图
版本前进后退
基于索引值
git reset --hard 局部索引值
基于^符号
git reset --hard HEAD^
后退一步
基于~符号
git reset --hard HEAD~3
后退3步
reset的三个参数对比
--soft
:仅在本地库移动指针--mixed
:本地库移动指针,并重置暂存区--hard
:本地库移动指针,重置暂存区,重置工作区
checkout
git checkout [文件名]
:删除暂存区中对应文件的修改,相当于删除变动,让该文件内容变为和上次提交时一样。git checkout .
:删除暂存区中所有的修改内容
比较文件差异
git diff [文件名]
:将工作区中的文件和暂存区进行比较git diff [本地库中的历史版本] [文件名]
:将工作区中的文件和本地库历史记录比较- 不带文件名,比较多个文件
branch分支
git branch second
git branch -v
git branch -a
查看所有分支
git checkout second
合并分支:
如果second上进行了修改,要合并到master上,需要切换到master分支git checkout master
,
然后进行merge操作git merge second
远程库github
git remote -v
查看保存的终端地址
git remote show <主机名>
命令加上主机名,可以查看该主机的详细信息
git remote rm <主机名>
命令用于删除远程主机
git remote add test1 https://github.com/Pioneer4/test1.git
添加终端地址
git remote rename <原主机名> <新主机名>
命令用于远程主机的改名
git push test1 master
推送master分支
git push <远程主机名> <本地分支名>:<远程分支名>
命令用于将本地分支的更新,推送到远程主机。
- 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
git push origin master
上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。 - 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
$ git push origin :master
# 等同于
$ git push origin --delete master
上面命令表示删除origin主机的master分支。
注意:分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
git pull <远程主机名> <远程分支名>:<本地分支名>
取回远程主机某个分支的更新,再与本地的指定分支合并
等用于
git fetch <远程主机名> <分支名>
将某个远程主机的更新,全部取回本地
git fetch origin master
取回origin主机的master分支
rebase 合并最近几次的提交记录
git rebase -i 8271f69
:合并**当前版本~8271f69之间(不包含8271f69这个版本)**的提交记录
![](https://i-blog.csdnimg.cn/blog_migrate/ccab4f6c8af4d3382eb37a24da2c29b9.png)
- 将pick改为s(squash = use commit, but meld into previous commit)
修改前:
![](https://i-blog.csdnimg.cn/blog_migrate/ccab4f6c8af4d3382eb37a24da2c29b9.png)
修改后:
![](https://i-blog.csdnimg.cn/blog_migrate/0d0f3c3e2a61a60ce5e11296acb8e0af.png)
- 添加重新合并的注释:
修改前:
![](https://i-blog.csdnimg.cn/blog_migrate/70b6a252caba4947343c705ad9e90cf2.png)
修改后:
![](https://i-blog.csdnimg.cn/blog_migrate/46c0be5f15e0cf2bd556317493e54996.png)
- 全部修改保存完成后,提交记录变为:
![](https://i-blog.csdnimg.cn/blog_migrate/db54688c59fe944c41d39e55230a41ab.png)
其它问题
git密码
# 重置
git config --system --unset credential.helper
# 设置
git config --global credential.helper store