git操作记录

340 阅读4分钟

第一周周一

创建

新建文件夹

mkdir 文件名

新建文件

touch fileName (我在vscode无法使用)

查看当前路径

pwd

将当前目录变成一个git可以管理的仓库(初始化仓库)

git init

将文件添加到git仓库(暂存区)

git add readme1.txt readme2.txt //一次可以提交多个

将文件提交到当前支

git commit -m "文件名"

版本

版本回退

查看当前工作区与缓存区状态

git status 

对比文件区别

git diff readme.txt

查看最近到最远的提交记录

git log

回到上一个版本

可以撤销commit

git reset --hard HEAD^  ( git reset --HEAD~100 回到上一百个版本)

回到指定版本

git reset --hard 123456 (回到指定版本号commit id,假设为123456******,git会根据commit id的前几位自动寻找对应的版本)

查看该文件内容

cat readme.text

查看每一次命令历史记录

git reflog

比较工作区

git diff readme.txt

比较暂存区

git diff --cached

撤销修改

将readme.md回退到最近一次git add 或 git commit 状态

git checkout -- readme.md

删除文件

删除

rm a.js

误删回退

git checkout -- a.js

远程仓库

添加远程仓库

关联一个远程仓库

git remote add origin git@github.com:MrXwq/aaa.git
git push -u origin master

远程克隆ssh

git clone git@github.com:MrXwq/aaa.git

远程克隆https

git clone https://github.com/MrXwq/aaa.git

分支

查看分支

git branch

创建分支

git branch aa(分支名称)

切换分支

git checkout aa

创建并切换到分支

git checkout -b aa

合并分支到当前分支

git merge aa

删除分支

git branch -d aa

删除远程分支:

git push origin -d 分支名
  1. 查看分支合并图
git log --graph
  1. 查看分支合并缩略图
git log --graph --pretty=oneline --abbrev-commit

Fast-Forward合并,分支无记录

git merge --no-ff -m "没有记录" test2(分支名字)

查看远程库详细信息

git remote -v

将最新的爬下来

git pull

将本地未push的分支提交整理成直线,利于查看

git rebase

隐藏

经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。

隐藏分支工作现场

git stash

查看隐藏分支

git stash

恢复工作现场

git stash apply

删除隐藏,恢复到隐藏前的工作现场

git stash drop

恢复到隐藏前的工作现场,相当于前两个合起来

git stash pop

恢复到指定隐藏的工作现场

git stash apply stash@{2}

标签

其实道理和commit 的commit-sha1有些相似,其实就是给当前的版本做个标记,以便回退到此版本。如果使用commit-sha1,大家都记不住那条冗长的sha1码,所以用tag标签来做记录

创建标签

git tag tag1

查看所有标签

git tag

为某次提交创建指定标签

git tag tag1 commitId

查看指定标签内容

git show

为某次提交创建标签,同时添加标签的注释

git tag -a tag1 -m "test" commitId

删除标签

git tag -d tag2

推送某个标签到远程库

git push origin tag2

一次性推送所有标签到远程库

git push origin --tags

删除远程库标签

  1. 第一步删除本地库标签

  2. 第二步从远程库删除

    git push origin :refs/tags/tag2
    

第一周周二

设置用户名

$ git config --global user.name "xuhaiyan"
$ git config --global user.email "haiyan.xu.vip@gmail.com"

获取密钥

$ ssh-keygen -t rsa -C "your_email@youremail.com" 

查看信息

$ git config --list

develop->staging->production->master

第一周周三

将当前分支完全替换master分支

git push origin develop:master -f

但是上面操作,本地的 master 分支还是旧的,通常来说应该在本地做好修改再去 push 到远端,所以我推荐如下操作

git checkout master // 切换到旧的分支
git reset --hard develop  // 将本地的旧分支 master 重置成 develop
git push origin master --force // 再推送到远程仓库  

撤销上一次merge

先git reflog 查看上次提交的码

再git reset --hard 0bd1a4c2

也可以直接git reset --hard HEAD^

删除在本地有但在远程库中已经不存在的分支

git remote show origin //查看哪些已经被删除了的
git remote prune origin //删除

新建项目在之前已有项目的基础上,不复制代码,保留原有的git 提交记录

git remote add upstream git@xxx git fetch upstream git checkout upstream/release/1.15.0 git checkout -b release/1.15.0