git init #初始化 git config --global user.name "mortal" git config --global user.email "mortal@gmail.com" git add . #添加要提交的文件 git commit -m "initial" #提交一个版本 git status #目前状态 git diff #可以比对文件 在git提交环节,存在三大部分:working tree, index file, commit working tree:就是你所工作在的目录,每当你在代码中进行了修改,working tree的状态就改变了。 index file:是索引文件,它是连接working tree和commit的桥梁,每当我们使用git-add命令来登记后,index file的内容就改变了,此时index file 就和working tree同步了。 commit:是最后的阶段,只有commit了,我们的代码才真正进入了git仓库。我们使用git-commit就是将index file里的内容提交到commit中。 总结一下: git diff: #是查看working tree与index file的差别的。 git diff --cached: #是查看index file与commit的差别的。 git diff HEAD: #是查看working tree和commit的差别的。(你一定没有忘记,HEAD代表的是最近的一次commit的信息) git log #查看log git log --pretty=oneline #只显示一行,没有author,date git log --graph --pretty=oneline --abbrev-commit #图形化,易于理解 git reset --hard HEAD^ #重回上一个版本 git reset --hard HEAD^^ #重回上上个版本 git reset --hard HEAD^3 #之前第三个版本。 git reflog #回到过去之后回不到未来了,不怕,这里有记录 git reset --hard f8c5ef2 #返回版本f8c5ef2 于诸多文件中除去某个不想提交的文件,简洁的提交 git add . git status git rest HEAD filename git commit -m "sthing" git checkout -- filename #让这个文件回到最近一次git commit 或git add时代状态 命令中的-- 很重要,没有--就变成了创建一个新分支 只是修改了工作区的文件回滚: git checkout -- . 如果已经git add . 需要回滚: git reset HEAD . git checkout -- . 如果不仅添加还commit了的话。 git reset --hard HEAD^ . git rm filename #删除某个文件 git commit -m "remove filename" git checkout -- filename #git checkout 其实是用版本库里的版本替换工作区的版本。无论工作区是修改还是删除都可以“一键还原” git checkout -b dev #创建dev分支,并切换到dev分支 git branch #查看分支 git branch dev #创建分支 git branch -d dev #删除分支 git branch -D dev #强制删除一个分支 git checkout dev #切换分支 git merge dev #合并dev分支到master git stash #保留一个stash git checkout master #切换master git checkout -b issue-01 #创建并切换 git add filename #修改后添加到index区 git merge --no-ff -m "merged bug fix 01" #issue-01合并分区,修复bug git branch -d issue-01 #删除分区 git checkout dev #切换分区 git stash list #查看藏匿区列表 git stash apply stash@{0} #恢复stash但不删除 git stash drop stash@{0} #删除stash git stash pop #恢复并删除 某一分支点两个版本号之前的内容 git diff f1a2c3 a4c5b6 > my.diff #比较需要注意顺序 git apply my.diff #恢复 git remote git remote -v git push origin master #推送master分支 git push origin dev #推送dev分支 git clone git@github.com:michaelliao/learngit.git #克隆一个版本到本地 git branch git checkout -b dev origin/dev git commit -m "sthing" git pull git branch --set-upstream dev origin/dev git pull vim filenames git commit -m "merge & fix sth" git push origin dev 搭建git服务器 yum install git useradd -d /homg/git git -s /usr/bin/git-shell git init --bare admin.git chown -R git:git admin.git mkdir /home/git/.ssh chown 700 /home/git/.ssh chown 640 /home/git/.ssh/authorized_keys #我之前设置成600一直连接不上,也是找了好久,才发现要设置成640 centos5.8版本 git客户端1 git clone ssh://git@proxy.git.com:9831:/srv/admin.git git add . git commit -m "test" git remote -v git push origin master git log git 客户端2 git pull ssh://git@proxy.git.com:9831:/srv/admin.git $直接拉取,这种方式会不能提交 git remote -v git reflog git fetch origin master #从远程的origin仓库的master分支下载代码到本地的origin master git log -p master origin/master #比较本地仓库和远程仓库的区别 git merge origin/master #合并分支
从网上其他地方找了一张图片来。很详细了。