使用Git仓库的原理:
不同于SVN,Git采用分布式的原理,即每一台电脑上都有完整的Git仓库代码,所以无论当前电脑有没有网络,都可以正常上传到本地的Git仓库,等到有网络的时候和远程仓库同步即可,这也是和SVN的最大的一个区别。
当我们Clone一份远程分支的代码到本地时,本地会同时生成一份完成的Git代码仓库(可以通过SourceTree来进行可视化的查看,develop、其他开发人员的分支都可见)。当我们修改完本地代码后,进行 add 命令,会将代码添加到git缓冲区(我们是感知不到的),然后进行 commit 命令,即会将修改上传到本地代码仓的分支。此时,其他开发人员通过远程分支是看不到我们的修改的,因为我们还没有将本地仓库的代码推送到远程仓库,这时我们可以进行 push 命令,会将本地仓库的特定分支的代码推送到远程仓库里的特定分支。至此,我们就完成了代码的修改、上传、更新操作。
命令行 + SourceTree 配合使用更加方便快捷哦!
1、撤销、回退本地修改
放弃对本地已经修改但是尚未提交的文件的修改,还原到其未修改前的状态
注⚠️:已经 add/commit 的文件不适用这个方法,可以手动或者利用SourceTree进行已修改代码的撤回,然后在进行"git add .", 在终端就能看到未修改任何代码了。
git checkout . //撤销所有已修改但未提交的文件的修改,但是不包括新增的文件
git checkout [filename] //撤销对指定文件的修改,[filename]为文件路径
2、回退版本
3、同步当前分支的最新代码(针对多人开发)
git pull //将当前远程分支上的最新代码同步到本地代码中
git pull origin [branchName] //取回远程某个分支的更新,与本地的代码进行合并
4、拉取某个特定分支的代码到本地
git clone -b [branchName] [git address .git] //[branchName]指的是需要拉取远程分支的路径,eg:origin/featureName,其中featureName是创建分支时自定义的分支名称;[git address .git]代表代码仓的完整路径
5、合并代码
git merge [branchName] //[branchName]分支名称,eg:origin/featureName,表示合入某个分支的代码;origin/develop,表示合入develop的代码,即将当前分支的代码同步到develop
注意⚠️:当我们将某个分支合并到当前分支时,一般不需要指定合入分支的版本,因为git会帮我们去检测并将本地没有的代码进行合入,例如拉取本地分支时版本是2345,则在merge时会将目标分支2345版本后的代码合进来。
merge后,我们执行命令git status来查看修改,此时没有冲突的话,则这些修改的文件都是其他成员的修改,我们只需要commit、push等就OK了;如果有冲突,则使用IDE解决冲突即可
6、切换分支
git checkout [branchName] //[branchName]表示分支名称,eg:git checkout develop、git checkout feature/myBranch
7、查看当前本地的修改
git status //红色显示的表示你修改的文件
8、将修改的文件添加到git缓冲区
git add [fileName] //添加某个特定红色显示的文件,提交到缓冲区
git add . //把所有修改的文件全部添加到git缓冲区
9、提交代码到本地仓库分支
git commit -m"修改内容说明"
10、将本地仓库分支的代码推送到远程分支
git push //完成push后,才表示本次修改的代码已经上传到了远程的修改分支上
git push origin [branchName] //将提交到本地git仓库的代码推送到远程某个分支上
11、查看当前分支的上传log记录
git log
12、查看当前的分支情况
git branch //当前本地代码可以关联的本地分支:绿色表示当前已关联的本地分支,黑色表示本地仓库存在的可关联的分支
git branch -a //红色表示当前远程仓库中的分支信息