My Git Cheat Sheet

gitignore

项目下 .gitignore 文件与项目下 .git/info/exclude 文件都可以使 git 在文件或目录未添加进记录前被忽略。前者应该被团队共享,而后者应该作为个人的配置。因为后者在 .git 目录下,其改变被 git 忽略,不会影响其他人。

  • .gitignore 模板
  • 使用 .git/info/exclude 作为个人配置,.gitignore 作为团队配置
  • 匹配目录加 “/“:“dir_name/”
  • 匹配前加上惊叹号 “!”,表示不忽略

常用命令

1
2
git config --global -l # 查看全局配置
git diff HEAD -- filename # 比较

撤销操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
git reset HEAD    # 撤销上次 add 操作

# 提交级别
# 缓存重置
git reset --hard HEAD
# 工作区和缓存都重置
git reset --hard HEAD

# 文件级别
# 放弃工作区的更改
git checkout HEAD foo.py

# Unstage文件,撤销add
git reset HEAD foo.py

更详细的教程代码回滚:Reset、Checkout、Revert-的选择

diff 比较

1
2
3
git diff  # 比较工作区与缓存区
git diff --cached # 比较缓存区与仓库(HEAD)
git diff HEAD # 比较工作区与仓库(HEAD)

换行符差异

Unix/MacOS使用LF换行符,而Windows用CRLF。在Windows下,Git在检出时默认将LF转换为CRLF,在commit时自动将CRLF转换为LF,但可能造成混乱,例如直接从Unix拷贝到Windows的源文件是LF的,会被视为有变更。为避免这个问题,首先设置IDE换行符为LF,并关闭Git这个功能:

1
2
3
4
#提交检出均不转换换行符
git config --global core.autocrlf false
#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

生成ssh key

1
2
# ubuntu下打开shell,Windows下打开Git bash
ssh-keygen -t rsa

idea将已有项目添加到git

转载:IDEA 将已有项目添加到git,https://www.cnblogs.com/rongguang/p/5516300.html

首先,我们解决的情况是,已经有了一个正在开发的项目,现在我们要把他分享到git@osc上面去。

在git@OSC上创建仓库

先在Git@OSC上创建仓库,拿到Git@OSC仓库的HTTP连接http://git.oschina.net/***/***.git

把项目用git管理

如果我们的本地项目是非git项目,那我们要先把它变成git项目:在intellij中 VCS——Import into Version Control——Create Git Repository——选择你的本地项目。

执行git pull与push

1
2
3
4
5
6
7
8
# 给项目设置远程远程仓库 #  
git remote add origin http://git.oschina.net/***/***.git
# 把本地master指向origin/master
git branch --set-upstream-to=origin/master master
# 抓取远程仓库数据,并自动合并远程分支 #
git pull origin master
# 更新本地数据到Git@OSC #
git push origin master