git config --global user.name "Your Name"
git config --global user.email "email@example.com"
git init 初始化版本库
git add <file> 把文件添加到版本库 可以添加多个 如:git add 1.text 2.text
git commit --m "test" 提交文件到版本库 注:--m 后面添加的是注释
git status 显示当前版本库的状态
git giff <file> 显示文件修改内容
git log 查看历史记录
git reset --hard HEAD^ 回退到上个版本 HEAD^^回退到上上个版本以此类推 也可以是用HEAD~100或直接指定commit_id
git reset HEAD <file> 把暂存区的文件退回到工作区 HEAD表示最新的版本
git reflog 查看历史命令
git checkout -- <file> 撤销工作区的修改 回到最新一次commit 或add的状态
git rm <file> 删除文件
ssh-keygen -t rsa -C "邮箱地址" 创建SSH Key 在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件 登陆GitHub,打开“settings”,“SSH Keys”页面 点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
git remote add origin git@github.com:github账号名/Repository name.git 添加后,远程库的名字就是origin
git remote remove 取消关联
git push -u origin master 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。 由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
git push origin master
git clone git@github.com:magic1687/gitskills.git 从远程仓库克隆到本地
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令 git branch dev git checkout dev
用git branch
命令查看当前分支
git merge 分支名
命令用于合并指定分支到当前分支
git branch -d 分支名 删除分支
git log --graph --pretty=oneline --abbrev-commit 命令可以看到分支合并图。
git merge --no-ff -m "merge with no-ff" dev 合并分支时,加上--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward
合并就看不出来曾经做过合并
git stash 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash list 查看储藏起来的分支列表
git stash apply恢复,但是恢复后,stash内容并不删除
git stash drop 删除储藏起来的内容
git stash pop 恢复的同时把stash内容也删了
因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
git remote -v 查看远程库信息
git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联
git tag <tagname>
用于新建一个标签,默认为HEAD
,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."
可以指定标签信息
git tag
可以查看所有标签。
git push origin <tagname>
可以推送一个本地标签
git push origin --tags
可以推送全部未推送过的本地标签;
git tag -d <tagname>
可以删除一个本地标签;
git push origin :refs/tags/<tagname> To github.com:michaelliao/learngit.git
可以删除一个远程标签。