GIT使用常见场景

一. Git基础

1.1 git的三个作用域

git config --global user.name ‘your_name’

git config --global user.email ‘you_email@163.com’

其中缺省默认代表local

git config  --local  *local只对某个仓库有作用*

git config --global  *global对当前用户所有仓库有作用*

git config --system  *system对系统所有登录的用户有效*

显示config的配置,加–list

git config --list --local
git config --list --global
git config --list --system

1.2 建Git仓库

两种场景

  1. 把已有的项目代码纳入Git管理
cd 项目所在的文件夹
git init
  1. 新建的项目直接用Git管理
cd 某个文件夹
git init your_project # 会在当前路径下创建与项目同名的文件夹
cd your_project

如果git权限为global 在此新建一个仓库并设置权限为local 那么最后生效权限为local

放入暂存区

git add 放入暂存区的文件1 文件2
git add -u # 全部文件

放入版本历史

git commit -m'提交信息'

1.3 查看版本历史

1. git log                         # 查看当前分支的全部提交
2. git log --oneline        # 简介查看提交信息
3. git log -n2 --oneline # 查看最近的两个commit
4. git log --all                   # 查看所有分支的log
5. git log --all --graph      # 图形化的显示所有分支
6. git log --oneline --all
7. git log --oneline --all -n4
8. git log --oneline --all -n4 --graph

git branch -v 查看本地有多少分支

git checkout -b temp 创建分支

1.4 Git 图形管理界面

gitk

1.5 .git目录

.git文件目录

•	COMMIT_EDITMSG
•	config 当前 git 的配置文件
•	description (仓库的描述信息文件)
•	HEAD (指向当前所在的分支),例如当前在 develop 分支,实际指向地址是 refs/heads/develop
•	hooks [文件夹]
•	index
•	info [文件夹]
•	logs [文件夹]
•	objects [文件夹] (存放所有的 git 对象,对象哈希值前 2 位作为文件夹名称,后 38 位作为对象文件名, 可通过 git cat-file -p 命令,拼接文件夹名称+文件名查看)
•	ORIG_HEAD
•	refs [文件夹] 
      •	heads (存放当前项目的所有分支)
      •	tags (存放的当前项目的所有标签,又叫做里程碑)

•	cat 命令, 功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容
•	ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)
•	git cat-file -t 命令 , 查看 git 对象的类型
•	git cat-file -p 命令, 查看 git 对象的内容
•	git cat-file -s 命令, 查看 git 对象的大小

1.6 分离头指针

detached HEAD —这种代表切换了一个未知的分支,这种状态commit 后不会在git 中显示,日后git会自动清除,目前可以通过git branch new-branch-name 原先分支名 来保存commit

基于某一个分支创建新分支git checkout -b new-branch-name basic-branch-name

