前言
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。同时,git 是在今后的工作中用到的一门十分重要的技术,方便团队开发以及数据的保留。所以熟悉相关的使用是有必要的,之前b站代码泄漏的事情也让我觉得确实需要重视一下git的使用。还有16天,开心心,幸福生活即将来临!!!
仓库文件概述
.gitignore
用于保存不希望被同步到仓库中的文件,我们在本地工程常会修改一些配置文件,这些文件不需要被提交,而我们又不想每次执行git status时都让这些文件显示出来,就可以加入到.gitignore 文件中。
README.md
仓库自述文件,一般用来介绍项目及基本的使用操作
常用git命令
- git clone + 远端仓库地址 :克隆远端仓库到本地
- git status :查看当前工作区和暂存区文件的状态。
git status –s:查看工作区状况 - git log : 查看历史
- git add : 标记文件添加到仓库
git add . =>标记当前目录及子目录的文件 - git commit : 提交文件到本地才仓库
- git branch [分支名] : 添加新的分支
git branch -a : 查看所有分支 - git pull :拉取远端仓库的内容(更新本地仓库)
- git push : 提交到远端仓库
- git checkout :切换分支
git 合并远程分支的操作
# 查看分支
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/homework
remotes/origin/master
# 本地没有要合并的分支就先创建
$ git branch homework
# 切换分支
$ git checkout homework
Switched to branch 'homework'
# 查看目的源
$ git remote -v
origin http://git.sanchuangedu.cn:3000/chenpb/python2019Summer.git (fetch)
origin http://git.sanchuangedu.cn:3000/chenpb/python2019Summer.git (push)
# 拉去远端仓库的分支内容
$ git pull origin homework
From http://git.sanchuangedu.cn:3000/chenpb/python2019Summer
* branch homework -> FETCH_HEAD
Updating 0c27965..24f384d
git 提交例子:
# 切换到test1分支
$ git checkout test1
Switched to branch 'test1'
# 添加文件
$ vim myhomework.txt
# 将myhomework.txt创建快照,进行暂存态
$ git add myhomework.txt
warning: LF will be replaced by CRLF in myhomework.txt.
The file will have its original line endings in your working directory.
# 提交到本地仓库
$ git commit
[test1 a749a0f] add file myhoework.txt
1 file changed, 1 insertion(+)
create mode 100644 myhomework.txt
# 提交到远程仓库
$ git push origin test1
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 297 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by Gitee.com
To https://gitee.com/vaster/python201802.git
a7f9383..a749a0f test1 -> test1
git 冲突问题
冲突发生的原因
开发过程中,我们都有自己的特性分支,所以冲突发生的并不多,但也碰到过。诸如公共类的公共方法,我和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。
发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交自己修改的部分。特别要注意下,修改本地冲突文件使其与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与同事交流,消除冲突。
解决冲突
通过git stash命令,把工作区的修改提交到栈区,目的是保存工作区的修改;
通过git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;
通过git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中;
将dev分支的内容合并到master分支
#先查看下当前的本地和远程分支
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/dev
remotes/origin/master
#确保master分支也是最新的
$ git pull
Already up to date.
#切换到dev 分支
$ git checkout dev
#确保dev 分支也是最新的
$ git pull
Already up to date.
#执行合并的关键代码,此时执行结果时将本地的master合并到本地dev分支
$ git merge master
#将合并的本地dev分支推送到远程dev
$ git push origin dev