cmd里的快捷键

ctrl+a : 跳到开头
ctrl+e : 跳到结尾
which vi  查看vi这么命令在哪个目录下
>> /uer/bin/vi 
git log 太多了看不完, 空格 往下看    q退出  ctrl+f往后走,  ctrl+d 往前走
mkdir a && cd -  创建并进入啊目录
vim下 
:4,7d 4到7行删除
:5d 第五行删除

丢弃某个文件的本地修改

git chekcout -- a.txt'

从暂存区撤回某次提交

git add hello.py  # 把本地修改加入暂存区
git reset HEAD hello.py # 从暂存区撤回来,但是本地保存了他的修改
git chekcout -- hello.py # 撤回之后用git checkout -- file 丢弃本地的修改
git tag -a v0.1 -m '新增标签v0.1'
git tags

git diff 的使用

git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库


git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_02


HEAD里面的,白色的表示公有的,红色-表示,HEAD比HEAD少了一行

git 删除提交记录关联新仓库 git删除某次提交_工作区_03


git 删除提交记录关联新仓库 git删除某次提交_git_04


git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_05


git 删除提交记录关联新仓库 git删除某次提交_工作区_06

git如何彻底删除一个提交?

① 首先确保所有分支都没有引用该提交,包括HEAD也不指向这个提交。
② 然后 git reflog expire --expire=now --all (这会清除分支变更历史)
③ 然后 git gc --prune=now (不用调整时间,加上--prune=now命令即可)

作者:Intopass

git常用命令

git config --global user.name "ty1539"
git config --global user.email 'ty1539@qq.com'
git config -- list 查看所有的配置
git reset HEAD readme.txt  将最近一次提交的readme.txt恢复到暂存区,然后将暂存区恢复成先前的状态
git reset HEAD  将最近一次提交到git仓库的文件恢复到暂存区,然后将暂存区恢复成先前的状态
  • Git的工作流程一般是:
    在工作目录中添加、修改文件 [已修改(modified)] git add . (将需要进行版本管理的文件放入暂存区域 ) >> [已暂存(staged)] git commit -m '说明' (将暂存区域的文件提交到Git仓库 ) >> 已提交(committed)

reset和checkout

git reset HEAD~ 回到上一个暂存区 git reset HEAD~3 回到上3个暂存区

git 删除提交记录关联新仓库 git删除某次提交_工作区_07

git 删除提交记录关联新仓库 git删除某次提交_工作区_08

git reset HEAD 将最近一次提交到git仓库的文件恢复到暂存区,然后将暂存区恢复成先前的状态

如果本地修改了,某个以提交到仓库的文件,用 git checkout -- filename 用仓库中的覆盖掉本地的, 即放弃本地的修改,要慎用

git 删除提交记录关联新仓库 git删除某次提交_工作区_09

git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_10

git diff

  • git diff commit_id1 commit_id2 // 比较2个已提交的
  • git diff 比较工作区和暂存区
  • git diff HEAD 比较最新提交的和当前的
  • git diff --cached 比较暂存区的仓库
  • git diff --cached commit_id2 比较暂存区的仓库的

git checkout -- filename // 丢弃工作区中的修改, 丢弃掉相对于暂存区中最后一次添加的文件内容所做的变更

git reset HEAD -- filename // 将之前添加到暂存区(stage,index)的内容,从暂存区移除到工作区

git rebase -i master

git commit --amend #修改提交声明

修改文件, git add 之后

git commit --amend -m '新的提交说明' #针对有乱码的提交声明 ,就把修改的文件重新提交到上一次了

git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_11


git branch -m master master2 // 分支master改名为master2git log -p 展开显示每次提交的内容差异

git log --pretty=format:"%h-%an,%ar:%s"

git log --stat 仅显示简要的增改行数统计

git log --pretty=oneline 显示4条

git log -4 显示4条

git commit --amend -m '更新的提交提示'

git rm 要删除的文件名

git rm -f 要删除的文件名 # 当工作区和暂存区不一样是,-f 暴力删除

git 删除提交记录关联新仓库 git删除某次提交_git_12

git mv 旧文件名 新文件名
git rm --cached test.py // 从暂存区删除
git branch feature // 创建一个名为feature 的分支
git log --decorate // 查看当前用户的分支引用
git checkout feature // 切换到feature分支
git log --decorate --oneline --graph --all // 查看分支 --

git 删除提交记录关联新仓库 git删除某次提交_git_13


git 删除提交记录关联新仓库 git删除某次提交_工作区_14

git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_15

checkout

git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_16


git 删除提交记录关联新仓库 git删除某次提交_工作区_17


git 删除提交记录关联新仓库 git删除某次提交_git_18


git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_19


git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_20


git 删除提交记录关联新仓库 git删除某次提交_工作区_21


git 删除提交记录关联新仓库 git删除某次提交_工作区_22


git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_23

git 删除提交记录关联新仓库 git删除某次提交_git 删除提交记录关联新仓库_24

git 删除提交记录关联新仓库 git删除某次提交_工作区_25


git 删除提交记录关联新仓库 git删除某次提交_暂存区_26

