git的一些操作

一、分支管理

1. 创建与合并分支

  • 一些操作
git checkout -b dev         # 创建并切换到`dev`分支 

git branch dev              # 这两句的效果与上面的一句等同(选择一种)
git checkout dev

git branch                  # 查看当前分支,当前分支会标记`*`

git add .                   # 提交当前目录下的全部修改
git commit -m "branch test"

git checkout master         # 切回 `master` 分支

git merge dev               # 合并`dev`到`master`分支

git branch -d dev           # 删除`dev`分支
  • 总结
git branch                  # 查看分支
git branch <name>           # 创建分支
git checkout <name>         # 切换分支
git checkout -b <name>      # 创建+切换分支
git merge <name>            # 合并某分支到当前分支
git branch -d <name>        # 删除分支

2. 分支管理策略

  • 合并分支的时候,如果可能,git会用 Fast forward模式,这种模式下,会丢掉分支信息
  • 如果禁用Fast forward 模式,git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息
git merge --no-ff m "merge with no-ff" dev  # 使用 `--no-ff` 参数表示禁用 `Fast forward`

3. feature 分支

git branch -d <name>
git branch -D <name>    # 丢弃一个没有被合并过的分支

二、其它

git checkout .              # 删除之前的操作  
git clean -f                # 删除文件
git commit --amend 'xxx'    # 修改commit信息

git clean: 用来从工作目录中删除所有没有 tracked 过的文件


(1) git clean 经常和 git reset --hard 一起结合使用,reset只影响被track过的文件,所以需要用clean来删除没有 track 过的文件,结合着两个命令能让工作目录完全回到一个指定的 commit 的状态
(2) git clean -n 提示有哪些文件会被删除,但不会真正的删除文件,只是一个提醒

(3) git clean -f 删除当前目录下所有没有 track 过的文件,不会删除 .gitignore 文件里面指定的文件夹和文件,不管这些文件有没有被 track 过

(3) git clean -f `path` 删除指定路径下没有被 track 过的文件

(4) git clean -df 删除当前目录下没有被 track 过的文件和文件夹

(5) git clean -xf 删除当前目录下所有没有被 track 过的文件,不管它是否是 .gitignore 文件里面指定的文件夹和文件

(6) git reset --hard 和 git clean -f,结合使用能让工作目录完全回退到最近一次 commit 的

三、工作遇到的问题及解决方案

问题:编译之后经常会多出一些文件,此时如果想要切换分支的话,提示会覆盖之前要切换的分支,此时要怎么处理呢?

解决方案:

  • 如果想要保留这些编译文件,可以git add .git commit -m "描述信息" 进行提交,然后再切分支
  • 如果不想要保留这些文件,可以进行下面的操作
git add .
git commit -m "描述信息"
git log                     # 查看版本信息
git reset --hard <版本号>    # 回退到某个指定的版本号
git status                  # 查看状态
git checkout <分支名称>      # 切换分支

四、rebase 操作

  • 目的:合并多个 commit
  • 操作:
git rebase -i 版本号   #(不需要合并的最近的版本号)

注意:

1. 如果出现合并冲突,可能还需要手动修改,修改完 `git add .` 后 `git rebase --continue`

2. 撤销合并 `git rebase --abort`
posted @ 2019-06-02 19:48  木瓜袋子  阅读(143)  评论(0编辑  收藏  举报