git安装后-指定名称和邮箱
$ git config --global user.name “Your Name”
$ git config --global user.email “email@example.com”
本地初始化GIT 仓库:
#基于远程仓库克隆至本地
git clone <remote_url>
#当前目录初始化为git 本地仓库
git init “directory”
把文件添加add和提交commit到版本库
本地添加
#添加指定文件至暂存区
git add “fileName”
#添加指定目录至暂存区
git add “directory”
#添加所有
git add -A
#将指定目录及子目录移除出暂存区
git rm --cached target -r
#添加勿略配置文件 .gitignore
本地提交
#提交至本地仓库
git commit file -m ‘提交评论’
#快捷提交至本地仓库
git commit -am ‘快添加与提交’
分支管理
#查看当前分支
git branch [-avv]
#基于当前分支新建分支
git branch “branch name”
#基于提交新建分支
git branch “branch name” “commit id”
$ git branch -d {dev}
#切换分支
git checkout “branch name”
#查看当前分支
$ git branch
#合并分支
git merge “merge target”
#注:解决冲突,如果因冲突导致自动合并失败,此时 status 为mergeing 状态.需要手动修改后重新提交(commit) (创建临时目标分支并切换到临时目标分支上,merge 原分支,再status查看冲突位置并解决,最后push提交)
#删除dev分支
$ git branch -d dev //
$ git push origin master(dev) //推送分支
$ git checkout -b dev origin/dev //创建远程origin的dev分支到本地
$ git pull //抓取分支(解决冲突)
$ git branch --set-upstream-to=origin/dev dev//指定本地与远程dev的链接
$ git rebase //把本地未push的分叉提交历史整理成直线
版本控制
$ git log //查看提交历史记录,从最近到最远,可以看到3次
$ git log --pretty=oneline //加参,简洁查看
$ git reflog //查看每一次修改历史
$ cat test.txt //查看文件内容
$ git status //查看工作区中文件当前状态
$ git reset --hard HEAD^(HEAD~100)(commit id) //回退版本
$ git checkout – test.txt //丢弃工作区的修改,即撤销修改
$ git reset HEAD test.txt //丢弃暂存区的修改(若已提交,则回退)
版本回退
回退已经提交的版本
git reset --hard
如果已经向仓库提交了代码,并且想要回退提交的版本,可以使用 --hard 参数。(使用后要push提交)
回退执行结果
回退项目版本时,可以运行 git revert 命令,该命令会回退指定版本的修改,并创建一个新的提交来存储这些被撤销的更改。(再当前版本的基础上新增一个版本,不影响以前的代码;revert回退是使用cherry-pick)
例如,执行以下命令将会撤销提交和修改,将代码回退到特定提交:
git revert --no-commit <commit>..HEAD
这个命令将撤销到HEAD期间的所有更改,并创建一个新的提交来存储这些变更。
回退到某个特定的版本
如要回退版本到某个特定的提交点时,可以使用下面的命令:
git reset <commit>
其中,是你要回退到的版本的 SHA 校验和或版本号。
也可以使用HEAD来代替。HEAD指向当前版本,仅仅修改 HEAD 的指向,不改变工作区的内容。
$ git reset --hard 1094a #回退到特定版本号,并删除工作区和缓存区的修改
如果要回退到上一个版本,可以使用以下 Git 命令:
git reset HEAD^
$ git reset --soft HEAD^ #恢复上一个版本,保留工作区,缓存区准备再次提交commit
如果想回退更多个版本,用 HEAD~n 即可,比如回退到前5个版本:
git reset HEAD~5
参数 | 功能 | 场景 |
---|---|---|
–hard | 清空工作区与缓存区 | 放弃目标版本后所有的修改 |
–soft | 保留工作区与缓存区,但是把版本之间的差异存放在缓存区(不撤销git add的操作) | 合并多个commit |
–mixed(或缺省) | 保留工作区清空缓存区,把版本之间的差异存放在工作区 | 1、有错误的commit需要修改;2、git reset HEAD清空缓存区 |
$ git reset --hard HEAD #恢复当前版本,删除工作区和缓存区的修改
$ git reset --mixed HEAD #恢复当前版本,保留工作区,清空缓存区
案例说明
比如commit提交最新到最旧为: D C B A
(1)回退到B,CD不要了,====>版本回退:git reset --hard B
(2)撤销B的提交,其余保留, ====>版本撤销:git revert B
(3)取消对b提交的撤销,B重新回来, ====>git cherry-pick B
Git rebase回退
git reflog 先查看本地提交操作编号。
找到提交前的项目编号,例如4c173eb HEAD@{3}: commit: scan ,执行:git reset --hard 4c173eb
Git cherry-pick回退
git cherry-pick --abort.
远程仓库
$ ssh-keygen -t rsa -C “youremail@example.com” //创建SSH Key
$ git remote add origin git@github.com:Daisy/AKgit.git //关联
$ git push -u origin master //将本地内容推送到远程仓库(第一次)
$ git push origin master //将本地内容推送到远程仓库(之后)
$ git remote -v //查看远程仓库信息
$ git remote rm origin //删除远程仓库(解绑)
$ git clone git@github.com: Daisy/AKgit.git //克隆远程仓库
//克隆之后使用和查看
$ cd gitskills
$ ls
$ git remote //查看远程库的信息
$ git remote -v //查看远程库的详细信息