git常用操作详细说明

初级的就不说了,下面记录一些常用且稍微高级点的操作

git的管理流程

工作区 ——> git add ——> Index[索引][暂存区] ——> git commit ——> HEAD[快照]

当执行git add 后其实就是将更改的文件放入到暂存区中,当执行git commit时就是将暂存区的内容提交到当前分支

  • HEAD快照是保存你最后一次commit的内容
  • git push 是将快照区的内容push 上去

git常用操作

log常用操作

# 图形化显示log日志
gitk  --all
# 简洁的log 日志
git log --oneline 
# 查看所有log
git log --all 
# 显示最近4个提交
git log -n4 
#  显示变更信息
git log --graph

查看提交了多少行代码

# 查看提交了多少行代码
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done

简洁明了的log

# 配置git log
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
# 使用
git lg

删除除dev和master以外的所有分支

git branch | grep -v "dev\|master" | xargs git branch -D

查看暂存区与HEAD中的差别

git diff --cached 

1. 关联

  • 1.1 关联仓库

git remote add origin 仓库地址

你可以同时关联其他的仓库(也包括gitee和gitlab)

git remote add origin-2 仓库地址

这样你push的时候

git push origin-2 master

2. 分支

2.1 只创建一个分支
git branch fix-1
2.2 创建分支并切换此分支
git checkout -b feat-1
2.3 切换分支
git checkout master
2.4 查看所有分支
git branch -v
2.5 删除分支
git branch -d feat-1
2.6 删除除master以外的所有分支
git branch | grep -v "master" | xargs git branch -D

3. 临时暂存区

3.1 将更改放到临时暂存区
git stash
3.2 将更改从临时暂存区取出
git stash pop
3.3 查看临时暂存区内容
git stash list
3.4 恢复指定临时暂存区
git stash apply stash@{id}

4. 合并冲突

1.更新代码 git fetch
2.合并分支 git rebase origin/develop //将develop分支与此分支合并
3.会进入合并分支,当有CONFLICT:Merge file.txt, 手动去修改此文件
4.修改之后添加冲突文件 git add file.txt
5.继续合并 git rebase --continue, 如果有错误继续 执行 3 4 步骤
6.当分支名变成你的分支名则表示合并完成
7.查看当前状态 git status
8.如果状态都为已暂存,则可以执行 git push origin 分支名 进行提交

push之前忘记git pull

出现

! [rejected]  master -> master (fetch first)

可以使用下面这个命令

git pull --rebase origin master

这个命令是先取消commit记录,并且把它们临时 保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),之后同步远程库到本地,最后合并补丁到本地库之中。

然后再直接进行push就可以了

5. 回滚

5.1 撤销掉本地修改(还没被git add)
# 撤销某具体文件
git checkout fileName
# 撤销所有
git checkout .
5.2 撤销上一次git add的内容
# 撤销某个文件
git reset HEAD fileName
# 撤销所有
git reset HEAD .

只撤销某个文件

git reset HEAD 文件路径/文件名
5.3 撤销上一次git commit
  1. 先查看日志,记录commit id
git log
  1. 恢复到指定commit
git reset commit_id
# 备用
git reset --hard  commit_id
5.4 修改上一次commit
git commit --amend
5.5 撤销git commit 和 git add 以及 工作区更新的内容
git reset --hard HEAD~ 
5.5 删除远程分支中某个文件

这个只是让此文件不受版本控制了,而本地是不会删除它的

git rm -r 文件路径/文件名

git add .
git commit -m "delete the file"
git push origin master
5.6 回滚到指定版本
  1. 查看日志拿到commitid
git log
  1. 恢复到指定版本
git reset --hard commit_id

6.开源协作

6.1 fork别人代码

此时你的仓库就会有一个此项目的副本

6.2 克隆代码
git clone *****.git
6.3 添加别人远程仓库地址

为了可以随时更新代码,这里最好将别人仓库的地址也新增一下

git remote add origin2 *****.git

拉取别人最新代码

git pull origin2 master
6.4 提交

添加新的功能之后开始提交代码,代码是提交到你的仓库中

git push origin master
6.5 提交PR

去你GitHub中此项目然后会有一个New pull Request


点击它,然后向别人的项目提交PR

7. hotfix使用

紧急bug,直接提交进master 分支

  • 远程仓库 remote
  • 自己仓库 origin
  1. gitlab远程仓库中基于master新建一个hotfix分支
  2. 本地切到master分支,merge/rebase一下远程分支的master
# rebase
git fetch remote
git rebase remote master

# merge
git pull remote master
  1. 基于远程master分支创建新分支
git checkout -b hotfix remote/master
  1. 提交到自己仓库
git add .
git commit 
git push origin hotfix
  1. 提交MR到远程仓库的hotfix分支,并Merge
  2. gitlab远程仓库中点击Repository/Commits,找到刚才提交的commit
  3. 点击刚才提交的commit,选择Options——>cherry-pick——>master, 不勾选 Start a new merge request with these changes

8. 配置多账号

在 ~/.ssh 目录下新创建一个 config 文件,配置下面多个账号内容

# github
host github
    hostname github.com
    Port 22
    User pibigstar
    IdentityFile ~/.ssh/id_rsa
# gitlab
host gitlab.com
    hostname gitlab.com
    Port 22
    User gitlab
    IdentityFile ~/.ssh/id_rsa_gitlab
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值