引言:之前只有在学校工程实践结题的时候,用过git上传自己的项目到Github,对于Git的掌握程度只有那么几个命令,今天师父布置了组队小任务,小组之间使用Git来完成协作,这次不能再草草了事了,借此机会,好好去学习一下Git。
版本回退相关
提交文件
git add readme.text
git commit -m "append GPL"
查看历史版本信息
git log
git log --pretty=oneline 带参数地查看提交日志,显示会好看些
git log --graph 查看分支合并图
git log --graph --pretty=oneline --abbrev-commit 带参数地查看分支合并图,显示更好看
查看每一条命令
git reflog
回退版本
git reset --hard HEAD^ /回退到上一个版本
git reset --hard HEAD~50 /回退上50个版本
git reset --hard 1094a /1094a为具体版本号
工作区和暂存区
工作区
即当前项目所在目录
暂存区
工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD。
查看当前状态
git status
例: 修改readme.text 增加LICENSE文件之后 使用git status
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
LICENSE
no changes added to commit (use "git add" and/or "git commit -a")
git add
命令就是把文件提交到stage git commit
一次性把暂存区的所有修改提交到分支。
添加远程库
- 关联远程库 (GitHub为例)
git remote add origin git@github.com:michaelliao/learngit.git
- 本地库推送到远程库
git push -u origin master
从远程库克隆
git clone git@github.com:michaelliao/gitskills.git
远程克隆下来之后只有master分支,需要其他分支则执行:
git checkout '想要的分支'
分支管理
创建与合并分支
- 创建分支
创建fjh
分支,然后切换到fjh
分支:
$ git checkout -b fjh
Switched to a new branch 'fjh'
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:
$ git branch fjh
$ git checkout fjh
git branch
有关命令
git branch 查看本地分支
git branch -r 查看远程分支
git branch -a 查看所有分支
git branch <name> 创建分支
git branch -d <name> 删除分支
单独的git checkout
切换分支
- 合并分支
git merge
用于合并指定分支到当前分支
GitLab上的Merge教程
Step 1. Fetch and check out the branch for this merge request
git fetch origin
git checkout -b fjh2 origin/fjh2
Step 2. Review the changes locally
Step 3. Merge the branch and fix any conflicts that come up
git checkout dev
git merge --no-ff fjh2
Step 4. Push the result of the merge to GitLab
git push origin dev
- 自己习惯的Merge流程
在自己分支上先提交修改到远端
git add .
git commit -m ""
git push origin fjh
切换到dev分支
git checkout dev
git merge --no-ff fjh
如果遇到提示本地上的dev版本已经过时,就需要先
git pull 获得最新版本的dev 在执行
git merge --no-ff fjh
手动解决冲突,之后提交修改后的dev到远端
git add .
git commit -m " "
git push origin dev
多人协作
要查看远程库的信息,用git remote
或者,用git remote -v
显示更详细的信息
- 推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
git push origin fjh