Git笔记

常用命令

  • 配置相关
  • git config --global user.name 'wmm':设置用户名,去掉--global则只对当前仓库有效
  • git config --global user.email 'xxx@xx.com':设置邮箱,去掉--global则只对当前仓库有效
  • git config --list:查看所有配置
  • git init:初始化一个git的本地仓库
  • 远程仓库相关
  • git clone https://gitee.com/xxx/xxx.git:检出仓库
  • git remote -v:查看远程仓库
  • git remote add origin git地址:将本地仓库与远程仓库建立链接
  • git remote rm origin:删除远程仓库
  • git remote set-url origin git地址:修改远程仓库地址
  • git pull <远程主机名> <远程分支名>:<本地分支名>
  • git pull origin master:拉取远程master分支
  • git pull origin master:brantest:将远程主机master分支拉取过来,与本地的brantest分支合并
  • git push <远程主机名> <本地分支名>:<远程分支名>
  • git push origin master:推送到远程master分支
  • git push origin test:master:提交本地test分支作为远程的master分支
  • git push origin test:test:提交本地test分支作为远程的test分支
  • 分支操作相关
  • git branch:查看本地分支
  • git branch -r:查看远程分支
  • git branch -a:查看所有分支
  • git branch dev:创建dev分支(创建后不会自动切换到新分支)
  • git checkout dev:切换到dev分支
  • git checkout -b devdev分支存在,只切换分支;不存在则创建dev分支,并立即切换到新分支
  • git branch -d dev:删除dev分支
  • git push origin dev:将新分支推送到远程(创建远程分支)
  • git push origin :heads/dev:删除远程dev分支
  • git push origin :dev:删除远程dev分支
  • git branch -vv:查看本地分支对应的远程分支
  • git branch -m oldName newName:给分支重命名
  • 文件操作相关
  • git status:查看当前状态(修改的文件等)
  • git status -s:查看修改的文件
  • git add README.md:添加指定文件到缓存区
  • git rm README.md:从缓存区删除指定文件
  • git commit -m "message":提交暂存区文件到本地仓库
  • git commit [file1] [file2]... -m "message":提交暂存区的指定文件到本地仓库
  • git commit -am "message"-a参数设置修改文件后不需要执行git add命令,直接来提交
  • git log:查看commit日志
  • git log README.md:查看特定文件或者目录的commit日志
  • git diff:查看尚未暂存的更新
  • git diff --cached:查看尚未提交的更新
  • git diff --staged:查看尚未提交的更新

备注

  • origin是为远程仓库起的名字,一般叫这个,也可以取其他的

git常用默认配置

  • git config --global core.ignorecase false:git默认不区分大小写,对大小写敏感的不友好
  • git config --global core.filemode false:设置忽略文件权限
  • git config --global core.autocrlf false:设置不自动转换换行符(默认大家都使用\n)
  • git config --global core.safecrlf true:校验混用则拒绝提交
  • git config --global pull.rebase true:pull操作默认rebase,避免出现自动merge
  • git config --global user.name "xxxx":设置姓名(使用自己的名字)
  • git config --global user.email "xxxx@xxx.com":设置邮箱(使用自己的邮箱)
  • git config --global merge.ff no:禁用fast-forward

git使用流程

简介

  • master保留最新的代码
  • 根据需求新建分支,所有开发在新分支(比如:feature/subsist),在新分支上面提交代码。
  • 需要测试时,从master分支合并最新代码到feature/subsist分支。使用feature/subsist分支代码测试
  • 测试完成后,将feature/subsist分支代码提交到正式服(上线的代码是feature/subsist分支代码)
  • 上线之后,将feature/subsist分支代码合并到master分支

以下以项目托管在GitLab上面;git客户端使用sourceTree为例,具体步骤

  • 打开SourceTree中的当前项目

  • 切换到master分支,点击【拉取】按钮拉取master最新代码

  • 点击【分支】按钮创建新分支,比如叫feature/subsist

  • 点击【推送】按钮,将新分支推送到远程仓库

  • feature/subsist分支开发,拉取、提交、推送代码

  • 开发完成后,需要到测试服测试时。先切换到master分支,拉取master分支的最新代码

  • 切换到feature/subsist分支,在本地的master分支 → 右键 →【合并masterfeature/subsist】。将master分支最新代码合并到feature/subsist分支。

  • feature/subsist分支代码发布到测试服测试

  • 测试服测试通过,需要上线时,将feature/subsist分支代码部署到正式服

  • 上线后,打开GitLab,找到对应的项目;点击xx Branches切换到分支页面

image.png

  • 点击feature/subsist分支右侧的【Merge request】按钮

image.png

  • Assignee中选择自己的账号;勾选【Delete source branch when merge request is accepted】;点击【Submit merge request】按钮

image.png

  • 如果有冲突,解决冲突;没有冲突的话,点击【Merge】按钮合并代码

  • 合并完成后,远程仓库的feature/subsist分支应该已经删除掉了。SourceTree中还没有更新

  • 打开SourceTree中的当前项目;点击【抓取】按钮,抓取远程仓库的最新分支

  • 本地分支切换到master,在feature/subsist分支上 → 右键 → 删除feature/subsist,手动删除本地的feature/subsist分支

  • 至此,所有流程结束

备注:

  • 每次拉取的时候,选项中勾选【立即提交合并的改动】、【用变基代替合并(警告:请确保您还没有推送您的变更)】这两个选项
  • 在推送到远程仓库之前一定要先拉取下代码;否则推送后就不能以后的拉取中变基了
  • 创建新分支时,勾选【检出新分支】
  • 抓取的时候,勾选【抓取所有远端更新】、【删掉在所有远端都已经不存在的跟踪(tracking)分支】

场景应用

初始化一个本地仓库,提交文件到Git远程仓库

git init git add README.md git commit -m "first commit" git remote add origin git地址 git push -u origin master

使用SSH方式拉取和提交代码

参考:git中SSH方式的使用

Git仓库完整迁移

  • 随便找个文件夹,从原地址clone一份裸版本库(克隆git的每一次提交信息):git clone --bare 旧的git地址

  • 上一步会在当前目录下生成一个xxx.git的文件夹,进入到此文件夹:cd xxx.git

  • 推送裸版本库到新的地址:git push --mirror 新的git地址

  • xxx.git文件夹没有用了,可以删除掉了

  • 迁移完成,可以使用新的git远程仓库地址clone代码了;或者切换git远程仓库地址

切换Git远程仓库地址

  • 查看当前git远程仓库地址:git remote -v

  • 方法一:修改远程仓库地址:git remote set-url origin 新的git地址

  • 方法二:先删除远程仓库地址,然后再添加

git remote rm origin git remote add origin 新的git地址
  • 查看下是不是换成新的了:git remote -v

创作不易,若本文对你有帮助,欢迎打赏支持作者!

 分享给好友: