微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GIT 使用总结

git 工作流程

  • 克隆 git 资源作为工作目录
  • 在克隆的资源上进行添加修改
  • 如果别人修改了资源你可以进行更新
  • 在提交之前查看修改内容
  • 提交修改
  • 修改完成之后可以进行撤回并再次提交

    git 流程

基本概念

  • 工作区: 在自己电脑上可以看到的目录
  • 暂存区: stage 或 index, 一般指存放在 .git 目录下的 index 文件,所以我们也把暂存区的内容叫做索引
  • 版本库: 工作区有一个 .git, 这个不算工作区而是 Git 版本库

命令介绍

git init: 初始化一个 git 仓库, 很多命令都需要在仓库中运行,所以在最开始一定要进行仓库初始化

git init newrep: 使用指定目录作为 Git 仓库, 此命令后不会出现 .git 目录,而是使用 newrepo 来替代了

git add: 添加到暂存区

git add \*.c: 将 .c 结尾的进行暂存

git status: 查看当前仓库状态, 显示所有变更文件

git diff: 比较文件不同, 即暂存区和工作区的差异

  • --cached: 查看已缓存的改动,已经add或者commit的
  • --stat: 显示摘要信息
git diff HEAD: 查看已经缓存的和未缓存的改动
git diff v1.0: 查看v1.0 之后改变的内容

git commit: 将暂存区内容添加仓库

git commit -m '初始化项目版本': 对暂存的内容进行提交
git commit -a: 为任何有修改的地方进行 add 操作然后进行commit 省略了 add 操作

如果没有编写-m 中的提示信息,那么将会认打开vim 编辑器进行编写提交信息

git reset: 回退版本

  • --soft: 指定回退版本
  • --hard: 撤销所有未提交的内容
git reset HEAD^: 回退所有内容到上一个版本
git reset HEAD^ app.py: 回退 app.py 文件的版本到上一个版本
git reset 052e: 回退到指定版本
git reset --soft HEAD: 回退到某个版本
git reset --soft HEAD~3: 回退上上上一个版本
git reset --hard HEAD: 撤销所有未提交的内容
git reset --hard origin/master: 将本地状态退回到和远程一样
git reset HEAD -- hello.py: 如果hello.py 已经add 添加到缓存区,这里可以取消缓存
git reset HEAD: 如果已经有缓存可以取消缓存
	HEAD 表示当前版本
	HEAD^ 上一个版本
	HEAD^^ 上上一个版本
	HEAD^^^ 上上上一个版本
	HEAD~0 表示当前版本
	HEAD~1 上一个版本
	HEAD^2 上上一个版本
	HEAD^3 上上上一个版本
	以此类推...

git clone: 将项目从网络拉取到本地

git clone <repo>: 将项目从网络拉取到本地
git clone <repo> <directory>: 将项目从网络拉取到本地指定目录

git config: 显示当前 git 配置

  • --list: 查看当前的所有 git 配置信息
  • -e: 编辑配置文件
git config --list: 查看当前 git 配置信息
git config -e: 编辑当前仓库 git 中的配置文件,只针对当前仓库
git config -e --global: 编辑系统上所有仓库配置文件
git config --global user.name "zhang.mr": 修改提交代码用户信息

git rm: 删除工作区文件

git rm <file>: 将文件从工作区和暂存区删除
git rm -f <file>: 可以删除暂存区的内容, 强制删除
git rm --cached <file>: 只是从暂存区删除
git rm -r *: 递归删除所有文件

git rm命令认会将文件从缓存区和本地同时删除,如果工作目录仍需文件需要加上 --cached

git mv: 移动或重命名工作区文件

git mv README README.md: 将 README 修改为 README.md

git remote: 管理远程仓库

  • -v: 显示所有的远程仓库
