工作超级实用的git命令

1.首次使用git

首次使用git,需要配置User信息

 $ git config --global user.name "John Doe"
 $ git config --global user.email "johndoe@example.com"
 
 git config --local : 只对某个仓库有效
 git config --global: 对当前用户所有仓库有效
 git config --system: 对系统所有登录的用户有效
 
 git config --list命令列出Git可以找到的所有设置

2.将代码加入git管理

1.将已有代码加入git管理

 1、cd  已有项目文件夹下
 2、git init 

2.新建项目用git管理

 1、cd 某个文件夹下
 2、git init your project 会在当前路径下创建项目名称同名的文件夹

3.git 重命名

 git mv  file_from(源文件名)  file_to(新文件名)

4. 查看版本演练历史

 1、git log  查看提交历史
 2、git log --all  --graph --oneline -n4:查看所有分支  (-n4:最近4次提交)

5. 探究.git目录

 |-- HEAD         # 这个git项目当前处在哪个分支里,最终落脚于某个commit
 |-- config       # 项目的配置信息,git config命令会改动它
 |-- description  # 项目的描述信息
 |-- hooks/       # 系统默认钩子脚本目录
 |-- index        # 索引文件,暂存区,一个二进制文件
 |-- logs/        # 各个refs的历史信息
 |-- objects/     # Git本地仓库的所有对象 (commits, trees, blobs, tags)
 |— refs/        # 标识你项目里的每个分支指向了哪个提交(commit)

6. git查看文件类型和文件内容

 查看文件类型:git cat-file -t  123456(commit_id)
 查看文件内容:git cat-file -p 123456(commit_id)

 tree:文件夹 
 blob:文件

commit、tree、blob 图

7.git 分离头指针

 git checkout <commit_id>

分离头指针的本质
是工作在没有分支的情况下,如果这个时候切换了分支,在这期间做的commit和变更操作因为没有branch挂钩,所以很容易被当做垃圾处理掉

使用场景:做尝试性变更
处于分离头指针装状态修改commit后,切换回master分支,git 会提示是否保存分离头指针做的修改;保存则按照提示命令新建分支保存 ,创建一个新的分支,这个分支是基于头指针分离下修改提交的commit_id创建的

 git branch <新分支名> commit_id (commit_id是在分离头指针状态下提交后的commit_id)

8. 切换分支

 1、git checkout 分支名
 2、git checkout 分支名1  分支名2  (基于分支名2 创建新分支1)

9. 比较2个commit的差异

 1、git diff HEAD HEAD~1 :比较HEADHEAD祖先的差异(~2:祖先的祖先)
 2、git diff commit_id1  commit_id2 

10. 查看所有分支

 git branch -av

11. 删除多余分支

 git banch -d/-D  分支名

12.对最近一次提交commit message 做变更

 git  commit --amend

13. 修改老旧的commit message 信息做变更

 git rebase -i+修改commit的父节点
 交互页:
 +reword  eg: reword commit_id message

修改老旧的commit message (要修改的comit后子commit的id号会更新)

14.把多个连续的commit 合并成一个commit

  git rebase -i+修改commit的父节点 (要基于某个pick的commit进行squash)

pick 的意思是要会执行这个 commit
squash 的意思是这个 commit 会被合并到前一个commit
eg: pick commit_id add a
sqush commit_id add b (该提交会合并到pick 中)

15.把几个不连续的commit整理为1个commit

 git rebase -i+修改commit的父节点 ,然后将不连续的commit修改位置,基于某个pick,修改其他commit 为squash

16. 比较暂存区和HEAD所含文件差异

 git diff --cached

17.比较工作区和暂存区文件差异

 1、git diff  
 2、git diff  文件名1  文件名2   基于文件查看工作区暂存区差异(多个文件空格隔开)

18. 如何让暂存区恢复成和HEAD的一致

 1、git reset HEAD   工作区不会被更新,只会将暂存区恢复成HEAD
 2、git reset --hard HEAD   会将工作区和暂存区恢复成HEAD

