设置个人环境:
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
git add –A
git rm
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了
git mv
重命名文件 git mv old_name new_name
把文件从 git 暂存区移出来:
git reset HEAD
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
git am –abort 取消打补丁 (一般是打补丁出错后执行的)
git am –resolved 解决了打补丁的冲突
git apply
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> --
git checkout 切换到分支或者把当前文件还原回版本库的文件
git checkout branch – filename 维持 HEAD 的指向不变。用 branch 所指向的提交中 filename 替换暂存区和工作区中相 应的文件。注意会将暂存区和工作区中的 filename 文件直接覆盖
git reflog 查看最近的版本,通过找到 id 号后可以通过 git reset –HARD
服务器同步和提交到服务器
git pull
git push
来源: http://www.bubuko.com/infodetail-2435484.html