git remote: 显示当前的远程仓库
git remote -v:显示所有的远程仓库的地址
git remote show [remote]: 显示某个远程仓库的信息, remote 为仓库的完整地址(https://github.com/.....)
git remote add [shortname] [url]: 添加远程版本库
git remote add origin git@github.com:tianqixin/runoob-git-test.git: 提交到 github 上
git remote rm origin: 删除远程为 origin 的远端

如果你的项目是从远程克隆的,git 会命名 origin 自动作为你的远程仓库

git fetch: 从远程获取代码库, 需要用户同意

git fetch origin: 从远程库不同的内容(别人提交的内容)拉下来

将你当前与远程仓库同步, 提取本地没有的数据,可以将它合并到当前分支,与其他分支做比较差异

git merge [alias]/[branch]: 将远程分支和本地分支合并

git fetch origin: 拉取远程分支

git fetch master/master: 将拉取的远程的 master 和本地的 master 分支合并

git pull: 从远程将代码拉取合并到本地

git pull <远程主机名> <远程分支名>:<本地分支名>
git pull origin master:brantest: 将远程主机 origin 的 master 分支拉取, 与本地 brantest 分支合并
git pull origin master: 远程分支与当前分支合并

git pull 就是先执行 git fetch 再执行 git merge 这样可能会出现一些问题,建议使用git fetch

git push: 将本地分支上传到远程并合并

  • -f(--force): 强制推送
  • -d(--delete): 删除分支
git push <远程主机名> <本地分支名>:<远程分支名>: 基本格式
git push <远程主机\> <本地分支名>: 本地分支和远程分支相同的提交
git push --force origin master: 版本差异强制推送
git push origin --delete master: 删除主机分支

git stach: 暂存

git stash save "save message": 执行存储时候添加备注
git stash list: 查看stash了哪些存储
git stash show: 显示做了哪些改动
git stash pop: 命令恢复之前缓存的工作目录
git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
git stash clear: 删除所有缓存的stash

分支管理

git branch: 列出分支

  • -d 删除分支
  • --set-upstream: 设置本地分支与远程分支关联
git branch <branchname>: 创建分支
git branch: 列出分支
git branch -d <branchname>: 删除分支
git push --set-upstream origin branch_name: 将本地的 branch_name 和远程的 branch_name 关联, 如果远程不存在那就进行创建
git branch --set-upstream-to=origin/remote_branch your_branch: 将本地和远程关联, origin/remote_branch是你本地分支对应的远程分, your_branch 是你当前的本地分

git checkout <branchname>: 切换分支

  • -b: 创建新的分支并立即切换到它
git checkout branchname: 切换分支到你的 "branchname" 上

当你切换分支, git 会用该分支最后提交的快照替换你的工作内容

多分支不需要有多目录

git merge: 将多次合并的到统一分支

git merge newtest: 合并 newtest 到主分支, newtest 中的分支将会被删除

合并缓存如果发生冲突需要手动去修改

合并分支是切换到主分支然后合并子分支的内容

合并冲突的时候手动解决冲突之后使用 git add 告诉git 冲突已经解决,必须要将他们写入缓存区

git rebase: 把一个分支修改合并到当前分支

git rebase -i HEAD~2: 合并提交 2 代表两次
git rebase master: 最新的分支同步到本地

git checkout master
git pull
git checkout local
git rebase -i HEAD~2 //合并提交 --- 2表示合并两个
git rebase master---->解决冲突--->git rebase --continue
git checkout master
git merge local
git push

查看提交历史

git log: 查看历史提交记录

  • --oneline: 查看简介版本
  • -p: 根据次数查看最近提交的记录
  • --decorate: 查看标签(版本)信息
  • --reverse: 逆向显示
  • --author: 指定用户查看提交记录
  • --before: 只看这之前的提交
  • --after: 只看这之后的提交
  • --grep: 根据提交注释过来吧提交记录
  • --graph: 查看历史中什么时候出现了分支,合并
git log --oneline: 查看历史记录简洁版本
git log -p -2: 查看最近提交的两次详细记录
git log --reverse --oneline: 逆向显示所有日志
git log --author=Linus --oneline -5: 简洁显示五条 Linus 提交的记录
git log --oneline --before={3.weeks.ago} --after={2021-04-18} --no-merges: 三周前并且在四月十八之后的提交, 并且隐藏合并提交
git log --oneline erlang ^master: 只看 erlang 分支不在 master 中的提交
git log --grep="项目": 根据提交记录中出现 "项目" 字眼的进行筛选

git blame <file>: 以列表的形式查看指定文件历史修改记录

git blame README: 以列表的形式显示 README 的提交记录

标签

git tag

git tag -a v1.0: 为项目添加 1.0 的标签版本
git tag -a v0.9 558151a: 给 558151a 这一次追加标签

添加完之后,可以使用 git log --oneline --decorate --graph 查看标签信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