作为一个新手去用GIT协作开发,肯定是一脸懵逼。
小弟也是众多新人的一位,这不刚刚整懂!刚刚把自己教明白!特此来帮助大家
也建议大家先会用GIT命令,在去使用第三方工具:SourceTree、TortoiseGit、idea自带工具等等。
Workspace 工作区
Index/Stage 暂存区
Repository 仓库区(或本地仓库)
Remote 远程仓库
这个概念图自己一定要先清楚这四个区
配置ssh教程:https://www.cnblogs.com/hafiz/p/8146324.html
1.拉取远程代码到本地
git clone 分支名称 分支地址 (http/ssh)
这个命令远程分支拉取到本地仓库
2.更新并合并代码
git pull origin 分支名称
3.推送本地代码到远程分支
git push origin 本地分支:远程分支
4.分支操作
git branch -a 查看分支
git branch [branch-name] 创建分支
git checkout xx分支 切换分支
拉取基于远程的本地工作分支 $ git checkout -b serverfix origin/develop
做bug修复的时候:$ git checkout -b hotfix_20210107_001origin/master
做新功能的时候: $ git checkout -b feature_osmk1001_10 origin/develop
更新分支命令: $ git remote update origin --prune(当你本地和远程分支不同步时刻)
删除本地已合并的分支: git branch -d [branchname] 某些情况下可以用 git branch -D [branchName]
删除远程分支: git push origin --delete [branchname]
根据指定版本号创建分支: git checkout -b branchName commitId
清理本地无效分支(远程已删除本地没删除的分支): git fetch -p
如果分支太多,还可以用此命令进行分支模糊查找: git branch | grep 'branchName'
5.配置
git config --list 查看本地配置列表
6.暂存区
什么时候用到暂存区?
两种情况:
1.git在其他分支上改代码 切换到本地分支变掉了
2.或者切换分支提示你去commit或者stash
git stash 提交到暂存区
git stash list 暂存区列表
git stash pop 从暂存区取
git stash drop 删除情况暂存区
7.远程或者本地分支合并
例如:我想把远程dev分支合并到远程master
https://blog.csdn.net/qq_42264638/article/details/112571544
git branch -a 查看当前在那个分支
git checkout -b dev origin/dev 创建切换到dev并拉取远程dev代码
git pull origin dev 拉取最新dev代码
git checkout master 切换到主分支
git pull origin master 拉取最新mater分支代码
git merge origin/dev or git merge dev 在master分支上面merge (xx分支)
git push origin master 最后把合并完成的master分支 推送到远程master分支
8.Other区别
git revert [commit]
git reset --hard 回退到上一个commit之前
reset三种模式区别和使用场景
区别:
--hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。
--soft:重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
--mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。
git revert 用法
git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交
* git revert HEAD 撤销前一次 commit
* git revert HEAD^ 撤销前前一次 commit
* git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容
git revert 和 git reset的区别
1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。