1

新建代码库

git init // 在当前目录新建一个Git代码库
git init [project-name]新建一个目录,将其初始化为Git代码库
git clone [url] // 下载一个项目和它的整个代码历史

配置

git --version //查看git的版本信息
git config -e [--global] // 编辑Git配置文件

设置Git的user name和email:(如果是第一次的话)

git config --global user.name //获取当前登录的用户
git config --global user.email //获取当前登录用户的邮箱

/ 如果刚没有获取到用户配置,则只能拉取代码,不能修改 要是使用git,你要告诉git是谁在使用/
git config --global user.name 'userName' //设置git账户,userName为你的git账号,
git config --global user.email 'email'
// 如果你公司的项目是放在自建的gitlab上面, 如果你不进行配置用户名和邮箱的话, 则会使用全局的, 这个时候是错误的, 正确的做法是针对公司的项目, 在项目根目录下进行单独配置
git config user.name "gitlab's Name"
git config user.email "gitlab@xx.com"
git config --list 查看当前配置, 在当前项目下面查看的配置是全局配置+当前项目的配置, 使用的时候会优先使用当前项目的配置
附: 如果git pull 每次都要求输入用户名和密码,则可以执行如下配置
git config --global credential.helper store

生成密钥

ssh-keygen -t rsa -C "youremail@qq.com"

如果不需要密码的话,连续3个回车。
最后得到了两个文件:id_rsa和id_rsa.pub

clipboard.png

cat ~/.ssh/id_rsa.pub // 查看密钥
登陆Github, 复制本地密钥添加 ssh
把id_rsa.pub文件里的内容复制到这里

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

查看历史提交信息

git show 查看最近一次的提交
git show [commit_id] 查看某次历史提交信息的完整信息
git show HEAD查看HEAD标签当前指向的提交的完整信息
git show master 查看master分支最新一次提交的完整信息
git show master^或git show master~ 查看master分支最新一次提交的父提交的完整信息
git show master^2查看master分支最新一次提交的第二个父提交(也就是父提交的父提交)的完整信息

查看完整的历史提交(commit)信息

git log 可以按键盘空格/字母b键将信息向下/向上翻页,也可以按键盘向上/向下箭头向上/向下按行滚动
git log –p 输出每一个commit之间的差异信息
git log --stat 输出每一个commit之间的差异统计信息
git log--oneline 输出历史commit的简短信息

git 撤销文件的修改记录

分两种情况

第一种: 没有添加到暂存区

git checkout -- file 撤销单个文件的修改记录 例子:git checkout -- remead.md
git checkout . 撤销本地所有文件的修改记录

第二种: 添加暂存区,没有提交

git reset HEAD filename 从暂存区里撤到本地,在进行第一种情况的操作
git reset 从暂存区里把所有文件,撤回到本地

git 标签

git tag 查看所有的标签
git tag -a 'v1.0.0' hash -m 'v1.0.0'
git tag -l 'v1.8.5*' 查看以v1.8.5开头的标签
git show v1.4 通过使用 git show 命令可以看到标签信息与对应的提交信息:
git tag -d [tagname] 删除本地标签
git push origin :refs/tags/test_tag    //本地tag删除了,再执行该句,删除线上tag
默认情况下,git push并不会把tag标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。
1.push单个tag,命令格式为:git push origin [tagname]
例如:
git push origin v1.0 #将本地v1.0的tag推送到远端服务器
2.push所有tag,命令格式为:git push [origin] --tags
例如:
git push --tags

git push origin --tags 推送多个tags, 把本地所有不在远程仓库的tag,全push到远程上

git diff 比较差异

git status告诉你有文件被修改过,用git diff可以查看修改内容
git diff 文件对比
git diff filepath 工作区与暂存区比较
git diff HEAD filepath 工作区与HEAD ( 当前工作分支) 比较
git diff --staged 或 --cached filepath 暂存区与HEAD比较
git diff branchName filepath 当前分支的文件与branchName 分支的文件进行比较
git diff commitId filepath 与某一次提交进行比较

git reset --hard HEAD^ 回到上一个版本
git reset HEAD^ --soft 回到上一个版本,保留修改
git reset --hard HEAD^^ 回到上上一个版本
git reset --hard HASH #返回到某个节点,不保留修改。
git reset --soft HASH#返回到某个节点。保留修改
git reset 清空暂存区里的所有
git reflog查看命令历史,以便确定要回到哪个版本

