Git sheet

basic

1
2
3
4
5
6
7
8
$ git status                                    # 检查文件当前的状态
$ git add [文件名] # 追踪新的文件
$ git diff --cached # 若要看已经暂存起来的文件和上次提交时的快照之间的差异
$ git commit -m "Story 182: Fix benchmark" # 用一行命令提交更新
$ git commit -a -m 'added new benchmarks' # 跳过add命令直接提交
$ git rm --cached log.log # 从git仓库中删除不小心追踪的文件(用于gitignore之前追踪的文件)
$ git mv file_from file_to # 移动文件/重命名文件
$ git log# 查看历史操作

关联远程仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ git init                                      # 初始化这个本地的文件夹为一个Git可以管理的仓库
$ git remote add origin https://[地址] # 将本地的仓库和远程的仓库进行关联
$ git pull <远程主机名> <远程分支名>:<本地分支名> # git pull origin master:master
$ git add
$ git commit -m
$ git push -u origin master(首次关联加u,后续不用)
$ git push origin master
$ git clone https://github.com/。。。


$ git rm --cached "文件路径",不删除物理文件,仅将该文件从缓存中删除
$ git rm --f "文件路径",不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶)
$ git commit -m "delete file"
$ git push

branch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 git branch                                    # 查看分支
$ git branch new-branch-name # 创建新分支
$ git branch -v # 查看各分支最后一个提交对象
$ git branch --merged # 查看已经merge过的分支
$ git branch --no-merged # 尚未merge的分支
$ git branch -d testing # 删除掉分支(如果还没有merge,会出现错误,-D可以强制删除)

$ git branch -a # 查看所有分支(包括远程服务器)
$ git push [远程仓库名] [本地分支名]:[远程分支名] # 推送本地分支到远程分支
# 如果本地分支名为空,则会直接删除远程分支名
$ git checkout -b iss53 # 新建分支并切换到新分支 =$ git branch iss53; git checkout iss53
$ git reset 版本号
$ git cherry-pick [id] # 合并某一个单独的commit

# 创建并在branch上修改之后,在代码仓库界面,可以在pull request选项中,选择是否merge pull request,合并该分支的修改

organization

1
2
3
4
5
6
7
# 远程创建organization:New organization

# organization中选择Team,创建管理小组

# 新建代码仓库,归属于organization,在setting中设置Team权限,合作者权限

# pull request中加入@TeamName可以通知所有人

opensource

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 添加LICENSE,可使用template模板创建

# 贡献开源项目,可以首先查看issue中是否有已经出现的相同问题

# fork仓库,然后git clone到本地

$ git checkout -b fix-bug # 新建分支并切换到新分支

# 修改

$ git add .
$ git commit -m "message"
$ git push origin fix-bug

# 在fork项目中 点击New pull request,向原项目提交更改

log

1
2
$ git log --pretty=format:"%h - %an, %ar : %s"  # 用特性的format查看log
$ git log --graph # 用图表的形式显示git的合并历史

config

1
2
3
4
$ git config --global user.name "John Doe"      # 配置用户名 !仅第一次必须
$ git config --global user.email je@example.com # 配置电邮 !仅第一次必须
$ git config --list # 查看配置信息
$ git config --global alias.stash-unapply '!git stash show -p | git apply -R' # 设置别名

stash

1
2
3
4
5
6
$ git stash                                     # 储藏当前工作内容
$ git stash list # 查看所有已经储藏的内容
$ git stash apply [stash@{0}] # 在当前工作区应用储藏的内容,默认最新
$ git stash apply --index # 在当前工作区应用储藏的内容,并保持之前暂存区的状态
$ git stash drop # 删除一个储藏
$ git stash pop # 弹出一个储藏

rejected问题

1
2
3
4
5
# 通常是因为在远程仓库中更改了,而本地没有修改,造成冲突。一般先在本地先pull再push,不会出现这样的问题。

$ git fetch origin
$ git rebase origin/master
$ git push

ssh密匙问题,没有权限访问仓库

1
2
3
4
5
6
7
8
9
# 重新设置ssh key

git config --global user.name 'racleray'
git config --global user.email 'racleme@outlook.com'
ssh-keygen -t rsa -C 'racleme@outlook.com'

# 在home目录找 .ssh/id_rsa.pub

# 在github网站的SSH keys添加new key

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!