Git深入理解-提交合并分支及回退

1.git clone 把远程库克隆到本地文件夹

git clone -b dev https://gitee.com/XXX/EmpManage      //直接克隆远程dev分支到本地dev分支

//相当于如下操作
git clone https://gitee.com/XXX/XXXManage   //克隆远程仓库主分支
cd XXXManage
git status                       //查看当前状态
git branch -a                 //查看所有分支
//git branch -d dev       //删除分区命令
git checkout -b dev     //当前PC本地仓库创建一个新分区

git pull origin dev         //拉取远程origin/dev分支到当前路径(git branch dev remotes/origin/dev)
git checkout dev         //切换到dev分支

2.编辑本地仓库文件并提交到本地信息库(git add ./git commit)

nano README.md    //读取README.md文件中内容
...
git add .                                    //git add --all        //git add AAA.hpp bbb.cpp
git commit -m "x修改信息"     //提交当前状态到本地分支并附上修改信息

3.将本地库提交到远程Git服务器

//首次提交需要确认当前已设定用户名及邮箱 ,命令git config user.name  和git config user.email
git remote -v            //如果有必要,需查看当前项目所有远程仓库源,确保远程仓库源已设定,例如orign已有值。如果没有可以输入命令git remote add origin git@gitee.com:XXX/123.git  ,其中git为GIT管理平台https/ssh协议路径
git push origin dev      //推送当前最新提交状态到origin远程仓库的dev分支
//git log --oneline --graph     //查看分支日志,graph表示图形化显示 

4.本地回退某版本或某提交状态

//刚提交stage,欲返回提交之前
git add a.txt
git commit –amend –no-edit

//git返回之前某版本
git reset --hard //查看当前版本标志,以及备注内容
git reset --hard HEAD^                        //^表示回退前一个版本,^^表示前两个版本,~100表示前100版本 
git reset --hard 822ad73                    //表示回退至822ad73标识符版本,通过git log查看

//返回之后的某个版本
git reflog //查看所有操作日志及标识
git reset --hard HEAD@{3} //返回看3号版本

//回退到某版本,或使某个文件(某文件变化回退前版本,但是其他不变)
git log --oneline
git checkout c676a1a
git checkout c676a1a --test.txt

5.创建及合并分支

git branch dev      //创建分支
git branch -d dev //删除分区
git checkout -b dev //创建一个新分区
git commit -am "change3 " //直接提交,不用add.但仅对已添加的内容提交

//合并项目
git merge --no-ff -m "keep merge info" dev       //--no-ff 表示no fast forward

//合并项目
git checkout master
git rebase dev //将dev合并到主分支
git add 1.py
git rebase –continue
git log –oneline –graph

6.暂存当前分支开发状态,之后再恢复

git checkout dev                
git stash -s                         /////第一步,存储当前dev开发状态
git checkout -b boss         //创建boss分支
…                                       //在boss分支 增添改查等操作
git checkout master         //切换至master分支
git merge –no-ff -m "merged boss job" boss    //将刚才boss分支合并到主分支
git checkout dev               //切换到dev分支最新节点
git stash pop                     /////第二部,返回修改

7. 删除当前修改并恢复到最新HEAD节点的方法:

  • 方法一
git stash       //将当前修改存在临时缓存中
git stash drop  //丢弃暂存修改
  • 方法二
//有一定风险,建议谨慎使用。rm -rf删除当前目录所有文件,但不删除隐藏目录或文件.git等
rm -rf *
git reset --hard HEAD

8. 创建分支并与远端分支保持同步

$ git fetch --all   //获取远端所有分支,这样本地能够确认是否能够操作
 *  [新分支]         dev     -> origin/dev

$ git checkout -b dev origin/dev    //创建新分支dev,并将远端仓库的dev分支拉取下来
分支 dev 设置为跟踪来自 origin 的远程分支 dev。
切换到一个新分支 'dev'

$ git pull origin dev       //拉去dev分支中具体文件

9. 忽略文件和文件夹

项目目录下创建.gitignore文件。一般来说,开发者会单独建立一个名为build的文件夹,用来存放所有编译出的二进制文件。我们只需在.gitignore文件中加入build/,忽略掉整个文件夹即可。

在 .gitignore 文件中,每一行的忽略规则的语法如下:

  1. 空格不匹配任意文件,可作为分隔符,可用反斜杠转义
  2. #开头的文件标识注释,可以使用反斜杠进行转义
  3. ! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义
  4. / 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
  5. / 开始的模式匹配项目跟目录
  6. 如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录
  7. ** 匹配多级目录,可在开始,中间,结束
  8. ? 通用匹配单个字符
  9. [] 通用匹配单个字符列表

如果之前已经有二进制文件存在在git中,在更新完.gitignore文件后,我们想要将这些二进制文件从git中删除的话,可以使用如下方法:

git rm --cached <file>

发表评论

邮箱地址不会被公开。 必填项已用*标注