下载
git下载地址:https://git-scm.com/downloads
TortoiseGit(图形化工具)下载地址:https://tortoisegit.org/download/
认识git结构
工作区:存放代码的地方
暂存区:临时存储,将工作区的代码让git知道,通过git add将代码放到暂存区
本地库:将暂存区的代码提交到本地库,就会生成对应的历史版本,这个代码就无法删除
远程库:将本地库的代码推送到远程库
git常用的命令
git config --global user.name 用户名 设置用户名
git config --global user.email 邮箱 设置用户邮箱
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m " 日志信息" 文件名 提交到本地库
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭
git命令行操作
git在安装好之后,右击鼠标,会出现Open Git Bash here,这里是打开本地的git命令行终端的位置。
设置用户名和邮箱的作用是,之后再向服务提交数据的时候,标注作者,在每一个版本的提交信息中可以查看到。
其中 --global 是⼀个可选项。如果使⽤了该选项,表⽰这台机器上所有的 Git 仓库都会使⽤这个配置。如果你希望在不同仓库中使⽤不同的 name 或 e-mail ,可以不要 --global 选项,但要注意的是,执⾏命令时必须要在仓库⾥。
在这里设置好用户的名称和邮箱之后,使用cat ~/.gitconfig可以查看本地的作者名称和邮箱信息。
初始化本地仓库
使用git init的作用是获取当前目录的管理权。
首先,我们在当前文件夹下进行上图操作,显示当前文件夹下影藏文件。这个时候,当前文件夹是没有隐藏的文件的。
然后我们在命令行终端执行git init
可以看见,这里出现了.git的隐藏文件夹。.git文件夹是Git跟踪管理仓库的,不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库破坏了。
查看本地库状态
git status
在当前目录下,创建文件
然后再次查看本地库状态
这里的红色,表示工作区存在文件,但是git从未追踪过这个文件。
添加暂存区
git add 文件名
使用git add将文件添加至暂存区之后,让后再次查看本地库状态,这个文件就变成了绿色。
提交本地库
git commit -m " 日志信息" 文件名
使用git commit -m '日志信息'命令之后,再查看本地库的状态,绿色的文件消失了。使用git reflog查看提交的日志信息,使用git log查看完整的提交日志信息。
git命令行完整操作
修改当前文件内容
查看本地库状态
git追踪到工作区的文件修改,将该文件标红。
将文件添加到暂存区
文件有红色变为绿色
将文件提交到本地库,查看本地库状态,工作区文件就处理好了
历史版本
查看历史版本
git reflog 查看版本信息
git log 查看版本详细信息
版本回退
git reset –hard 版本号
Git 切换版本, 底层其实是移动的 HEAD 指针。
git分支操作
分支操作命令
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上
查看分支
git branch -v 查看分支
当前只有主分支。
创建分支
git branch 分支名 创建分支
创建分支,再使用git branch -v查看分支,如上。现在有了两条分支,且工作分支还是在主分支上,主分支显示为绿色。
切换分支
git checkout 分支名 切换分支
现在分支已经切换到了branchTest上了,对应分支也变成了绿色了。
修改文件内容如下
git检查本地库状态
可以看见,在刚刚新建的分支上,检查到工作区上有修改的文件。
将修改的文件添加至暂存区,在提交到本地库中。
合并分支
git merge 分支名 把指定的分支合并到当前分支上
这里将在master分支上合并branchTest分支。
切回master分支上
再合并branchTest分支
现在再查看test.txt文件的内容,如下
冲突
产生冲突
冲突产生的表现: 后面状态为 MERGING
冲突产生的原因:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。 Git 无法替我们决定使用哪一个。必须人为决定新代码内容。
查看状态(检测到有文件有两处修改)
首先在master分支上修改test.txt文件,修改如下
切换到branchTest分支上,修改test.txt文件,修改如下
再回到master分支上合并branchTest分支
这个时候就可以看见已经产生了冲突
解决冲突
特殊符号: <<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> branchTest
修改文件如下
接下来再将文件添加至暂存区,提交到本地库。
注意:我们修改的只是master分支的内容,hot-fix分支的内容没有发生改变。
远程仓库操作
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 起别名(第一次)
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地(第一次)
git pull 远程库地址别名 远程分支名 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
创建远程仓库别名
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址
拉取远程仓库内容
git pull 远程库地址别名 远程分支名 (将远程仓库对应分支最新内容拉下来后与当前本地分支直接合并)
首次拉取会出现错误,Git 认为你的本地分支和远程分支的提交历史是完全独立的,因此拒绝合并。
解决办法:使用git pull 拉去远程分支加上--allow-unrelated-histories选项
过程中会自动打开一个文件,键盘输入:q推出即可
然后,在本地文件夹中就能看见远程分支中的文件了。
推送本地分支至远程仓库
git push 别名 分支 (推送的最小单位是分支,所以一定要指定分支)
将本地的master分支推送至远程仓库
首先本地分支切换到master分支,然后将master分支推送至远程仓库。
这里就推送成功了。再远程仓库中也能查看到刚刚提交的文件。
克隆远程仓库至本地
git clone 远程地址 将远程仓库的内容克隆到本地(第一次)
我们将远程仓库克隆至桌面上。
首先在桌面上打开git终端,然后在gitee仓库中拿到仓库地址
然后再去桌面打开的git终端上进行命令行操作
打开文件,可以看见文件夹的内容和远程仓库都是一样的了。
图形化界面操作
建立本地仓库
建立本地仓库有两种方式。git init 方式和git clone 方式
git init方式
新建立一个tortoiseTest目录,进入目录,然后右键点击 Git Create repository here , 会自动生成一个.git 隐藏目录。
然后弹出一个对话框,选择ok
现在目录下就产生了一个.git隐藏目录结构了
git clone方式
这时候会弹出一个框 , URL 是远程仓库的地址,Directory 是存放在哪个目录下。
完成之后点击close关闭
接着在目录下就会出现远程仓库克隆的副本
提交代码
在刚刚克隆的本地仓库中新增一个文件tortoiseGit.txt文件
首先将文件添加到暂存区中,右键选择Git add
在弹出的对话框中选择ok
继续选择ok
查看版本库
右键,选择tortoiseGit,然后选择Repo-browser
然后就能看见已经将文件提交至了版本库中了
续上刚刚的提交代码部分,继续右键选择Git Commit
在Message输入提交信息,选择commit
接着选择push
然后选择本地和远程对应需要的分支,点击ok
然后文件就提交完成了,点击close
在远程仓库中就能查看到刚刚提交的文件了
更新代码
首先在远端文件进行修改
回到本地仓库中,右键,选择 pull
选择远端仓库的名称和分支,然后点击ok
接着就把远端仓库的文件更新至本地仓库了。选择close
查看本地仓库的文件,就能看见刚刚在远端修改的文件,在本地也更新了
回滚版本
右键,选择tortoiseGit,然后选择show log
选中某个版本右键点击 Reset master to this 即可
接下来出现的对话框选择ok
回滚完成,选择close
查看版本库,里边就没刚刚的tortoiseGit.txt文件了
创建分支
右键点击Create Branch
输入新建分支的名称,然后点击ok
切换分支
右键点击checkout
选择刚刚创建的分支名
然后选择close
合并分支
解决冲突
首先我们构建一个冲突,比如我之前在分支master上提交了一次代码,然后我在另外一个文件夹上在没有拉取的情况下也修改了同一处地方,然后提交的时候,会提示我们先拉取分支,然后再提交,拉取后又提示我们先要解决冲突,
在远端仓库做以下修改
然后在本地仓库做以下修改
然后将本地的文件推送至远端仓库上,就会产生冲突,这里提示在推送之前先整合远端仓库的变化。
然后我么在拉取远端仓库的文件,就发生了冲突。因为远端仓库的修改和本地的修改并不相同,需要人为的选择。
在本地文件中修改冲突
修改如下
选择resolve解决,点击ok
选择提交
小的对话框点击确定,
写入自己的提交信息
然后提交
推送至远端仓库
点击close完成推送,然后查看远端仓库文件信息
再查看本地文件信息,文件颜色变绿了
忽略上传文件列表
添加忽略文件
在本地仓库新建一个需要忽略的文件
现在右键选择git add,可以看见git是能检查出当前工作区内容的变化的
现在,选择cancel,回到目录。选中需要忽略的文件,右键选择TortoiseGit,选择add to ignore list,然后后边有两个选项,一个是忽略当前文件,另外一个是忽略当前文件后缀的所有文件。按照你的需求进行选择。
然后选择忽略类型和忽略文件存放的位置
然后该目录就生成了对应的忽略文件
点击查看忽略文件内容,我们刚刚的文件就被加进去了。
现在再去查看工作区,就已经干干净净了
然后,现在需要把新的忽略文件提交至远程仓库。直接选择git commit,添加提交信息推送至远程仓库
推送成功
在远端查看新的忽略文件
将忽略的文件再次提交
在本地的忽略文件中将忽略文件的信息删除
然后选择git add,将工作区的文件添加至暂存区
可以看见,忽略文件又能被git检测出来了。选择git commit
推送至远程仓库,
成功之后,查看远程仓库中,就有了刚刚被忽略的文件。