注意: 项目操作过程中,一般不会直接在master主分支下修改代码,而是在分支上修改完毕后合并到主分支!
一 、 如何将本地项目上传到仓库?
- git init -> 初始化一个本地仓库
- git remote add origin URL -> 关联需要建立连接的github仓库
- git add . -> 提交到暂存区
- git commit -am “” -> 提交到工作区
- git pull —rebase origin master -> 将远程仓库github上的readme文件拉取到本地
- git push origin master
详情版(步骤带截图说明),可移步至:本地svn项目迁移至gitlab
二 、如何将远程仓库拉取到本地
- git clone URL -> 克隆需要拉取的远程仓库地址
- git add .
- git commit -am “”
- git push origin master
- git remote -v -> 查看所有关联的远程仓库版本
三 、如何创建分支?
- git branch dev -> 创建一个叫做dev的分支
- git branch -d dev -> 删除dev分支 (提交到工作区的情况下才能删除成功)
- git branch -D dev -> 强制删除
- git branch -> 查看仓库下总共有多少分支
- git checkout dev -> 切换到dev分支目录下
- git checkout -b dev -> 创建dev分支并切换到该分支目录下
- 在主分支下 git merge dev -> 合并dev分支 (前提dev分支中修改的内容已经提交到工作区了)
- git merge —no-ff -m “merge with no-ff” dev -> 禁用fast forward模式
加 —no-ff 可以添加当前操作的描述信息 “”里面为对代码的描写信息 - git log —gragh -> 查看分支操作历史
四 、BUG分支
软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,
每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
如果你想修改这个bug, 但是当前的dev分支又没有把工作提交,此时你可以怎么做?
1. 使用 git stash 将当前的工作区先预存起来
2. git status 查看工作区状态 -> 是一个干净的去区间状态
3. git checkout -b issue-001 在dev分支下新建bug分区并切换到bug分区issue-001
4. 修复完代码后 git add . / git commit -m “bug已修复” 提交到工作区
5. git checkout dev -> 重新切换到dev区域
6. git merge —no-ff -m “bug修改完毕并完成合并” issue-001 -> 将修复后的bug分支下的代码合并到dev分支下
7. 此时再将代码恢复stash状态 git stash list / git stash apply
8. 最后 回到 master主分支下 进行最后的总合并然后再次总体提交
注意: 恢复工作现场时 要对 stash的内容进行删除,删除方式如下:
法1. 用 git stash apply 恢复,但是恢复后,stash内容并不删除,你需要用 git stash drop 来 删除
法2. 是用 git stash pop ,恢复的同时把stash内容也删了
五 、多人协作编程
当你从远程仓库克隆时,实际上Git会自动把本地的 master 分支和远程的 master 分支对应起来。
- git push origin master/dev -> 本地 推送master/dev分支 到远程
- git pull origin master/dev -> 从远程 拉取master/dev分支 回本地
因此,多人协作的工作模式通常是这样:
- 首先,可以试图用 git push origin 推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用 git push origin 推送就能成功!
注意: 如果 git pull 提示 no tracking information ,则说明本地分支和远程分支的链接关系没有创建,
用命令 git branch —set-upstream-to origin/ 。
如果想在新分支写新功能,但是没有创建分支直接在原来的分支上写了,这时怎么补救?
先暂存本地代码 创建新分支 同步最新主分支代码 把本地新分支提交到远端并且跟踪绑定上之后释放储藏区代码,步骤如下:
- git stash
- git checkout -b 新分支名
- git pull
- git stash pop
恢复因git reset —hard 但未提交全部文件到仓库导致的文件丢失问题
- https://blog.csdn.net/Castlehe/article/details/124592032
- https://blog.csdn.net/Castlehe/article/details/124592032
六 、补充
查看:
- 在修改未提交时,查看做出的修改
git diff - 查看状态
git status - 查看提交历史,以便确定要回退到HEAD之前的哪个版本
git log - 查看全部commit过的版本信息
git reflog - 查看文件内容
cat filename
版本回退:
git reset --hard commit_id回退到指定版本commit_id
撤销修改:
- git checkout – filename
- 修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
- 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。即让这个文件回到最近一次git commit或git add时的状态。
- git reset HEAD,可以清除添加到暂存区的修改,但是在工作区中未add的修改,还需要checkout
小结
- 查看远程库信息,使用 git remote -v ;
- git pull origin “分支名” -> 此时会从远程库里面抓取 符合”分支名”的库, 并且与本地合并
- 建立本地分支和远程分支的关联,使用`git branch —set-upstream=”远程分支名” “本地分支名” ;
- 本地新建的分支如果不推送到远程,对其他人就是不可见的;
- 从本地推送分支,使用 git push origin branchname 到远程项目(本地和远程分支的名称最好同名);
- 如果推送失败,使用 git pull 抓取远程上对应分支的最新提交记录,若有冲突先解决冲突,再提交。
