git


常用的git 命令备忘及常见问题

git command

终极杀招

任何命令有问题就直接在后面 --help 直接到官方文档那里不会点哪里
比如

git commit --help
git help commit

第一次装git连接github时需要的命令

git config --global user.name "losss"

git config --global user.email "stdiolosss@gmail.com"  

# /home/losss/.ssh/id_rsa.pub
ssh-keygen -t rsa -C "stdiolosss@gmail.com"
# 测试连接
ssh -T git@github.com

ssh -T git@git.coding.net

如果提示
```bash
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0670 for '/home/losss/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/losss/.ssh/id_rsa": bad permissions
Permission denied (publickey).
```bash
运行如下命令
```bash
 chmod 600 /home/losss/.ssh/id_rsa

git clone …

commit 信息写错了 需要修改

git commit --amend

常用命令

git status # 查看工作区和缓冲区状态
git add --all # 将工作区修改暂存到缓冲区
git commit -m"<comment>" # 提交到仓库
git push origin master # 推送到远程分支

git ignore(并不常用 但是我不知道怎么分类了)

检查.gitignore 文件规则

git check-ignore -v App.class

版本的回退与前进

回退到上一个版本 如果是上上个版本就是HEAD^^

# 回到上次的commit
git reset --hard HEAD^

# 回到上一次操作
git reset^

回到固定的版本

6位 hash 就可以

git reset --hard <commit-hash>

what is --hard

Resets the index and working tree. Any changes to tracked files in the working tree since are discarded.
与hard 对应的还有–soft

查看命令历史

git reflog

# 这个命令可以配合 git reset 使用
git reset (git reflog 里前面的id)

分支的操作

创建并切换到新分支

git checkout -b <branch-name>

创建但是不切换分支

git branch new <branch-name>

删除分支

git branch -d test

–no-ff 这样删除分支之后再git log 里面仍然可以显示出分支信息

git merge --no-ff -m "merge with no-ff" dev

撤销操作

撤销在add之前的修改 当然也可以用来回复被rm掉的文件

git checkout --readme.txt

恢复暂存区的所有文件到工作区

git checkout .

撤销add

git reset HEAD <file>

去掉某个commit

git revert <commit-bash>

git stash
这个命令是暂时封存工作空间的状态 详细查看
如果有多个stash的时候要小心 如果不加参数默认就会对最近的一次操作

git stash

还原最近一次操作 并且不删除标记

git stash apply

如果需要还原对应序号的话

git stash apply --index 4

会还原最近一次的保存 会删除标记

git stash pop

删除最近的一次的保存

git stash drop

显示list

git stash list

显示对应保存中的内容 可以对应list中的序号

git stash show 4

git stash 使用例子

  1. 本地有修改,能不能先git pull
git stash # 工作区修改暂存
git pull  # 更新分支
git stash pop # 暂存修改恢复到工作区
  1. 有bug需要修改可以先使用git stash 把现有的工作保存起来然后切换到别的分支修改之后再切回来使用git stash pop 还原之前的工作 在多人协作的情况下有用

关联远程仓库

关联远程仓库

git remote add <name> <git-repo-url>

查看远端关联的仓库

git remote -v

强制推送本地版本到远端

git push origin master -f

远程分支被别人更新了,你需要更新代码

git pull origin <branch-name>

重新设置远端地址

git remote set-url origin <your-git-url>

常见问题

中文乱码

使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如 274\232\350\256\256\346\200\273\347\273\223.png 的乱码。

解决方案:在bash提示符下输入:


git config --global core.quotepath false

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

alias(zsh中的设置)

vim ~/.zshrc
alias gm="git merge --no-ff "

hexo 中移除 next的.git文件后仍识别此git仓库

git rm --cached themes/next

文章作者: losss
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 losss !
评论
  目录