以Windows为例:
- 从 Git官网 直接下载安装程序,然后按 默认 选项安装
- 若 在点击左下角的windows图标后 能够找到 “Git”-“Git Bash”,并且打开后出现类似 cmd 的窗口,则安装成功。
- 打开 Git Bash【git bash中可以输入 Linux命令,相当于 linux中的终端】
- 输入
git config --global user.name "用户名"
- 输入
git config --global user.email "邮箱地址"
- git 是分布式的版本控制系统,在本地和远程 各有1个版本库,工作时可以不用联网
- svn 是集中式的版本控制系统,是多个人共用1个版本库,工作时需要联网
【创建之后的大部分命令都在版本库文件夹下输入】
- 创建的文件夹,用于充当版本库【1个名为 testRepo 的版本库】,
cd e:
mkdir testRepo
- 初始化版本库
【初始化后生成 .git 隐藏文件,该文件不能动,否则会破坏版本库】
cd testRepo
git init
【以在 testRepo 文件夹中 创建1个名为 readme.txt 的文件为例】
//创建1个名为 readme.txt 的文件,并输入内容,保存
git add ./readme.txt
git commit -m "描述信息,一般描述修改的内容"
git状态:指 是否提交,是否推送 等状态
git status
【查看 当前工作区的文件(此时还没有 git add)与原来相比有不同】
查看所做的更改
git diff readme.txt
确认无误后,git add,和git commit
即:查看历史 commit 记录。越上面,记录越新
//详细显示
git log
//简要显示
git log --pretty=oneline
//回退到上一个版本
git reset --hard HEAD^
//回退到上两个版本
git reset --hard HEAD^^
//回退上100个版本
git reset --hard HEAD~100
git reset --hard 版本号
如:git reset --hard 6dsd2152
//查看版本号
git reflog
//根据版本号以回退版本
git reset --hard 版本号
git reset --hard HEAD^
//直接使用撤销命令
// 注意:命令中的 -- 很重要,有--是撤销,没有--是切换分支
git checkout -- readme.txt
直接删除,然后 commit
//删除
rm ./abc.txt
git commit -m "删除了当前目录下的abc.txt文件"
//撤销删除
git checkout -- abc.txt
使用远程仓库需要先在 github、gitee 等 代码托管网站先注册账户
以 gitee 为例
- 进入用户的主目录
C:\Users\admin
- 查看 是否有 .ssh文件夹 及 .ssh文件夹内 是否 有
id-rsa
和id_rsa.pub
2个文件。如果没有,则 进行第三步- 打开 git-bash,输入
ssh-keygen -t rsa –C “邮箱”
,生成上述的 2个文件- 用记事本打开
id_rsa.pub
文件,全选后复制- 浏览器打开 gitee 并登录
- 进入 gitee, 设置 =》 安全设置 =》SSH公钥
- 输入标题【标题随便写】
- 公钥就是刚才从
id_rsa.pub
中复制的内容- 点击 确定
- 点击gitee 右上角的+ =》 新建仓库
- 输入仓库名称【需要和本地版本库的名称一致(文件夹名)】
- 其他项可以默认
- 点击 创建
- 根据提示输入命令
// 以下仅为示例
// origin为本地仓库与远程仓库的链接的名字,代表了1个仓库,
// 因此,账户中有多个不同项目的仓库时,把origin换成不同的名字。
// 添加remote时的仓库名格式(ssh):
// git@托管网站的域名:用户名/仓库名.git
// 在 本地建立 与 远程仓库 的链接。
git remote add origin [email protected]:admin/testRepo.git
// 第一次推送需要 -u,之后可以不用
git push -u origin master
// 第2次及以后的推送
git push origin master
// 如果推送时发生冲突,可能是因为远程和本地的内容有部分不一致.
// 解决办法1:先pill,再合并,再解决冲突,再推送
git pull origin master
// 解决办法2【pull也失败时】:先建立分支与远程库之间的关联
git branch --set-upstream dev origin/dev
git pull
//解决冲突后,再add、commit、push
远程库的信息都是成对出现的,包括:
//查看远程库的信息
git remote
//查看远程库的详细信息
git remote -v
cd 进入要存放代码库的文件夹
git clone [email protected]:admin/testRepo.git
git remote rm origin
Git 将 每次的提交串成1条时间线,master就是这条 主时间线的名字,HEAD 指向 master,master指向提交。创建并合并分支类似于将master复制 1份,在分支上修改后,再用分支的内容覆盖掉原来的master。
master分支:一般存放稳定的版本,开发和修复bug一般创建新的分支,在分支上操作。
//创建并切换到分支
git checkout -b 分支名
//上面1句命令 等价于
git branch 分支名
git checkout 分支名
//查看分支,其中,分支名前带*,表示当前为该分支
git branch
默认情况下,git 使用 Fast-forward(快进模式)来合并分支
git merge –no-ff -m “注释” 分支名
// 1. 先切换到 master分支
git checkout master
// 2. 再合并[【其中,dev为我们自建创建的分支的名字】
git merge dev
// 删除分支
git branch -d 分支名
情景: 创建1个名为dev的分支,在dev分支上修改并提交,然后切换回master分支,如果在master上再进行与dev分支不同的修改并提交,则合并 master与dev 时,会出现冲突。
解决步骤:
git log
查看合并情况// 创建分支
git checkout -b dev
git add readme.txt
git commit -m "add merge"
// 关闭快进模式,并合并
git checkout master
git merge --no-ff -m "关闭快进模式" dev
// 删除分支
git branch -d dev
// 查看分支
git branch
// 查看删除分支后 是否仍然保留分支号
git log --graph --pretty=oneline --abbrev-commit
需要临时做其他分支的工作但又因为手中的事情还没做完不能提交时,可以使用隐藏现场功能,隐藏现场后,查看状态时,可以发现状态是干净的。
//隐藏现场
git stash
//查看状态
git status
//查看隐藏的现场
git stash list
1.git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
2.另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
//方法1
// 还原现场,然后删除最新的一条现场记录
git stash apply
git stash drop
//方法2
// 还原现场并删除记录
git stash pop