30 分钟熟练使用 GIT
前言
我以前一直使用
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.git
git 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 -f
git clean -nf
删除untracked files
git clean -fd
git clean -nfd
连untracked
的目录也一起删掉git clean -xfd
git clean -nxfd
连gitignore
的untrack
文件/目录也一起删掉- 在用上述
git clean
前,加上-n
参数来先看看会删掉哪些文件,防止重要文件被误删 git rm --cached -r Colipu.B2B.UserHome\Properties\PublishProfiles
删除不需要提交的目录git rm --cached <FILENAME>
如果.gitignore
忽略规则创建于文件提交代码库之后,则.gitignore
规则不会影响目前所提交的文件(不会自动把文件从服务器端删除掉), 需要手动删除,<FILENAME>
即为要移除的文件全名。- 执行命令后,需要执行
git push
命令
git reset HEAD -- .
撤销所有git reset HEAD -- filename
撤销特定目标git rm -cached filepath
将文件从缓存中删除
-
step5
代码合并git merge <name>
合并指定branch
git 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