git常见问题处理

查看项目中某个人的代码数

1
2
3
git log --author="Spaceack" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' 

added lines: 1280, removed lines: 198, total lines: 1082

合并多次commit

例如要合并 最新的三次提交,将后两个提交合并到第一个:

1
2
3
4
5
6
7
8
git rebase -i HEAD~3

选择pick操作,git会应用这个补丁,以同样的提交信息(commit message)保存提交
选择reword操作,git会应用这个补丁,但需要重新编辑提交信息
选择edit操作,git会应用这个补丁,但会因为amending而终止
选择squash操作,git会应用这个补丁,但会与之前的提交合并
选择fixup操作,git会应用这个补丁,但会丢掉提交日志
选择exec操作,git会在shell中运行这个命令

然后将后两个提交的pick 改为 squash

解决Git冲突 Please move or remove them before you can merge. Aborting

1
2
3
4
5
x  -----删除忽略文件已经对git来说不识别的文件
d -----删除未被添加到git的路径中的文件
f -----强制运行

git clean -d -fx ""

您的分支和 ‘origin/master’ 出现了偏离

1
2
3
4
5
6
7
8
9
10
git status
位于分支 master
您的分支和 'origin/master' 出现了偏离,
并且分别有 11 处不同的提交。
(使用 "git pull" 来合并远程分支)

想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:

git fetch origin
git reset --hard origin/master

拒绝合并无关历史

1
2
3
fatal: refusing to merge unrelated histories

git pull origin hexo --allow-unrelated-histories

git pull 强制覆盖本地文件

1
2
3
4
5
  git fetch --all
git reset --hard origin/master

```
### pull时,忽略变更的文件:

git stash
git pull
git stash pop

1
2
3
4

## GitHub

### 更新 fork 分支

  • Update:
    git fetch upstream
    git rebase upstream/master

    git push
    git push –tags

文章作者: Spaceack
文章链接: http://spaceack.com/2020/07/02/2020-07-02-git%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E5%A4%84%E7%90%86/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 丸子家的小云吞
支付宝打赏
微信打赏