Git:
学习git的网站:
设置个人环境:
git config :
配置文件位置:~/.gitconfig
配置用户名:
$ git config --global user.name "os-tanwn"
配置用户邮箱:
$ git config --global user.email os-tanwn@nowada.com
配置编辑工具:
$ git config --global core.editor vim
配置颜色:
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
用git开始管理一个工程:
初始化一个git仓:
git init
把特定文件不纳入版本库管理:
Git过滤文件和文夹
第一步:添加".gitignore"文件
往项目根目录添加一个文件".gitignore"。这文件和".git"文件夹同级。
第二步:设置过滤条件
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt *.o 过滤所有.o文件,这个最好不要使用.o,我们编译是经常会产生这种文件。
或者从远程服务器下载一个git工程:
git clone
或者从远程服务器下载一个git 分支工程:
git checkout -b <分支>
把文件纳入git版本库的暂存区:
git add:
git add –u <path> 把<path>中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件
git add –A <path> 把<path>中所有tracked文件中被修改过或已删除文件的信息添加到索引库, 包括untracted的文件
git rm
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了
git mv
重命名文件 git mv old_name new_name
把文件从git暂存区移出来:
git reset HEAD <path>
git reset –hard <历史指纹> 回滚到改历史指纹,同时会把git里面所有改动都被覆盖掉
git reset –soft <历史指纹> 相当于把之前的commit撤回到暂存区
git format-patch HEAD^ 生成一个补丁
git format-patch HEAD^^ 生成两个补丁(最多支持四个^)
git format-patch -<正整数i> 生成最近commit的i个补丁
git format-patch –n 指纹 生成从指纹之前的n个补丁
git am <patch> 打上一个补丁
git am –abort 取消打补丁(一般是打补丁出错后执行的)
git am –resolved 解决了打补丁的冲突
git apply <patch> 直接应用修改
git apply –reject 应用修改,如果没打上,则生成差异的文件
git revert 撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交
git commit 把暂存区的仓库提交到版本管理库里面
git commit –amend 对上一次的提交做修改
git branch 不带参数:列出本地已经存在的分支,并且在当前分支的前面加“*”号标记,
git branch -r 列出远程分支
git branch -a 列出本地分支和远程分支
git branch 创建一个新的本地分支,需要注意,此处只是创建分支,不进行分支切换
git branch -m | -M oldbranch newbranch 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名
git branch -d | -D branchname 删除branchname分支
git branch -d -r branchname 删除远程branchname分支
git log --pretty=oneline 类似于tig
git log --author=os-tanwn --since="14 days ago" --pretty=oneline 找这14以来作者是os-tanwn做的补丁,并且以简列形式显示
git log --committer=os-tanwn 提交者是os-tanwn的(提交者和作者意思是author是补丁的制作者,而committer是提交者,比如说我有提交远程服务器补丁的权限,但其他人没有,所有其他的补丁是通过我提交的,我就是committer,但author是其他人)
git log –stat显示被修改文件的修改统计信息,添加或删除了多少行
git log --grep=“gt9xx.c ” --pretty=oneline 找有gt9xx.c的补丁
git diff
git diff <1> <2> -- <file> 比较指定两个指纹间某个文件的差别
git checkout 切换到分支或者把当前文件还原回版本库的文件
git checkout branch – filename 维持HEAD的指向不变。用branch所指向的提交中filename替换暂存区和工作区中相 应的文件。注意会将暂存区和工作区中的filename文件直接覆盖
git reflog 查看最近的版本,通过找到id号后可以通过git reset –HARD <id>回到被reset的版本
服务器同步和提交到服务器
git pull
git push
远程服务器log:
git remote update //同步远程版本的信息,但不会把更新内容放到工程里面,只改变了仓库
git log origin/$(分支名) //可以查看服务器的最新更新记录