git diff HEAD HEAD^1 HEAD^1 == HEAD~1 ``HEAD11 == HEAD~2`比较HEAD与其父亲提交的比较 ^1 代表父亲, 11 代表爷爷

1.7 修改本地git username 与email

git config --add --local user.name 'git2021'
git config --add --local user.email 'git2021@163.com'
查看修改:git config --local -l
修改git文件 vi .git/config

二. 个人使用Git常见场景

2.1 查看分支

git branch -av

2.2 怎么删除不需要的分支

git branch -d branch-name如果该分支还没有merge 那么该命令无效,想删除可以使用git branch -D branch-name

2.3 如何修改最新commit message

git commit --amend

2.4如何修改旧commit message

git rebase -i father-commmitID

注意变基是在单独开发的项目中实现,不可在团队开发中使用

2.5 把连续的commit 合并一个

git rebase -i father-commitID 进去后将后几个命令改成s

2.6 把不连续的commit合并成一个

git rebase -i father-commitID进去后,把需要合并的与第一个放在一起

2.7 暂存区和HEAD文件作比较

git diff --cached

2.8 工作区与暂存区文件做比较

git diff 工作区与暂存区所有文件的比较

git diff filename某个文件的工作区与暂存区的比较

2.9 让暂存区恢复到和HEAD一样

git reset HEAD

2.10 让工作区恢复到和暂存区一样

git checkout -- filename

2.11 让暂存区部分文件恢复到和HEAD一样

git reset HEAD -- filename1 filename2

2.12 消除指定的几次提交(暂存区与工作区回到某一个位置)

git reset --hard commitID

2.13 比较不同分支,提交的文件差异化展示

git diff branch-name1 branch-name2 -- filename

git diff commit-ID1 commit-ID2 -- filename

2.14 删除文件的方法

git rm filename

2.15 开发中临时加塞紧急任务

git stash 任务放到一个栈里面

git stash list 查询任务

git stash apply 将栈顶的任务复制拿出来,可以无限使用

git stash pop 将栈顶任务弹出来,智能使用一次

2.16 如何指定git不管理的文件

vi .gitignore 里面放上不需要管理的文件,注意文件夹与文件的区别,如果放入doc,那么,doc以及doc下的文件夹都将被忽略,如果放入的是doc/那么对于doc本身是不会忽略的。

2.17 如何将git仓库备份到本地

在这里插入图片描述

  1. 哑协议
    哑协议没有进度条
    git clone --bare /Users/git_learning/.git yaxieyi.git
  2. 智能协议
    智能协议有进度条,传输速度快
    git clone --bare filr:///Users/git_learning/.git zhinneg.git

–bare 代表不加入工作区,仅仅代表备份区域

在这里插入图片描述

2.18 如何将本地仓库备份到远端

首先需要在远端新建一个仓库
git remote add zhinneg file:///Users/zhineng/.git
然后在本地
git push --set -upstream 仓库名 分支名

2.19 git clone 时重名如何处理

git clone 地址 name2

三. 把本地仓库同步到GitHub

  1. 查看远端仓库
    git remote -v
  2. 拉取远端仓库
    git remote add github ssh协议下载
    git remote -v 继续查看本地仓库

四. 多人单分支集成协作常见场景

4.1 更新本地分支与远端分支一样(本地无该分支)

git checkout --track origin/branch-name

注意该命令会让本地分支与远端分支一样的名字,如果不想一个名字,那么使用

git checkout -b new_branch branch-name

如果报错显示fatal: Cannot update paths and switch to branch 'develop' at the same time. Did you intend to checkout 'origin/develop' which can not be resolved as commit?
那么

  1. git remote -v
  2. git fetch origin
  3. 然后再次执行git checkout --track origin/branch-name

如果想要依据一个远端分支创建本地分支
git checkout -b branch-name origin/remote-branch-name

4.2 更新本地分支与远端分支一样(本地有该分支)

git push --set-upstream origin branch_name远端创建一个分支并跟踪

4.3 不同人修改不同文件如何处理(相同分支)

  1. 首先看下远端分支是否有变化git fetch github
  2. 然后merge 然后再push: git merge branch-name
  3. git push github

4.4 不同人修改同文件的不同区域如何处理

git pull或者git fetch + git merge remote-branch-name

4.5 不不同人修改同一文件的同一个区域如何处理

首先第一个人写完代码push上去后,第二个人也改了同一个地方,想要直接push,此时会报错,于是他选择git pull 但是在Auto-merge的阶段,报错,这时候需要与提交者商量然后手动修改冲突。如果修改完后不想要:git merge --abort。修改完后想要就可提交git commit -am 'commit message'. 最后git push github

4.6 同时变更了文件名跟文件的内容

直接 git pull

4.7 多人修改同一文件的文件名

  1. 查看文件内容是否有差异 git diff file1 file2 只是文件名称冲突可以选择下面的方法
  2. 删除原先的文件名称
    git rm file-name
  3. git add file1
  4. git status
  5. git rm file2
  6. git status
  7. commitgit commit -am 'commit message'
  8. git status
  9. 最后git push
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值