git 教程

分支管理
  • git merge

git merge 三种参数区别
--ff : 默认值,当合并的分支为当前分支的后代的,那么会自动执行 --ff (Fast-forward) 模式,
如果不匹配则执行 --no-ff(non-Fast-forward) 合并模式
--no-ff: 非 Fast-forward 模式:在任何情况下都会创建新的 commit 进行多方合并(及时被合并的分支为自己的直接后代)
--ff-noly: Fast-forward 模式:只会按照 Fast-forward 模式进行合并,如果不符合条件(并非当前分支的直接后代),
则会拒绝合并请求并且推出

  • Fast-forward:
    在master分支merge dev分支,如果master当前节点一直和dev的根节点相同,
    那么master快速移动头指针到dev的位置,所以Fast-forward并不会发生真正
    的合并,只是通过移动指针造成合并的假象。
  • non-Fast-forward
    master分支当前节点和dev的根节点不一致,无法只用Fast-forward模式。会
    创建新的commit合并master和dev分支的多次提交,出现一个新的commit。
// 设置git pull 默认方式
git config pull.rebase false  # merge (the default strategy)
git config pull.rebase true   # rebase
git config pull.ff only       # fast-forward only

参考资料:https://www.cnblogs.com/xiao2shiqi/p/14715119.html

  • git rebase
    git rebase -i
    -i
    --onto
    流程
// 1.  创建开发分支
git checkout -b f1 // 在这个分支上做开发,commit
// 2. 切换到master,更新远程分支
git checkout master
git pull
// 3. 切回 发f1
git checkout f1
git rebase master -i   // 在f1分支下,会把f1的commit 追加到master后面
// 冲突 
git rebase master // ---->解决冲突--->git add .--->git rebase --continue
git checkout master
git rebase f1  
git push

git rebase --continue: 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突
git rebase --skip : 则会将引起冲突的commits丢弃掉(慎用!!);
git rebase --abort : 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃

  • git pull
    git pull = git fetch + git merge // 这是默认的
    我们也可以rebase
    git pull --rebase

  • git fetch
    更新代码

git fetch
git rebase
解决冲突
git add 冲突文件
git rebase –continue
git push

日志

git log --oneline
git log --oneline main.go // 查看指定文件log 日志

git log --pretty=format:"%h %an,%cd : %s"

选项   说明
%H    提交对象(commit)的完整哈希字串
%h    提交对象的简短哈希字串
%T    树对象(tree)的完整哈希字串
%t    树对象的简短哈希字串
%P    父对象(parent)的完整哈希字串
%p    父对象的简短哈希字串
%an    作者(author)的名字
%ae    作者的电子邮件地址
%ad    作者修订日期(可以用 -date= 选项定制格式)
%ar    作者修订日期,按多久以前的方式显示
%cn    提交者(committer)的名字
%ce    提交者的电子邮件地址
%cd    提交日期
%cr    提交日期,按多久以前的方式显示
%s    提交说明

指定日期、关键字、作者

--since, --after              仅显示指定时间之后的提交。              git log --since=2.days

--until, --before             仅显示指定时间之前的提交。              git log --until=10.days

--author                      仅显示指定作者相关的提交。              git log --author=BeginMan

--committer                   仅显示指定提交者相关的提交。             git log --committer=Jack--grep                        仅显示指定关键字的提交。                git log --grep=init

参考文档:https://www.cnblogs.com/drizzlewithwind/p/5726911.html

解决冲突

<<<<<<< HEAD // 这里面的代码,是从远程或者其他分支合并来的,冲突
    fmt.Println("main====6")
=======
    fmt.Println("main====7")
>>>>>>> aa39130... pro改main===7 // 这段是自己本地的代码

你可能感兴趣的:(git 教程)