美文网首页
Git学习笔记

Git学习笔记

作者: 尚无花名 | 来源:发表于2019-06-28 06:59 被阅读0次

    这里推荐一下瘳雪峰的Git教程

    Git 其实用起来不是那么简单

    创建一个repo

    git init #在某个文件夹下执行

    创建一个新的feature branch

    git checkout master
    git pull --rebase
    git checkout -b my_feature_branch
    
    分成两条
    git branch dev
    git checkout dev
    删除一个branch
    git branch -d dev
    
    

    其他命令

    git branch //查看branch
    
    

    版本穿梭
    HEAD表示当前版本
    HEAD^ 表示上一个版本
    HEAD^^ 表示上上个版本
    HEAD~100 前100个版本

    git reset --hard HEAD^ 回到上一个版本
    git reset --hard commit_id
    

    检查更新

    git status
    git diff
    git diff origin/master --name-only //只看name
    git diff readme.txt 只看一个文件的更新
    git diff HEAD -- readme.txt 看一个文件和head里的变化 
    git log 查看提交历史
    git log --pretty=oneline 一行 
    git log --graph --pretty=oneline --abbrev-commit
    git log --graph 
    git reflog 查看命令历史
    

    添加文件

    git add myfile // 加一个文件   到stage area
    git add -A //加所有文件
    git add . //加当前目录下的所有文件
    git reset myfile //把这个文件从git里remove掉,但文件还在
    git reset //把所有没有commit的文件从git里remove掉  ?
    git commit -m "commit message"
    git checkout -- readme.txt //丢弃工作区的修改 把readme.txt文件在工作区的修改全部撤销
    git reset HEAD readme.txt //丢弃stage区的修改, 设为head
    

    删除文件

    rm test.text
    git rm test.txt //从git中也删掉这个文件 
    git checkout -- test.txt 如果删错了,就这样还原
    

    云端操作

    git remote add origin https://github.com/chenbaozhen/learngit.git // 在远端加一个库,要在当前目录learngit下执行
    git remote add origin git@github.com:myusername/learngit.git //在远端加一个库,要在当前目录learngit下执行
    git push -u origin master
    
    git clone https://github.com/chenbaozhen/gitskills.git //copy云端的库到本地 
    baozhenchen$ git remote -v //查看remote的信息 
    origin  https://github.com/chenbaozhen/gitskills.git (fetch)
    origin  https://github.com/chenbaozhen/gitskills.git (push)
    

    pull 和 fetch merge

    master, origin 和origin master

    master是local branch
    origin是remote, 云端的意思, 代表远程库
    origin/master是我在local download下来的云端master的copy

    git fetch origin //从云端取回所有branch
    git fetch origin master  //从云端download 云端的master branch,只取master branch哦, 下载到本地后叫origin/master
    git merge origin/master //把origin/master和 local 的 当前branch merge, 一般进行此操作的时候要在 master branch
    

    在local 改变之后, 可以 把local master的push回云端

    git push -u origin master //这个-u有什么作用??第一次推送master分支时加上 -u 关联本地分支和远程分支
    git push origin master // 以后就不需要-u了 
    git push origin dev // push dev分支
    git push origin :dev // 删除远端dev 分支 
    

    从去端要其他branch (非master branch)

    git checkout -b dev origin/dev
    
    

    Git Rebase

    经常我们在merge feature branch to master的时候会发现自己本地的master已经落后remote的master了
    这时需要再merge 会被拒绝。这时会需要一个rebase操作. 通俗说就是把remote master上的 code download下来,然后把自己的code加上去.
    这时需要如下操作

    git checkout master  // checkout master
    git pull origin master // 从remote端download code
    git checkout feature_branch // checkout your feature branch
    git rebase master // 把现在的code放在基于master上 
    
    git push origin :feature_branch //删掉remote的feature branch
    git push origin feature_branch //重新上传
    

    合并commit

    当我们把自己的feature branch上传到origin/master的时候,我们在开发过程中可能有很多commit的过程,这个开发过程中的commit是给自己看的, 我们可以写了很多条commit信息。但是origin/master不需要知道这么多细节,他需要把所有这个feature的commit history合并成一个方便别人。这时就需要合并成一条。我知道有两种做法

    做法1
    git checkout master //转到master branch
    git checkout -b feature_branch_fresh //开一个新的 并转到 这个fresh branch上 
    git merge --squash feature_branch // 把feature branch上的变化都变到fresh branch上
    git commit -m "combined commit" // commit
    git push origin feature_branch_fresh // 把fresh branch上
    做法 2
    git merge master 把master的新变化都放进来 
    git reset master // reset all your changes, keep the code but remove all commit history
    git commit -a // commit once, combined
    git push origin  :feature_branch //删掉remote的feature branch,如果以前没上传过就可以略过这一步 
    git push origin feature_branch //重新上传
    

    相关文章

      网友评论

          本文标题:Git学习笔记

          本文链接:https://www.haomeiwen.com/subject/myejcctx.html