zoukankan      html  css  js  c++  java
  • Git中的文件状态和使用问题解决

    (暂存区 即Index In Git)

    commit 到 local respository的内容,不想push,则使用git reset 将文件状态回转到staged|modified|unstaged:

    git reset HEAD^   
    git reset --soft HEAD^
    git reset HEAD~3    (本地有3次commit未提交时用,也可以git reset HEAD^操作3次)

    状态回转用git reset,或者git revert https://www.cnblogs.com/0616--ataozhijia/p/3709917.html

    被delete的内容没有push到远端仓,此时想恢复文件(放弃本地所有的修改,即还没有提交到本地暂存区时):

    git checkout [--] <file or path>         (--是可选的)

    git pull时,有些修改不想commit到本地仓时,可以git stash,下面三步:

    1. git stash 
    2. git pull
    3. git stash pop

    以树结构查看当前仓库的状态:

    gitk --all &

    git删除文件:

    1. 将文件从仓库删除的同时,当前工作目录(磁盘)上也删除
    git rm <file>
    git rm -r <path>

    2. 将文件从仓库删除,但文件继续保留在当前工作目录(磁盘)上
    git rm --cache <file>
    git rm -r --cache <path>

    git从远端仓库恢复已经删除的文件(被删除的文件已经commit到本地仓)

    Git Bash乱码情景对号入座和解决方案

    乱码情景1

    在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274232350256256346200273347273223.png的乱码。
    解决方案:
    在bash提示符下输入:

    git config --global core.quotepath false

    core.quotepath设为false的话,就不会对0×80以上的字符进行quote。中文显示正常。

    乱码情景2

    在MsysGit中,使用git log显示提交的中文log乱码。
    解决方案:
    设置git gui的界面编码

    git config --global gui.encoding utf-8

    设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致!

    git config --global i18n.commitencoding utf-8

    使得在 $ git log 时将 utf-8 编码转换成 gbk 编码,解决Msys bash中git log 乱码。

    git config --global i18n.logoutputencoding gbk

    使得 git log 可以正常显示中文(配合i18n.logoutputencoding = gbk),在 /etc/profile 中添加:

    export LESSCHARSET=utf-8

    乱码情景3

    在MsysGit自带的bash中,使用ls命令查看中文文件名乱码。cygwin没有这个问题。
    解决方案:
    使用 lls --show-control-chars 命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。

    为了方便使用,可以编辑 /etc/git-completion.bash ,新增一行 alias ls="ls --show-control-chars"

    Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍

    # 此为注释 – 将被 Git 忽略
     
    *.a       # 忽略所有 .a 结尾的文件
    !lib.a    # 但 lib.a 除外
    /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
    build/    # 忽略 build/ 目录下的所有文件
    doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

    在填写忽略文件的过程中,我发现在IDEA里面,.gitignore中已经标明忽略的文件目录下的文件,当我想git push的时候还会出现在push的目录中,原因是因为在IDEA的git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了。git清除本地缓存命令如下:

    git rm -r --cached .
    git add .
    git commit -m 'update .gitignore'
    

    https://www.cnblogs.com/zzcc/p/5695883.html
    https://www.cnblogs.com/kevingrace/p/5690241.html

    Git Bash右键菜单问题

    修改windows注册表信息(cmd:regedit)

    https://blog.csdn.net/kyowill1988/article/details/76087513

    Git多账号的配置,以及使用指定的publickey
    https://blog.csdn.net/yanzhenjie1003/article/details/69487932
    https://blog.csdn.net/Walkerhau/article/details/77394666

    回滚到某次 commit
    https://blog.csdn.net/qq_34677386/article/details/89399359 (IDEA)
    https://blog.csdn.net/cjdushang/article/details/51146158 (Git)

    gitk --all&   -->  revert this commit 也可以回退,而且有之前的 commit 记录

  • 相关阅读:
    爬虫入门
    读写文件操作
    列表的操作
    课后习题小练
    Python切片
    逗号的麻烦
    字符串学与练
    Turtle的学习
    FTL(FreeMarker)基础
    java反射机制基础
  • 原文地址:https://www.cnblogs.com/kevin-yuan/p/4678248.html
Copyright © 2011-2022 走看看