19.如何让工作区恢复成和暂存区一样

 git checkout  --file  (file表示要恢复的文件)

20.如何取消暂存区部分文件的更改

 git reset HEAD -- file (file表示要恢复的文件)  

21. 消除最近几次的提交

 git reset --hard commit_id (commit_id 之后的提交将会丢弃,工作区、暂存区恢复成commit_id时内容)

22.查看不同提交时的指定文件或分支的差异

 1、git diff 分支1  分支2  查看2个分支的差异
 2、git diff 分支1  分支2  --index.html  查看2个分支index.html 的差异
 3、git diff commit_id1  commit_id2  --index.html  查看2个commit中index.html 的差异

23.删除文件

 git rm -rf 要删除的文件

24.开发中临时加塞紧急任务如何处理

 git stash (git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中)

git stash apply: 将数据展示出来,stash 堆栈中数据还在不会被删除。
git stash pop: 将数据展示出来,stash 堆栈中数据被删除。

25. 如何将git仓库备份到本地

常用协议Value
本地协议1、path/to/repo.git (哑协议本地协议) 2、file:///path/to/repo.git (智能协议)
http/https协议http://git-server/repo.git (智能协议)
ssh协议user@git-server com: path/to/repo.git(智能协议)

哑协议与智能协议区别
1、哑协议传输进度不可见;智能协议传输可见
2、传输速度:智能协议比哑协议传输速度快

 备份步骤:
 1、 克隆不带工作区的备份裸仓库(备份) :git clone --bare  仓库地址
 2、 工作区的变更同步备份:git push <远程主机名><本地分支名>:<远程分支名>

26.本地仓库同步到远端

  1. 远端仓库有的文件,本地仓库没有
 1、git fetch <远程仓库名> <远程分支名>  默认获取获取远端仓库全部更新,可加分支名获取对应分支更新(此时本地会有一棵独立的树)
   eg: git fetch origin master 获取origin仓库master分支更新

 2、git merge --allow-unrelated-histories <远端分支名>  在当前分支下合并分支(对两个不相干的树进行merge)

 3、git push <远程主机名> <本地分支名>:<远程分支名> (--all  全部)将本地的分支推送到远程主机的远程分支,分支不存在则会新建

    ps: git push <远程仓库> : <远程分支名>  删除远程仓库的远程分支(push了空的分支上去,相当于删除远程分支)
  1. 远端仓库有的文件,本地仓库也有,直接push

27. 同一分支不同人修改了不同文件如何处理

 1、git fetch  <远程仓库名> <远程分支名>
 2、git merge  远端分支
 3、git push

28. 不同人修改了同文件的不同区域如何处理

 方法一:
 1. git fetch <远程仓库名> <远程分支名>
 2. git merge 远端分支
 3. git push 
 
 方法二:
 1. git  pull  = git fetch  + git merge   ,然后git push
   git  pull <远程主机名> <远程分支名>:<本地分支名> 取回远程主机某个分支到的更新到本地分支
   eg:  git pull origin next:master 
   如果远程分支是与当前分支合并,则冒号后面的部分可以省略
   eg:  git pull origin next
 2. git push 

29. 不同人修改了同文件的同一区域如何处理

 1、 git pull 分支到本地(会提示冲突)
 2、打开修改的文件,查看冲突内容进行修改
 3、git commit / git merge --abort(退出合并分支)
 4、git push

30. 同时变更了文件名和文件内容如何处理

场景:用户A把文件名变更,用户B在原文件名下做了变更,此时push至远端失败

 1. git pull (git自动识别文件名变更,更新文件名)
 2. git push 这时候不会报错

31. 把同一文件改成了不同文件名如何处理

  1、git pull (git提示:1. 删除原文件  2. 生成2个同文件名但相同内容的文件)
  2、git rm + 原文件 
  3、git rm +已修改文件名的文件
  4、git add 最终确认的文件名的文件
  5、git commit 
  6、git push 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值