2018-12-26
git init
初始化git仓库
后会出现隐藏文件夹.git 下面有一个logs 下的如下路径中 的master中 有所有操作的详细记录 HEAD中好像也有
├── HEAD
└── refs
└── heads
└── master
以上文件中找不到的未来版本commit_id 可以使用git reflog
git add
参数 . 全都add 包括删除某个文件和为跟踪文件
git commit
参数 -m "提交信息" --amend 追加修改和修改提交信息
git log
查看commit的记录
参数 --pretty=oneline 单行显示 不包括commit作者
--oneline 信息更少 最前方的黄色数字为commit id
--graph 看图说话
git reflog 命令历史
git reset
版本回退 撤销提交
git reset 后边什么都不加 只能撤销 add 操作
git reset HEAD~1 撤销上一次add和commit 回到add之前 包括多次commit --amend的东西全都直接 回到add之前
git reset HEAD~1 --hard 直接修改本地文件成为修改之前 想要回滚 的话可以用 用git reset --hard commit id的方式进行回滚
通过 git log 可以查看提交历史 确定我们要回去的历史版本
通过 git reflog 可以查看命令历史和commi_id 一遍回到未来
git checkout -- readme.txt
注意 -- 这个东西 没有就会变成 分之检出
或者Git checkout . 放弃本地修改
已经add 的文件不会被切回 想要放弃修改的话 就先git reset 或者Git reset -- file.name 回到add之前
已经commit的文件 想要回到上一个版本 先git reset HEAD^ 这样会回到add之前 或者 直接 reset --hard
误删文件的时候也可以用这个命令 checkout -- file 回到删除之前 删除并且commit的文件 也可以恢复
分支创建和合并
git branch -b dev 创建本地分支dev 并检出到分支上 相当于 git branch dev + git checkout dev
git branch -b dev ornign/master 创建分支与远程ornign/master关联 并且直接检除到dev分支上
git branch -d dev 删除分支 用大写的 -D 删除的更干净
git branch -v 查看本地有哪些分支
git branch -vv 查看详细的本地分支和远程分支的对应关系
git branch -a 查看全部分支
git branch -r 这个应该是查看远程分支
配合 grep 食用 效果更佳
git diff
差分 就是比较不同 可以用于 比较同一个文件之间前后的修改
参数 --name-status 可以比较两个分支的那些文件 有修改
git fetch
是先把远端的分支 down单本地 但是并不merge
git pull
相当于 git fetch 和git merge 实际使用中是使用git fetch 再 git diff 比较后再决定是否merge
git stash
保存当前状态
--》使用场景:如果当前工作没有完成 ,又有其他要求,但是当前的工作不想提交
就可以使用这种方式,先保存起来或者先add 再commit 保存在当前分支 再切换其他分支完成别的工作
--》如何恢复:
git stash list 查看曾经保存过的状态
git stash apply 恢复状态但是删除stash 内容
git stash drop来删除
git stash pop 恢复同时 删除stash的内容
可以多次使用stash保存状态 再查看list 通过git stash apply stash@{0} 改变花括号中的数字 可以决定恢复到哪一个状态
git remote
查看远程信息
git remote -v 查看更详细信息
当远程分支上有人在我们之前提交时 直接 push会失败
需要先pull 一下 这是Git status 会发现commit 数不为 1 直接提交 会非常难看且 不爽
这是使用 git rebase 缺点是本地的分叉提交已经被修改过了。
而且pull 之后可能会用冲突 需要本地手动修改
git rebase 变基
更新2019-1-14 19:39:53
git 会有大patch 的情况出现就是,打补丁
方式如下:
git format-patch -1 f4a07140c773d2a321127668acb9c22013265b85
主要指令是Git format-patch 这个是生成patch 的指令
会生成后缀patch的文件
git apply --stat 0001-publishlist-fetch.patch
查看那个 patch这个都干啥了
先检查patch文件:git apply --stat newpatch.patch
git apply --check 0001-publishlist-fetch.patch
apply 应该是应用这个补丁打到哪里去
检查能否应用成功:git apply --check newpatch.patch
这一步没有报错显示就行
git am 0001-publishlist-fetch.patch
这个才是把 补丁打进来
打补丁:git am --signoff < newpatch.patch