美文网首页
Git 现场

Git 现场

作者: 想溜了的蜗牛 | 来源:发表于2020-12-23 11:11 被阅读0次
  1. 场景:stash pop 后,发现不应该pop,
    解决方法: git reset --hard HEAD

refer: discard-git-stash-pop

  1. 场景:将之前上传到gitlab中的文件加到 .gitignore文件中;如将.env.production 等 env 忽略掉,不要上传到库中
    解决方法: 需要先将文件使用 git rm 删除一下,所以需要先备份一下,或者删除后从库中以前的版本再copy到本地
git rm env.local --cached

ignore文件就不写了,refer: stackoverflow

  1. 清除目录
    场景:项目被重写,目录变动非常。从新版本切回旧版查看代码时,会将旧版的目录下载,再切回新版后,旧的目录依然还在。怎么清除旧的文件或目录呢?
    方法: 使用 git clean
git clean -n  // 演习,告诉你会清哪些文件,不会真正删除
git clean -f  //删除当前目录下所有没有track过的文件. 他不会删除.gitignore文件里面指定的文件夹和文件, 不管这些文件有没有被track过
git clean -f <path>  // 删除指定路径下的没有被track过的文件
git clean -df  // 删除当前目录下没有被track过的文件和文件夹

参考 git clean的用法

  1. 文件(夹)名称大小写
    这个在 mac 下使用 git mv myfile MyFile 类似 git rm xxfile
    但在 windows 下经常用有权限的问题,所以 windows 下麻烦些. 套路;
    a. 把A目录备份为B
    b. 删除A目录
    c. git add 那些deleted的文件
    d. 将目录B改名为你要的名字X
    e. git add X
    执行完上边再 git status 能看到 renamed xxx -> XXX
    文件同目录操作一样。

  2. error: fatal: Unable to create /.git/index.lock': File exists
    处理: rm -f ./.git/index.lock
    refer: link

  3. 临时保存后切到别的分支 refer,
    保存:git stash save “修改的信息"
    取出:

git stash list
git stash apply stash@{0}
  1. git add 后,有某个文件不需要提交
    git reset head

  2. 本地有修改,但现在要拉个全新的分支, 另外本地修改没啥影响,想全部丢弃
    git reset --hard or git checkout .

  3. 修改本地与远程分支名
    refer: How To Rename a Local and Remote Git Branch

# 1. Start by switching to the local branch which you want to rename:
git checkout <old_name>
# 2. Rename the local branch by typing:
git branch -m <new_name>
# 3. Push the <new_name> local branch and reset the upstream branch:
git push origin -u <new_name>
# 4. Delete the <old_name> remote branch:
git push origin --delete <old_name>
  1. stash clear 后的恢复
    refer stackoverflow
# 1. 用下面命令先找出 commit 列表
git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk --grep=WIP
# 2. 找到你的 commit id 后,如下操作(可能你是没有commit, 但stash会当成一个commit)
git stash apply <commit id>
  1. stash 没有 track 的文件
    refer: stackoverflow
git stash  -u
  1. 找出当前代码中所有修改的文件
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $commit_id
# 需要将修改后的文件打包用这个
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $commit_id | tar -czf file.tgz -T -

refer: stackoverflow
执行后展示如下:

image.png
  1. cherry-pick
    帮同事合代码时,发现他的分支少了之前的 develop 分支的一个 commit,此时可以将这个 commit 使用 cherry-pick 再合到他的分支就可以了
# 1. 使用git log 找到刚漏了的commit
git log 
# 2. 
git cherry-pick <commitHash>
# 3. 如果有冲突,解决冲突后执行
git add conflict_file
git cherry-pick --continue
git commit -c db617f5
git push origin dev-branch-name

refer: git-cherry-pick, Using_Git_Cherry_Pick#Resolve_conflicts

相关文章

  • Git 现场

    场景:stash pop 后,发现不应该pop,解决方法: git reset --hard HEAD refer...

  • Git Stash命令

    Git提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作: 存储工作现场 查看工作...

  • 第四个模块 Git stash保存现场

    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,...

  • git stash

    妈了个蛋蛋本来想玩一波Git差点被玩死git stash 保存现场后文件全部不见了,吓得慌得一逼git stash...

  • 使用Git遇到的权限问题

    Access denied 问题现场: 解决:输入一行命令:git config --system --unset...

  • Git命令整理

    提交流程 分支 日志 版本回退 标签 保存工作现场 最后推荐 Git阮一峰廖雪峰猴子都懂的Git欢迎指正!

  • Git关于Bug修复分支

    Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作,命令如下: 具体使用流...

  • Git 常用命令总结

    GIT 工作区 状态 记录 恢复文件到修改前版本 分支操作 提交和推送 工作现场 标签

  • Android Studio 常见问题

    使用 Git 1. Can't update: no tracked branch 复现场景: 假设当前工作环境的...

  • 恢复被删除的Git stash记录

    场景: 使用Git stash命令或者SourceTree暂存了工作现场,之后误删了这个stash 恢复方法: 第...

网友评论

      本文标题:Git 现场

      本文链接:https://www.haomeiwen.com/subject/upeynktx.html