Git基本操作

336 阅读6分钟

1.学习教程                   github.com/geeeeeeeeek…

2.基本概念

  • git:分布式版本管理工具
  • github:一个网站,大型代码托管平台
  • gitlab:基于git的代码管理软件
  • code review:代码评审 Code Review主要分两类:一个就是技术专家人工review;第二个就是借助程序自动检查代码。在 GitHub上大家可以到Market Place找找质量相关的app,比如代码静态检查等app,让它在pull request的时候发挥作用,帮助团队做review
  • 集成分支:一般是master分支
  • pull requests:是从自己的分支合并代码到集成分支
  • release项目的发布
  • jenkins的使用,相当于redis,需要自己搭建本地服务进行管理使用
  • 暂存区,不是正式提交

3.github开源项目搜索技巧

  • Advanced search
  • 关键词 in:readme stars:>1000

4.git的安装和配置

  • 安装: git-scm.com/book/en/v2/…
  • 配置用户名和密码: git config --global user,name 'user.name'/ git config --global user.email 'user.email'
  • 查看配置:git config --global --list

5.git的基本命令

  • 1.已有项目需要纳入git管理--cd 项目所有文件夹:git init
  • 2.新建项目进行git管理 -- cd 某个文件夹/git init 项目名/cd 项目名
  • 3.git add 文件名---将文件提交到暂存区
  • 4.git commit -m "进行变更说明"
  • 5.git status/git log
  • 6.git add -u表示已经被git跟踪的更改可以一下子全部放在暂存区提交
  • 7.git add -u:将文件的修改、文件的删除,添加到暂存区。 git add .:将文件的修改,文件的新建,添加到暂存区。 git add -A:将文件的修改,文件的删除,文件的新建,添加到暂存区。 工作中一般是用到 git add . 或者 git add -A, git add -A相对于git add -u命令的优点 : 可以提交所有被删除、被替换、被修改和新增的文件到数据暂存区,而git add -u 只能操作跟踪过的文件 git add -A 等同于git add -all
  1. .git文件内容:HEAD:表示当前工作的分支config:配置文件,local用户名 refs/heads:存放分支
  2. head会指定到某一个commit,包括指向新得分支得commit 10.git diff head head^ 当前head和上一次head的比较 11.指定不需要用git管理的文件----在仓库中创建.gitignore文件

6.文件重命名

  • 1.原来的做法,首先工作区重命名,然后提交暂存区,删除暂存区原来的文件git rm 文件名
  • 2.git reset --hard 暂存区工作目录所有的变更将会清除
  • 3.直接使用git mv readme readme.md

7.日志操作

  • 1.git log -n4 --oneline最近4次操作
  • 2.git log --oneline --all 所有的
  • 3.git log --oneline --all --graph 图形化
  • 4.本节的一些演示命令总结 • git log --all 查看所有分支的历史 • git log --all --graph 查看图形化的 log 地址 • git log --oneline 查看单行的简洁历史。 • git log --oneline -n4 查看最近的四条简洁历史。 • git log --oneline --all -n4 --graph 查看所有分支最近 4 条单行的图形化历史。 • git help --web log 跳转到git log 的帮助文档网页

8.分支管理

  • 1.git branch -v 查看版本分支
  • 2.git branch -av 查看包括远程分支
  • 3.git checkout 分支名:切换分支
  • 4.创建新分支:git checkout -b 分支名
  • 5.切换分支:git checkout master 查看全部分支:git branch -av 删除分支:git branch -d 分支名 (-D:强制删除) 6.分支的作用:前端和后台分为不同的分支 7.图形化管理 gitk ---author和committer不同之处在于:从master复制到tmp分支,会保留master的作者

9.提交修改

  • 1.针对最后一次的提交修改message ----- git commit --amend
  • 2.针对老旧的commit的message进行修改------ git rebase -i 要修改父节点的id

10.暂存区/工作区/head

  • 1.暂存区和head比较:git diff --cached
  • 2.工作区和暂存区比较:git diff 查看所有文件的差别 /git diff --文件名 查看指定文件 工作区和暂存区的差别
  • 3.暂存区覆盖工作区的修改----暂存区的内容都不要:git reset HEAD
  • 4.暂存区覆盖工作区的修改--git checkout
  • 5.取消暂存区部分文件的更改--git reset HEAD --文件名
  • 6.删除最近几次提交 --- git reset--hard hash值(hash值是要删除提交上一次的hash值)

11.github的使用

  • 1.创建分支,修改内容,提交请求,合并分支
  • 2.公私钥的创建--查看有没有设置公私钥-- ls -al ~/.ssh
  • 3.在本地设置密钥:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • 4.公钥:~/.ssh/id_rsa.pub ---私钥:~/.ssh/id_rsa
  • 5.远端站点---git remote add github(站点名) github.com/git201909/g…
  • 6.fetch:从远端拉数据到本地 /push:将本地数据上传到远端
  • 7.删除远端站点:git remote remove 站点名
  • 8.从本地仓库push到远端仓库---git push 站点名 --all
  • 9.git pull 将远端分支的内容拉到本地,然后与本地分支合并
  • 10.将远程代码fetch到本地 git fetch 站点名 分支名
  • 11.将远端master分支合并到本地分支 git merge github(站点名)/master(分支名)
  • 12.当本地master分支和远端分支不一样时,但是想要将本地master 分支 merge到远端分支---git merge --allow-unrelated-histories github(站点名)/master(远端分支名)
  • 13.将本地master分支push到远端分支---git push github(远端站点名) master
  • 14.git remote -v 查看远程版本库信息 git remote add githup 添加githup远程版本库 git fetch githup 拉取远程版本库 git merge -h 查看合并帮助信息 git merge --allow-unrelated-histories githup/master 合并githup上的master分支(两分支不是父子关系,所以合并需要添加 --allow-unrelated-histories) git push githup 推送同步到githup仓库 15.fast-forward:两个分支合并时,target分支如果是source分支的祖先,那么这两个分支就是 fast-forword的关系

12.分支合并冲突问题

  • 1.当两个人同时对github上master分支进行修改的时候,修改不同文件---两个用户同时获取拉取了master的代码--一个用户修改文件已经提交,另一个用户再次push的时候会出现提交异常

<1>首先:1.将远端分支fetch下来--git fetch github <2>再次:2.合并分支 <3>最后:3.push分支到远程

  • 2.当两个人同时修改了一个分支的同一个文件不同区域--一个人修改之后push,另外一个人push的时候会发送冲突

<1>1.将远端fetch下来,并且merge本地和远端---git fetch github <2>git merge 远程分支,将远程分支和本地分支合并 <3>push到远程:git push github

  • 3.当两个人同时修改了同一分支的同一文件的同一区域

<1>github fetch github <2>merge远程分支,合并分支的时候会发生冲突,解决冲突,修改之前修改的文件,然后提交

git push -f 协同工作一般禁止使用