Tips
1.merge参数
合并分支时加上参数 —-no-ff参数使用普通模式合并,合并后会有历史记录,使用 fast forward合并就看不出来曾经合并过
2. .gitignore过滤文件
使用.gitignore文件过滤不需要提交的文件
touch .gitignore 创建ignore文件
vim .gitingore 编辑ignore,写入要过滤的文件
#此为注释 – 将被 Git 忽略
.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
当把某个文件加入到.gitignore文件而没有成功过滤的时候,是因为.gitignore文件只会忽略原本那些没有被track的文件,如果文件已经加入到版本管理当中了,则修改.gitignore是无效的,解决方法是把本地缓存删除,改为未track状态,然后提交
git rm -r --cached .
git add .
git commit -m “update .gitignore"
此时.gitignore中添加的文件就会被成功过滤掉了
3.rebase
当我们操作的分支和远程分支可能会产生冲突的时候,可以使用
git pull --rebase 命令 它实际上完成了以下几个操作
1.把本地的repo 从上次pull之后的变更保存为patch补丁,这些补丁保存在.git/rebase目录中
2.恢复到上次pull的状态
3.合并远端的变更到本地
4.最后将刚刚保存的本地变更合并到当前分支
在rebase过程中产生冲突(conflict)的时候,Git会停止rebase让你去解决冲突,冲突解决完后使用 git add -A 命令去更新这些内容的索引(index),然后执行 git rebase -- continue 让Git继续应用(apply)余下的补丁 在任何时候可以使用 git rebase --abort来终止rebase,并使当前分支恢复到rebase前的状态,解决完左右的冲突后就可以进行push操作了
Commands
git remote add origin https://github.com/Lilin233/gitDemo.git 本地库连接远程库
git push -u origin master 提交文件到远程库 -u的意思是把本地的master分支和远程master分支连接 ,以后再次提交的时候直接使用git push命令即可
git checkout -b dev 创建并切换分支到branch 可以拆分为
git branch dev 创建dev分支
git checkout dev 切换到dev分支
git merge dev 把dev分支的内容合并到当前分支
git branch -d dev删除分支 dev
git branch -D dev 强行删除分支dev, 当dve有内容没有merge的时候使用 -d是无法删除dev的,git要求你进行merge后再删除,此时可以使用 -D命令强行删除dev分支
git merge --no-ff -m”merge with no ff” dev 使用no ff模式合并dev分支
git stash 把当前的修改存储起来,使用git status查看的时候就会发现当前分支是干净的
git stash list 查看当前stash起来的列表
git stash pop 恢复stash内容到当前分支,并且删除stash
git stash apply stash@{0}恢复具体某一次的stash ,使用stash恢复的时候stash没有删除,需要使用
git stash drop stash@{0}来删除 stash
git branch 查看本地分支
git branch -a 查看所有分支,包含本地和远程
git checkout -b 分支名 远程分支名 获取远程分支创建一个本地分支并切换到新的分支