git使用总结

279 阅读5分钟

image.png

git分布式版本管理工具

在工作当中,多人协作开发的时候,都会用到版本管理工具,git就是其中一种,掌握一些基本的git命令操作可以让我们在多人协作开发中游刃有余,当然现在也有很多ui界面的git工具,如vscode、sourcetree,但是笔者习惯了同命令去造作,也不想接触新的东西

image.png

那么我就总结一下工作中常用到的git命令,也就当给自己记个笔记啦~~~~~

git如何工作

首先应该了解git的三个区 四种状态

image.png

区域

  • 工作区
  • 暂存区
  • 本地仓库

状态

  • 未追踪(Untracked)
  • 已修改(modified)
  • 已暂存(staged)
  • 已提交(committed)

配置

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改

git config user.name "你的姓名"
git config user.email 你的邮箱

通过--global可以全局配置

git config --global user.name "你的姓名"
git config --global user.email 你的邮箱

查看配置

# 打印所有config
git config --list
# 打印指定config
git config user.name

初始化仓库

echo "md" > README.md
git init
git add .
git commit -m 'first commit'
git add remote origin .....
git push -u origin master

git常用场景使用命令

查看工作区文件状态

# 查看当前修改的文件状态 红色:工作区 绿色:暂存区 没有:本地仓库
git status

添加工作区文件到暂存区

git add 1.txt
# 添加多个文件
git add 2.txt 3.txt
# 添加整个目录
git add ./a
# 添加多个目录
git add ./b ./c
# 添加所有文件
git add .

创建版本

git commit -m 备注信息

修复提交

修复(追加)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中

git commit --amend -m 提交

查看提交日志

# 完整格式
git log
# 简要格式(单行)
git log --oneline

删除

# 从 git 仓库与工作区中删除指定文件
git rm 文件
# 只删除 git 仓库中的文件
git rm --cached 文件
# rm 以后,需要 commit 这次操作,否则 rm 将保留在暂存区
git commit -m 修正

从暂存区中撤销到工作区

# 从暂存区中撤销一个指定文件
git reset HEAD 文件名称
# 从暂存区中撤销所有文件
git reset HEAD .

# 回退到指定的 commitID 版本
git reset --hard commitID
# 推送到远程
git push -f -u origin 分支名称
# git log指定的 commitID 版本之后的记录消失 git reflog查看所有记录
git reflog

git revert -n commitId..commitId(不包括起始)

修改的文件从工作区撤销

git checkout .

比较文件

# 比较 工作区和暂存区
git diff 文件 
# 比较 暂存区和仓库
git diff --cached [commitId] 文件
# 比较 工作区和仓库
git diff commitId filename
# 比较 仓库不同版本
git diff commitId1 commitId2

分支情况

# 查看分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支
git branch -a
# 创建分支
git branch 分支名称
# 切换分支
git checkout 分支名称
# 也可以使用 checkout -b 来新建分支
git checkout -b 分支名称

# 合并分支
# B 合并到 A,需要切换到 A 分支
git merge 分支名称
# 查看已经合并的分支
git branch --merged
# 查看未合并的分支
git branch --no-merged

# 删除分支
# 如果分支为未合并状态,则不允许删除
git branch -d 分支名称
# 强制删除
git branch -D 分支名称
# 删除远程分支
git push origin --delete 分支名称

标签

# 新建tag
git tag -a v1.0.0 HEAD/commitId
# 查看tag
git tag

多人协同开发

上面的操作大部分都是在git本地仓库,也就是个人独立开发,在多人协作开发的过程种,需要将文件进行共享,那么git远程仓库就上线了,svn是一种集中式版本管理工具(中心化),带来一个很大的问题,那就是容灾问题,服务器挂掉了就会不能使用,git是分布式版本管理工具(去中心化),人人都是中心。

同步本地仓库到远程

git push -u origin master
# -u 简化后续操作
git push origin master

远程分支

# 远程创建好分支然后拉取到本地 git fetch拉下远程分支
git fetch
git checkout 分支名称  # --no-merge
git checkout -b [本地分支名称] origin/[远程分支名称]  # --merge

# 删除本地分支
git branch -d [本地分支名称]
# 删除远程分支
git push origin --delete [远程分支名称]
# or
git push origin :[远程分支名称]

# 提交到远程(分支)
git push origin [本地分支名称]:[远程分支名称]

# 拉取远程分支到本地
git pull origin [远程分支名称]:[本地分支名称]

# 查看远程仓库
git remote
git remote -v
git remote show origin
git remote add origin ...
# 修改关联的远程仓库
git remote set-url origin ...
# or
# 删除关联的远程仓库
git remote remove <name>
# 添加新的远程仓库关联
git remote add origin ...

# 查看本地分支
git branch

# 查看远程分支
git branch -r

# 查看所有分支
git branch -a


# 设置默认提交分支
git branch --set-upstream-to=origin/[远程分支名称] [本地分支名称]

linux命令

cd xxx[路径地址]
ls -l/-a 查看当前目录结构
clear
mkdir 创建文件夹
touch 创建空的文件
vi 查看文件
   通过i插入模式
    ESC + :wq, 退出保存
    ESC + :q!, 强制退出不保存
echo xxx>xxx.txt 向指定的文件(没有就新建)输入内容(覆盖内容) 
cat 查看文件
cp 拷贝
rm 删除文件 -r(递归删除) -f(强制删除)