代码改变世界

git学习笔记

2014-11-23 07:58  anjsoft  阅读(150)  评论(0编辑  收藏  举报

git config --global user.name "xxx"
git config --global user.email xxx@gmail.com
git config --global core.editor emacs
git config --global merge.tool vimdiff
git config --list
git help config

git add a.txt
git rm --cache a.txt //to commited ,之前no commit
git reset HEAD a.txt //取消暂存
git checkout -- b.txt ==svn revert b.txt // to discard changes in working directory
git add 命令(这是个多功能命令,根据目标文件的状 态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时 把有冲突的文件标记为已解决状态等)
cat .gitignore
*.[oa]
*~
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

git diff 比较的是工作目录中当前文件和暂存区域快照之间的差异
git diff -cached 看已经暂存起来的文件和上次提交时的快照之间的差异
git commit -a -m '' //自动把所有已经跟踪过的文件暂 存起来一并提交
git commit --amend //修改最后一次提交

git remote -v
只有 ssh url 才能提交到远程 origin git@github.com:xxx/xx.git
git remote add xxname git://github.com/xx/xx.git
git fetch xxname fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支
git pull 自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支
git push origin master
git remote show origin
git remote rename xxxname yyyname
git remote rm yyyname
git tag

https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash

source ~/.git-completion.bash //自动完成提示
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual "!gitk"

git checkout master //切换分支
git checkout -b aa //新建并切换分支
git merge hotfix //hotfix 合并到当前分支
git branch -d hotfix //删除分支
git mergetool
git branch --no-merged
git branch --merged 筛选出你已经(或尚未)与当前分支合并的分支
git branch -D testing //强制删除
git push [远程名] [本地分支]:[远程分支]
git push origin :serverfix //删除远程分支
把一个分支整合到另一个分支的办法有两种:merge(合并) 和 rebase(衍合

rebase 原理是回到两个分支(你所在的分支和你想要衍合进去的分支)的共同祖先,提取你所在分支每次提交 时产生的差异(diff),把这些差异分别保存到临时文件里,然后从当前分支转换到你需要衍合入的分支,依 序施用每一个差异补丁文件

***永远不要衍合那些已经推送到公共仓库的更新***