Git 基本原理与常用命令
1、设置与帮助
1. git help <command> # 显示指定命令的help
2. git config --global user.name "your name"
3. git config --global user.email "your email"
2、修改与提交
1. git status # 查看工作区状态
2. git add <file> # 将指定文件修改提交到本地暂存区
3. git add . # 将所有修改过的文件提都交暂存区,不包括删除,"."即表示正则匹配所有字符
4. git add --all # 将所有工作区修改提交到暂存区,包括 delete 掉的文件
5. git add -A # 同上
6. git commit -m"comments" # 将暂存区的内容提交到本地库,并加上备注
7. git commit <file> # 提交暂存区指定文件
8. git commit . # 提交暂存区所有文件
9. git commit -a # 将git add, git rm和git commit等操作都合并在一起做,不包括新建文件
10. git commit -am "comments" # 同上+添加备注
3、撤销与恢复
1. git checkout -- <file> # 抛弃工作区指定文件的修改
2. git checkoout . # 抛弃工作区所有的修改
3. git reset <file> # 将指定文件从暂存区恢复到工作区
4. git reset -- . # 将所有文件从暂存区恢复到工作区
5. git reset --hard # 恢复最近一次提交过的状态,工作区所有修改被放弃
4、查看提交
1. git show # 显示某次提交的内容
2. git show $id
3. git log
4. git log <file> # 查看该文件每次提交记录
5. git log -p <file> # 查看每次详细修改内容的diff
6. git log -p -2 # 查看最近两次详细修改内容的diff
7. git log --stat # 查看提交统计信息
5、差异对比
1. git diff <file> # 比较当前文件和暂存区文件差异
2. git diff <$id1> <$id2> # 比较两次提交之间的差异
3. git diff <branch1>..<branch2> # 在两个分支之间比较
4. git diff --staged # 比较暂存区和版本库差异
5. git diff --stat # 仅仅比较统计信息
6、关于版本
1. git tag #查看版本
2. git tag [name] #创建版本
3. git tag -d [name] #删除版本
4. git tag -r #查看远程版本
5. git push origin [name] #创建远程版本(本地版本push到远程)
7、关于分支
1. git branch <new_branch> # 创建新的分支
2. git checkout <branch> # 切换到某个分支
3. git checkout -b <new_branch> # 创建新的分支,并且切换过去
4. git branch -v # 查看各个分支最后提交信息
5. git branch -r # 查看远程分支
6. git branch --merged # 查看已经被合并到当前分支的分支
7. git branch --no-merged # 查看尚未被合并到当前分支分支
8. git checkout $id # 把某历史提交checkout出来,无分支信息,切换到其他分支会自动删除
9. git checkout $id -b <new_branch> # 把某历史提交checkout出来,创建成一个分支
10. git branch -d <branch> # 删除某个分支
11. git branch -D <branch> # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)
8、关于远程仓库
1. git remote add origin <remote> # 添加远程库
2. git remote -v # 查看远程服务器地址和仓库名称
3. git remote show origin # 查看远程服务器仓库状态
4. git remote rm <repository> # 删除远程仓库
5. git push -u origin master # 客户端首次提交
6. git push -u origin develop # 首次将本地develop分支提交到远程develop分支,并且track
9、跟踪远程库和本地库
1. git branch --set-upstream master origin/master
2. git branch --set-upstream develop origin/develop
10、本地支持多个Git服务
cd /Users/chenyuan/.ssh
lrwxr-xr-x 1 chenyuan staff 42B May 23 2018 config -> /Users/chenyuan/Dropbox/Mackup/.ssh/config # 这里配置多个git对应关系
➜ .ssh cat config
Host git.coding.net # host
HostName git.coding.net
Port 22
User chengcheng222e
IdentityFile ~/.ssh/chengcheng222e_coding # 这里是coding.net的私钥路径
Host github.com # host
HostName github.com
Port 22
User chenyuan
IdentityFile ~/.ssh/github_rsa # 这里是github.com的私钥路径
11、推荐一个特别好玩的Git游戏~ Githug
Githug 安装和使用方法,一共有55关。
关卡列表
| 关卡名称 | 学习内容 | Git 命令 |
|---|---|---|
| 第1关 init | 初始化仓库 | git init |
| 第2关 config | 设置用户名和电子邮箱地址 | git config |
| 第3关 add | 把文件添加到暂存区 | git add |
| 第4关 commit | 提交 | git commit |
| 第5关 clone | 克隆远程仓库 | git clone |
| 第6关 clone_to_folder | 克隆远程仓库,并指定本地目录名 | git clone |
| 第7关 ignore | 配置不被 Git 管理的文件 | vim .gitignore |
| 第8关 include | 配置不被 Git 管理的文件 | vim .gitignore |
| 第9关 status | 查看仓库状态 | git status |
| 第10关 number_of_files_committed | 查看仓库状态 | git status |
| 第11关 rm | 删除文件 | git rm |
| 第12关 rm_cached | 从暂存区中移除文件,系 git add 的逆操作 | git rm --cached |
| 第13关 stash | 保存而不提交 | git stash |
| 第14关 rename | 文件改名 | git mv |
| 第15关 restructure | 整理目录结构 | |
| 第16关 log | 查询日志 | git log |
| 第17关 tag | 打标签 | git tag |
| 第18关 push_tags | 把标签推送到远程仓库 | git push --tags |
| 第19关 commit_amend | 修改最后一次提交 | git commit --amend |
| 第20关 commit_in_future | 指定提交的日期 | git commit --date |
| 第21关 reset | 从暂存区中移除文件,系 git add 的逆操作 | git reset |
| 第22关 reset_soft | 撤销提交,系 git commit 的逆操作 | git reset --soft |
| 第23关 checkout_file | 撤销对一个文件的修改 | git checkout |
| 第24关 remote | 查询远程仓库 | git remote |
| 第25关 remote_url | 查询远程仓库的 URL | git remote -v |
| 第26关 pull | 从远程仓库拉取更新 | git pull |
| 第27关 remote_add | 添加远程仓库 | git remote |
| 第28关 push | 把提交推送到远程仓库 | git push |
| 第29关 diff | 查看文件被修改的细节 | git diff |
| 第30关 blame | 查询每一行代码被谁编辑过 | git blame |
| 第31关 branch | 创建分支 | git branch |
| 第32关 checkout | 切换分支 | git checkout |
| 第33关 checkout_tag | 切换到标签 | git checkout |
| 第34关 checkout_tag_over_branch | 切换到标签 | git checkout |
| 第35关 branch_at | 在指定的提交处创建分支 | git branch |
| 第36关 delete_branch | 删除分支 | git branch -d |
| 第37关 push_branch | 推送分支到远程仓库 | git push |
| 第38关 merge | 合并分支 | git merge |
| 第39关 fetch | 从远程仓库抓取数据 | git fetch |
| 第40关 rebase | 变基合并 | git rebase |
| 第41关 repack | 重新打包 | git repack |
| 第42关 cherry-pick | 合并分支上指定的提交 | git cherry-pick |
| 第43关 grep | 搜索文本 | git grep |
| 第44关 rename_commit | 修改历史提交的说明 | git rebase -i |
| 第45关 squash | 把多次提交合并成一次提交 | git rebase -i |
| 第46关 merge_squash | 合并分支时把多次提交合并成一次提交 | git merge --squash |
| 第47关 reorder | 调整提交顺序 | git rebase -i |
| 第48关 bisect | 用二分法定位 bug | git bisect |
| 第49关 stage_lines | 添加文件的部分行到暂存区 | git add --edit |
| 第50关 file_old_branch | 查看 Git 上的操作历史 | git reflog |
| 第51关 revert | 取消已推送到远程仓库的提交 | git revert |
| 第52关 restore | 恢复被删除的提交 | git reset --hard |
| 第53关 conflict | 解决冲突 | |
| 第54关 submodule | 把第三方库当作子模块 | git submodule |
| 第55关 contribute | 捐献 |
把这个游戏全部通关,你的操作绝对又上N个台阶~
参考地址:
如果大家喜欢我的文章,可以关注个人订阅号。欢迎随时留言、交流。