前言
我以前一直使用
vs和sourcetree管理git,虽然sourcetree用起来也很爽,但是随着本地的源代码越来越多,sourcetree用起来也越来越力不从心。最近刚好重装系统,于是我只安装了git客户端 ,强迫自己使用git命令,感觉工作效率提升了不少,顺便总结了一些常用的git命令。
-
好用的
cmder- 真香 。。。
-
配置
SSH秘钥- 这玩意配置一次长久使用,没必要记忆
- 创建新的
ssh key: 输入ssh-keygen -t rsa -C my_email@email.com执行这条命令会如上图提示文件保存路径,可以直接按Enter- 在
C:Users\%name%.ssh中打开公钥id_rsa.pub
- 在
github or gitlab配置ssh key- 用记事本打开
.ssh目录下的id_rsa.pub文件,复制ssh key到github : On the GitHub site Click “Account Settings” > Click “SSH Keys” > Click “Add SSH key”
- 用记事本打开
- 测试
ssh链接github- 输入
ssh -T git@github.com,出现Successfully就 OK
- 输入
- 设置自己的
git信息git config --global user.name "Firstname Lastname"此处 name 可修改也不是用于登录 github 的登录名git config --global user.email "your_email@youremail.com"git config --list查看自己的git信息
常用命令
-
step1本地获取远程代码git clone xx.gitgit clone xx.git --depth=1- depth=1,就会只 clone 最后一次 commit 的内容
- 获取 github 代码时, 如果网络环境比较恶劣,可以不需要获取commit 记录
-
step2查看分支和操作分支git branch列出本地所有分支git branch -a列出所有分支,包含远程分支git checkout master切换到master分支git checkout -b test origin/test在本地创建指定远程分支origin/test在本地的副本git checkout tag-name选择指定tag, 工作中用的少git pull只更新当前分支git pull origin branch : branch将远程分支合并至指定分支git pull origin branch将远程分支合并至当前选中分支
git remote update origin --prune拉取更新远程分支列表git branch -d <branch_name>删除分支git branch -D <branch_name>强制删除分支
-
step3签入变更集git status查看本地文件状态,此命令会列出所有变更文件git add .暂存所有更新git commit -m "info"从缓存更新到本地仓库git push推送本地变更git push origin master提交远程仓库git push -f origin master加入-f参数,强制提交,远程端将强制跟新到reset版本push报错,需要取消 分支保护选项Settings => Repository => Protected Branches => Unprotect
- 版本回退完毕后,在
gitlab项目设置,protected branches里设置回master的protected
-
step4代码撤销git checkout .撤销本地修改git clean -fgit clean -nf删除untracked filesgit clean -fdgit clean -nfd连untracked的目录也一起删掉git clean -xfdgit clean -nxfd连gitignore的untrack文件/目录也一起删掉- 在用上述
git clean前,加上-n参数来先看看会删掉哪些文件,防止重要文件被误删 git rm --cached -r Colipu.B2B.UserHomePropertiesPublishProfiles删除不需要提交的目录git rm --cached <FILENAME>如果.gitignore忽略规则创建于文件提交代码库之后,则.gitignore规则不会影响目前所提交的文件(不会自动把文件从服务器端删除掉), 需要手动删除,<FILENAME>即为要移除的文件全名。- 执行命令后,需要执行
git push命令
git reset HEAD -- .撤销所有git reset HEAD -- filename撤销特定目标git rm -cached filepath将文件从缓存中删除
-
step5代码合并git merge <name>合并指定branchgit merge <name> --squash- 将
branch下所有变更统一合并到当前branch。真香。
- 将
-
config
git config -l用来查看配置信息git config --global user.email zhangmaosong@colipu.com设置邮箱git config --global user.name zhangmaosong设置名称
-
恢复代码
git branch new_branch_name commit_id通过 commit_id 创建新的分支git reset --hard commit_id将当前分支重置到 commit_id 那个节点- 修复数据后台,可以通过
git pull重新更新后续变更集
- 修复数据后台,可以通过
git push -f origin <branchname>强制推送变更集
-
其他
git diff origin <master>比较当前分支和远程分支差异git log显示所有提交过的版本信息 //q退出git reset --hard fb479960c0cec5549463ae123d70bdd72ccf6be7通过commit id回退
git tag查看标签git show v1.3.5查看某个标签的详情git config --global core.autocrlf false修改 git 全局配置,禁止 git 自动将 lf 转换成 crlfgit reflog |grep 'branch-name'git checkout -b branch-name HEAD@{14}恢复删除的分支
git rebase -i commitid--rebase commitid 之前的记录git commit --amend-- 变更 commit 备注:wq保存文件:q不保存文件退出
镜像地址
https://gitee.com/mirrors码云极速下载git config --system core.longpaths true查看设置状态是否修改成功git config core.longpaths