文章目录
-
-
-
- 1. 基本配置
- 2. 配置ssh key
- 3. 拉取代码
- 4. 查看和新建分支
- 5. 添加到暂存区
- 6. 撤销修改的代码
- 7. 提交到暂存区
- 8. 提交代码到远程仓库
- 9. 合并其他同事提交的代码
- 10. 储藏修改
- 11. 代码冲突问题
- 12. git fetch 和 git pull的区别
-
-
1. 基本配置
git config --global user.name guohengheng23677
git config --global user.email 23677@163.com
2. 配置ssh key
cd ~/.ssh
ssh-keygen -t rsa -C "23677@163.com" 连续三次enter生成ssh key
cat id_rsa.pub
3. 拉取代码
git clone [url] 拉取代码
4. 查看和新建分支
git branch 查看本地的所有分支
git branch [branch-name] 新建一个分支,但是仍然停留在当前分支
git checkout [branch-name] 切换分支
5. 添加到暂存区
git add [file1] [file2] 添加到指定文件到暂存区
git add . 添加当前目录的所有文件到暂存区
git status 查看状态
6. 撤销修改的代码
git checkout --[文件名] 修改代码后撤销修改
git reset HEAD [文件名] ,git checkout --[文件名] 添加到暂存区后撤销修改
对于没提交到暂存区并且已经修改的代码,想要撤销修改:
对于提交到暂存区并且已经修改的代码,想要撤销修改:
7. 提交到暂存区
git commit -m [message] 提交暂存区到仓库区
git log 查看日志
8. 提交代码到远程仓库
提交完代码后上传到服务器:
git push origin [local-branch]:[remote-branch] 上传本地指定分支到远程仓库,其中remote-branch可以省略
可以看到远程服务器(github,ghh1221/community-springboot)多了一个分支:
9. 合并其他同事提交的代码
将代码提交到服务器后,服务器有其他同事更新代码后如何合并到本地分支呢?
git checkout master 切换到主线分支
git pull origin master 取回远程仓库的变化,并与本地分支合并
git checkout knowledge-doc-ghh 切换到个人分支
git merge master 合并master分支代码
git push origin knowledge-doc-ghh 再次推送个人分支代码
① 远程服务器中,其他同事添加一个haha文件:
我们在自己的个人knowledge-doc-ghh分支想将其他同事的修改的代码合并过来,此时需要切换到master分支,将服务器master分支的最新代码拉取过来,然后切换到knowledge-doc-ghh分支,再合并master分支的代码,合并完成后将个人分支的代码推动到远程仓库
② 执行上述操作后,本地仓库中多了一个haha文件,说明已经将其他同事的代码合并过来了:
10. 储藏修改
git stash 储藏当前修改的内容
git stash list 查看储藏内容
git stash pop 恢复储藏内容
场景:假如我们在t1分支对代码进行了修改,但是又不想commit,此时临时有任取需要到t2分支该代码,但是没办法切换到t2分支,就可以先将t1分支的代码储存一下,然后切换到t2分支修改代码,修改完成后回到t1分支,然后将之前储存的内容pop出来继续操作。
① 假如我们在knowledge-doc-ghh分支对代码进行了修改,但是又不想commit,此时临时有任取需要到t2分支该代码,但是没办法切换到t2分支
② 就可以先将t1分支的代码储存一下,然后切换到t2分支修改代码,修改完成后回到t1分支,然后将之前储存的内容pop出来继续操作。
11. 代码冲突问题
个人分支合并master分支的代码步骤:
git checkout master 切换到master分支
git pull origin master 更新本地电脑master最新代码
git checkout 个人分支 (切回到个人分支)
git merge master (将master分支的最新代码合并到个人分支)
如果有冲突:CONFLICT(content) :Merge conflict xxx,这种场景代码冲突,解决方法如下:
直接在编辑器中修改代码-手动修改
git add 冲突文件
git commit -m “ log xxx"(提交代码到本地)
git push origin 个人分支
场景:创建两个分支hengheng和jainghui,切换到hegnheng分支,在hengheng分支下修改haha文件并提交到本地仓库,再将hengheng分支修改的代码合并到master分支,然后切换到jiagnhui分支,在jianghui分支下也修改了haha文件并提交到本地仓库,此时将jianghui分支修改的代码合并到master分支时出现了代码冲突问题,手动打开haha文件并解决冲突,解决后将haha文件提交到本地和远程仓库即可。
① 在hengheng分支下修改haha文件并提交到本地仓库,再将hengheng分支修改的代码合并到master分支
② 在jianghui分支下也修改了haha文件并提交到本地仓库,此时将jianghui分支修改的代码合并到master分支时出现了代码冲突问题
③ 出现冲突的文件代码:
④ 手动修改完成后,保留hengheng分支的,提交haha文件到远程服务器的个人分支
12. git fetch 和 git pull的区别
① git fetch:
git fetch origin master:tmp
//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git diff tmp
//来比较本地代码与刚刚从远程下载下来的代码的区别
git merge tmp
//合并temp分支到本地的master分支
git branch -d temp
//如果不想保留temp分支 可以用这步删除
② git pull :
git pull <远程主机名> <远程分支名>:<本地分支名>
//取回远程主机某个分支的更新,再与本地的指定分支合并。
git fetch是从远程获取最新版本到本地,但不会自动merge。
而git pull则是会获取所有远程索引并合并到本地分支中来。效果相同时git pull将更为快捷。