.gitignore

git 删除提交记录关联新仓库 git删除某次提交_工作区_27

git stash用法

git checkout 只有2个分支在同一个commit_id节点才可以在改动到一半切换过去,否则不能

git stash 保存此刻状态,会自动生成stash_id 如 stash@{0}: WIP on test: 5c97f3e 05_新增c1

git stash save '保存说明'

git stash list ; 有2条保存记录了stash@{0}:

On test: 新增gitstash

stash@{1}: WIP on test: 5c97f3e 05_新增c1

git  pop   将临时保存的最近一条状态取出来删除

git stash list ; 列出所有的保存状态  只有有第一条保存记录了git stash list ; 有2条保存记录了stash@{0}:

git stash apply  进入之前保存的stash

$ git stash drop stash@{1}  // 删除指定的stash

fatal: Log for 'stash' only has 1 entries.  //保错,没有第二条Administrator@cpo-it001 MINGW64 /y/GitProject/Project_6 (test)

$ git stash drop stash@{0}

Dropped stash@{0} (60e344c1dc884cd087aeb0e045429936aea4d4c2)  // 成功删除了Administrator@cpo-it001 MINGW64 /y/GitProject/Project_6 (test)

$ git stash listgit stash apply (stash内容并不删除,需要通过git stash drop stash@{0}手动删除

git stash pop 删除的同时也将stash内容删除

git stash apply stash@{0}

git blame

$  git blame a
^773a33e (ty1539            2021-03-16 11:15:37 +0800 1) 1111111111111
5ed95c68 (ty1539            2021-03-16 11:25:06 +0800 2) 22222222222
dcbe10a1 (ty1539            2021-03-16 21:24:13 +0800 3) 新增gitstash
5f637fa1 (ty1539            2021-03-16 21:26:28 +0800 4) 333333333333333test
00000000 (Not Committed Yet 2021-03-16 22:05:47 +0800 5) gittag重标签

git diff

Administrator@cpo-it001 MINGW64 /y/GitProject/Project_6 (test)

$ echo 新增区别到a >> aAdministrator@cpo-it001 MINGW64 /y/GitProject/Project_6 (test)

$ git diff

diff --git a/a b/a

index 6c5b51d..e00cf18 100644

--- a/a

+++ b/a

@@ -2,3 +2,4 @@

22222222222

新增gitstash

333333333333333test

+新增区别到a

warning: LF will be replaced by CRLF in a.

The file will have its original line endings in your working directory.

git diff 比较暂存区和工作区的区别

--- 原始文件,暂存区

+++ 目标文件,工作区

git 删除提交记录关联新仓库 git删除某次提交_git_28

git diff commit_id 比较特定的仓库和工作区的区别
git diff HEAD 比较最新提交的和工作区之间的差别

git diff --cached commit_id 比较暂存区和某次提交的仓库的区别
git diff --cached 比较暂存区和最新提交的仓库的区别

1.Gitflow
oado
2。基于Git分支的开发模型:
develop分支(频繁变化的一个分支)
test分支(供测试与产品等人员使用的一个分支,变化不是特别频繁)
master分支(生产发布分支,变化非常不频繁的一个分支)
bugfix(hotfix)分支(生产系统当中出现了紧急Bug,用于紧急修复的分支)

git remote show origin

git reset

  • git reset : 回滚到某次提交 // 就是当前工作目录中的相对于移动过去的commit_id ,把当前的变动没有add进暂存区,
  • git reset --soft:此次提交之后的修改会被退回到暂存区。 // 就是当前工作目录中的相对于移动过去的commit_id ,把当前的变动add进去了暂存区
  • git reset --hard:此次提交之后的修改不做任何保留,git status 查看工作区是没有记录的。 // 工作目录和暂存区都是commit_id里面的,很干净
  • git push origin HEAD --force // 强制推送到远端

注意:删除中间某次提交时最好不要用 git reset 回退远程库,因为之后其他人提交代码时用 git pull 也会把自己的本地仓库回退到之前的版本,容易出现差错进而增加不必要的工作量。

  1. git log // 查找要删除的前一次提交的 commit_id
  2. git rebase -i commit_id // 将 commit_id 替换成复制的值
  3. 进入 Vim 编辑模式,将要删除的 commit 前面的 pick 改成 drop
  4. 保存并退出 Vim

3. git revert // 把本次的提交内容恢复到上一次,之后,重新提交

  • git revert:放弃某次提交。
    - git revert 之前的提交仍会保留在 git log 中,而此次撤销会做为一次新的提交。
    - git revert -m:用于对 merge 节点的操作,-m 指定具体某个提交点。

3.1、撤销提交
要撤销中间某次提交时,使用 git revert 也是一个很好的选择:

  1. git log // 查找需要撤销的 commit_id
  2. git revert commit_id // 撤销这次提交
    如果这次提交是 merge 节点的话,则需要加上 -m 指令:
1. git revert commit_id -m 1 // 第一个提交点
2. // 手动解决冲突
3. git add -A
4. git commit -m ""
5. git revert commit_id -m 2 // 第二个提交点
6. // 重复 2,3,4
7. git push