git常用操作

    xiaoxiao2021-03-26  22

    修改提交说明:

    1)最近一次提交说明  git commit --amend

    2) 指定commit的提交  git rebase -i <commit id>

    commit 的时候才会产生log

    误提交文件撤回:git rm --cached file

    放弃本地文件的修改 git reset --hard commitId 用指定提交状态的文件替换本地文件

    git pull 拉取远程分支

    git push本地推送远程

    git log -l -m --status 2 

    git ls-files 输出结果第三列的值大于0表示有文件冲突

    当文件冲突时,只能手动解决冲突,然后add--commit

    git mergetool可以交互式的解决冲突

    tag:

    git tag 显示标记(里程碑)

    git tag -n<num> 显示num行tag的说明

    branch:

    git branch 显示本地分支列表

    git branch branchname  基于当前HEAD提交创建分支

    git branch branchname start-point 基于哪个提交建立分支

    git branch -d branchname 删除分支,会检查分支合并,已合并拒绝删除

    git branch -D branchname 强制删除分支

    git branch -m branchname 修改分支名称,若已存在同名分支,拒绝修改

    git branch -M branchname 强制占用该名称修改

    git branch -r 查看远程分支

    git checkout -b branchname remotename 基于远程的某个分支建立本地分支

    git checkout remotename 将远程版本库的分支复制为本地远程版本库,会分离头指针,不推荐

    git remote update 更新远程版本库

    git remote rm branchname 删除远程分支

    git format-patch -s HEAD~n..HEAD 将最近的n次提交转换为补丁文件

    git send-email *.patch 将补丁文件以邮件的形式发送出去

    git apply XX.patch 应用哪一个补丁文件

    add:

    git add将修改内容添加到暂存区

    git add -u 提交所有修改

    git add -i 对工作区文件交互性添加

    git add -A 提交所有修改

    git add -p 选择性提交修改

    git add file 提交指定文件

    diff:

    git diff 未提交(add)的修改

    git diff 分支名 与另一个分支的差异

    stash:

    git stash 保存当前工作进度(比如你需要紧急在留一个分支修改东西,但是当前分支已有修改,还不想提交,可以用stash暂存)

    git stash pop恢复之前保存的进度,会删除stash引用

    git stash list 查看当前保存进度

    git stash diff 查看多个stash之间的差异

    git stash apply stash@... 使用哪一个stash恢复工作区,不会删除引用,可以多次使用这个stash

    git stash clear 清除git stash,删除之后 reflog以及stash引用都会丢失

    操作svn:

    git svn clone url

    git svn fetch

    git svn rebase

    git svn dcommit

    git grep 更友好的git目录下的搜索

    git config -e 编辑git的配置文件

    git commit --amend --allow-empty --reset-author

    git status 查看当前git的状态

    git status -s 用精简形式输出git的状态

     A是add暂存区新增文件  M是modify修改文件 ? 是本地新增

    git log --pretty=oneline 精简输出log信息

    git add 提交到暂存区,

    git checkout file 撤销工作区尚未提交的修改

    git reset HEAD 把提交到暂存区的文件撤回

    commit 添加到本地版本库

    git diff --cached|--staged 查看与版本库的差异

    git diff 查看本地工作区与暂存区的差异

    git diff HEAD 查看工作区与当前分支差异

    git rm --cached file 删除暂存区的文件,本地工作区不受影响

    git checkout . 用暂存区的文件替换工作区文件

    git ls-tree l HEAD 查看目录树

    git cat-file -t commit(40位的ID)

    显示可能为 commit本次提交唯一标识  tree对应目录树 parent上次提交

    访问git对象:

    git rev-parse HEAD  显示最近的一次提交

    git cat-file commitId 查看对应commitId的提交信息

    使用git reset --hard commitId 用指定commit重置本地修改,这个重置无法恢复

    但是,操作后本地的提交历史也会被删除,可以使用git reflog来挽救错误的重置

    git reflog show master | head -5 可以找到reset前的提交commitId

    如下:

    再使用git reset 把对应的commit回复过来即可

    比如 git reset --hard 2a0a98d 或者 git reset --hard master@{4}都可以

    git checkout . 会拿暂存区的文件覆盖所有的本地文件

    git clean -nd  列出会被删除的文件,以免误删除

    git clean -fd  真正执行删除

    git status -s 查看当前状态

    git tag -m "comment" flagName 为本次提交打一个标签

    git discribe 显示最近提交的标签

    删除本地文件之后,使用git ls-file命令可以发现暂存区的文件并未被删除

    git add -u 将本地文件的修改记录到暂存区

    git commit 删除本地git仓库的文件

    git push同步到远程

    git show HEAD~1:a.txt > a.txt 从本地历史提交中恢复本地误删除文件

    git mv originName toName 将文件改名为toName(相当于是git rm 和 git add的操作合并)

    git ignore 语法:

    # 这是注释行

    *.a     #忽略所有.a为扩展名的文件

    !lib.a  #但是lib.a不要被忽略

    /TODO   #只忽略当前目录下的TODO文件,不忽略子文件夹的

    build/  #忽略所有build文件夹的文件

    doc/*.txt #忽略所有doc/的txt文件,但不包括子目录

    git blame fileName 查看某个文件的提交历史 git blame -L 3,5 从第3行开始查看5行

    git show-ref 查看所有的引用

    .git/heads/ 开头的是分支

    .git/remotes/ 开头的是远程版本库在本地的映射

    .git/tags 开头的是里程碑

    .git/refs  目录下存放的是所有的引用

    .git/packed-refs 存放的是打包文件

     git fsck 查看版本库中没有被任何对象引用的松散对象

     git prune 清理那些松散对象

     du -sh .git 再次查看占用空间

     commit之后要先使用 git reflog expire --all 让引用失效,再使用gitprune清理,才会   有用(慎用,log恢复的最后一道闸门了,丢了再也回不来...)

    git gc 对版本库进行整理  gc是git的一个小工具,可以看到gc后的版本空间占用小了很多

    git gc --prune=now立马对所有的未关联对象进行整理,包括过期的和未过期的

    转载请注明原文地址: https://ju.6miu.com/read-660593.html

    最新回复(0)