上传远程仓库的步骤

git add 文件名 单一跟踪
git add . 当前目录下的所有文件跟踪
git commit -m '文件说明' 提交
git remote add origin url 添加远程仓库
git push -u origin master
git push -u origin branchName 创建远程的分支的同时,设置默认分支,这样以后就可以通过git push直接传到默认的当前分支,相当于 上传远程分支(git push origin branchName)和 本地分支关联远程分支相结合(git branch –-set-upstream-to=[远程分支名])
git clone url
从现有 Git 仓库中拷贝项目:git clone <repo>
克隆到指定的目录,可以使用以下命令格式:git clone <repo> <directory>

git log 查看提交历史
git log --pretty=oneline:将只会显示提交的commit id号和对应的注释
git log -p filename: 可以显示该文件每次提交的diff
git log -- filename (git log filename) 可以看到该文件相关的commit记录
git show commit-id filename 查看某次提交中的某个文件变化

git 基础命令

git fetch [远程仓库名]
git status 命令用于查看项目的当前状态也可以查看在你上次提交之后是否有修改
git status -s 简短输出,没加-s详细输出
git branch filename 创建分支
git branch 查看本地分支
git branch -a 查看所有的分支(包括本地和远程分支)
git branch -r 查看所有远程分支
git branch -d filename 删除本地分支
git branch -m dev develop 本地分支更改名字

git branch –-set-upstream-to=[远程分支名] 本地分支关联远程分支
git checkout 分支 切换本地分支
git checkout -b dev 创建本地分支并切换
git stash // 冻结当前的分支修改
git stash list // 列出所有的工作现场存储(查看所有的stash)
stash_id/1通过git stash list 查看的第几个
git stash apply stash@{stash_id} 是恢复指定的进度到工作区。
git stash pop 恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
git stash pop --index 恢复最新的进度到工作区和暂存区
git stash drop [stash_id]
删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度
git stash clear 删除所有存储的进度
git merge 分支 合并分支
git merge --abort 回到合并之前的状态
注:如果合并之后,改过本地文件,想要撤销合并,需要git add ,在执行git merge --abort命令回到合并之前的状态
如果合并有冲突的话,解决分四步
1.通过git status 查看冲突的文件
2.手动找文件解决冲突
3.再通过 git commit -m 解决冲突
4.上传代码
当我想从远程仓库里拉取一条本地不存在的分支时
git checkout -b 本地分支名 origin/远程分支名 将会自动创建一个新的本地分支,并与指定的远程分支关联起来。
想要创建一个远程的分支 分三步
1.git checkout -b dev 创建本地分支并切换
2.git push origin dev:dev 把新建的本地分支push到远程服务器,远程分支与本地分支同名
或者 git push --set-upstream origin 分支名 //推送本地分支到远程仓库
3.git branch -a 查看所有分支 会看到remotes/origin/dev这个远程分支,说明新建远程分支成功。
删除远程分支 (两种)
1.git push origin :dbg_lichen_star 推送一个空分支到远程分支,其实就相当于删除远程分支
2.git push origin --delete dbg_lichen_star
拉取远程分支并根据远程分支创建本地分支(两种)
1.git checkout -b 本地分支名 origin/远程分支名
2.git fetch origin 远程分支名:本地分支名 例子:git push origin hotfix/v5.9.6:hotfix/v5.9.6
拉取指定远程指定分支的代码
git pull <远程库名> <远程分支名>:<本地分支名>
如:git pull origin dev1:dev1
上传代码到指定的远程分支
git push <远程库名> <远程分支名>:<本地分支名>
如:git push origin dev1:dev1
上传远程分支 git push origin dev1
git push -u origin branchName 创建远程的分支的同时,设置默认分支,这样以后就可以通过git push直接传到默认的当前分支,相当于 上传远程分支(git push origin branchName)和 本地分支关联远程分支相结合(git branch –-set-upstream-to=[远程分支名])
强制删除用本地更改远程分支的代码 git push --force origin
本地所有分支提交远程 git push --all origin
git push origin --tags // git push不会推送标签(tag),除非使用–tags选项。

git找回本地误删的文件 (三步)

1.git status 查看工作区的变化
2.git reset HEAD 文件路径(撤销恢复修改的)
3.git checkout 文件路径
更改上次提交的commit


胡少龙
50 声望7 粉丝