本文总结了常见的git使用命令,以及对日常开发过程中常用的操作进行了描述.
0x01. 网上翻出的命令分类
1 2
| $ git clone <url> $ git init
|
1 2 3 4 5 6 7 8 9
| $ git status $ git diff $ git add . $ git add <file> $ git mv <old><new> $ git rm<file> $ git rm --cached<file> $ git commit -m "commit messages" $ git commit --amend
|
1 2 3
| $ git log $ git log -p <file> $ git blame <file>
|
1 2 3 4
| $ git reset --hard HEAD $ git checkout HEAD <file> $ git revert <commit> $ git log --before="1 days"
|
1 2 3 4 5 6 7 8
| $ git checkout -b <branchName> origin/<branchName> $ git branch $ git checkout <branch/tag> $ git branch <new-branch> $ git branch -d <branch> $ git tag $ git tag <tagname> $ git tag -d <tagname>
|
1 2
| $ git merge <branch> $ git rebase <branch>
|
1 2 3 4 5 6 7 8 9 10 11 12
| $ git remote -v $ git remote show <remote> $ git remote add <remote> <url> $ git fetch <remote> $ git pull <remote> <branch> $ git push <remote> <branch> $ git push <remote> :<branch/tag-name> $ git push --tags
$ git fetch origin 远程分支:本地分支
$ git pull origin <remoteBranchName>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ git cherry-pick [<options>] <commit-ish>
--quit --continue --abort -n, --no-commit -e, --edit
$ git cherry-pick <commit_hash>
$ git cherry-pick --abort
$ git cherry-pick --continue
|
cherry-pick 的多次提交
1 2 3 4
| $ git cherry-pick cmmitID1..cmmitID2
$ git cherry-pick cmmitID1^..cmmitID2
|
0x02. 开发中的常用命令
1 2 3 4 5 6
| # 添加暂存文件 $ git add index.html # 添加提交及提交信息 $ git commit -m "修改/新增内容注解" # 推送至远程 $ git push
|
0x03. 储存工作区
概念: 当你想使现在当工作区保持在未修改前的状态时可以使用暂存功能,贮藏会把所有未提交的修改(包括暂存的和非暂存的)都保存起来.
应用场景:
当你想推送代码时,发现分支已有别人提交当代码(处于分支落后时),可以先暂存代码然后再拉去最新当代码,代码拉取完成并且没有冲突时可以将贮藏区保存的内容应用到当前工作区
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 存储工作区 $ git stash # 存储工作区并添加备注内容 $ git stash save 'development' # 查看已贮藏区列表 $ git stash list # 应用最新贮藏的内容(应用后不删除该贮藏) $ git stash apply # 应用最新贮藏的内容(应用后该贮藏的内容会被删除!) $ git stash pop # 删除最新贮藏的内容 $ git stash drop # 清除所有的缓存 $ git stash clear
|
注意: 以下命令都可以指定操作任意一个已贮藏的内容,只需要在后面跟入stash@{1}索引,输入git stash list 查看索引
0x04.回撤版本
应用场景:
当不小心将错误当代码推送到远程仓库想要回撤并且不留下版本记录时
GUI操作:
选中要回撤到到版本,点击重置到这次提交,此时本地版本将会重置到该版本,并且落后于远程分支
最后使用命令行强制推送git push --force origin master
,将本地代码强制覆盖到远程仓库
命令行:
1 2 3 4
| # 将版本重置到634b64d版本,或者 git reset --soft HEAD^ 将版本重置到上一个版本,git reset --hard 634b64d 命令则不会保存之前提交到内容 $ git reset --soft 634b64d # 强制覆盖远程仓库 $ git push --force origin master
|
0x05.回滚版本
应用场景:
1 2 3 4
| # 查看指定文件的历史版本 git log <filename> # 回滚到指定commitID git checkout <commitID> <filename>
|
1 2 3 4
| # 当前Head指针指向当前分支的最新节点 $ git revert HEAD # 推送到远端 $ git push origin <branch>
|
1 2 3 4
| # 找到要回滚的commitID $ git log # 回滚 git revert commitID
|
0x06.打标签
标签的作用, 可以用来标记版本信息, 标记特殊的提交记录等. 下面是关于标签的常用命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 查看已有的标签 $ git tag ****操作本地仓库标签****** # 为最新的提交记录创建名为'v1.0.0'的标签 $ git tag v1.0.0 # 为版本号1452113的提交记录创建名为'v1.0.0'的标签 $ git tag v1.0.0 1452113 # 删除本地仓库名为'v1.0.0'的标签 git tag -d v1.0.0 ****操作远程仓库标签****** # 将名为'v1.0.0'的标签推送到远程仓库 git push origin v1.0.0 # 删除远程仓库里名为'v1.0.0'的标签 git push origin :refs/tags/v1.0.0
|
0x07.新分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 查看分支 $ git branch # 在当前分支基础上,以最新版本创建名为'dev'的分支 $ git branch dev # 以'd519940'版本记录,创建名为'dev'的分支 $ git branch dev d519940 # 切换到'dev'分支 $ git checkout dev # 创建并切换到'dev'分支 $ git checkout -b dev # 删除'dev'分支(删除分支时不能处于所要被删除的分支上) $ git branch -d dev # 强制删除'dev'分支(分支还没有被合并时需要强行删除,强行删除后将丢失已修改的内容) $ git branch -D dev ******操作远程仓库******** # 将本地分支'dev'推送到远程仓库命名为'dev',(本地分支名:远程分支名) $ git push origin dev:dev # 删除远程'dev'分支 $ git push --delete origin dev
|
0x08.合并分支
1 2 3 4
| # 切换至master分支 $ git checkout master # 合并de分支至master分支 $ git merge de
|
0x09.查看修改记录
1 2 3 4 5 6
| $ git log index.html
$ git log -p index.html
$ git log --oneline -3
|
0x0A. git远程仓库的迁移
- 在代码托管服上创建一个空项目, 假装仓库地址是:
1
| git@xxx.xxx.xx.xx:<groupName>/<projectName>.git
|
- 将远程仓库克隆一份到本地
1
| $ git clone <git/http>xxx.git
|
- 在Gitlab或者其他托管平台删除远程仓库(保不保留按照实际情况走就行了)
- 删除本地仓库的远端
- 将本地仓库关联到最新的远端地址
1
| git remote add origin git@xxx.xxx.xx.xx:<groupName>/<projectName>.git
|
- 将本地记录推送到远端
1
| $ git push -u origin master
|
(完)