请放弃IDE中git的傻瓜式操做,下面经过移步换景的方式熟悉经常使用git命令,而后爱不释手。git
# 初始化git仓库 git init # 所有写入暂存区 git add . # 将暂存区内容添加到本地仓库 git commit -m "first commit" # 关联远程仓库 git remote add origin https://github.com/username/*.git # 提交到远程仓库 git push -u origin master
以上操做完成后,代码就顺利上传到远程仓库了。github
# 查看工做区和和暂存区的文件状态 git status # 查看所有的提交记录 git log # 查看某人的提交记录 git log --author='username' # 查看文件提交记录和commit id git log --pretty=oneline 目录/文件名 # 查看某次提交的操做记录 git show <commit id> # 查看文件操做记录和文件变化 git log -p 目录/文件名 # 查看简写的提交记录 git log --oneline # 查看版本路线 git log --oneline --graph
git log
命令的更多参数,请查阅官方文档。bash
# 配置用户名 git config --global user.name '<username>' # 为当前仓库配置用户名 git config --add --local user.name '<username>' # 配置邮箱 git config --global user.email '<email>' # 为当前仓库配置邮箱 git config --add --local user.email '<email>' # 查看配置,重点关注user.name和user.email变量的值 git config --global --list
git config
命令的更多配置,请查阅官方文档。app
git add 文件名 git add 文件名1 文件名2 ... git add . git commit -m "修改文件"
git add
命令能够将单个具体文件、多个具体文件或全部改动文件写入暂存区,而后执行后续的提交操做。fetch
能够手动删除文件,但也能够用git命令删除文件。spa
git rm 文件名
能够手动移动并重命名文件,可是须要git add
和git rm
操做后才能使文件的状态变为renamed
。更方便快捷的方案就是使用git mv
。code
git mv 原文件名 新目录/新文件名
未提交至暂存区的状态下,经过git diff
查看文件改动,手动进行还原,效率过低,推荐使用git checkout
。ci
# 未提交至暂存区的状态下,回到上一次提交的状态 git checkout -- 目录/文件名 # 撤销追踪,回到上一次提交的状态 git reset HEAD 目录/文件名 git checkout -- 目录/文件名
# 回到上一个版本,一个^表明回退一个版本 git reset --hard HEAD^ # 回到指定版本 git reset --hard <commit id> # 指定文件回到指定版本 git checkout <commit id> -- 文件名
新建立的标签会默认加在最近一次的提交记录上。rem
# 建立标签 git tag <tag name> # 查看标签 git tag # 为指定的提交记录建立标签 git tag <tag name> <commit id> # 删除标签 git tag -d <tag name> # 推送某个标签 git push origin <tag name> # 推送全部标签 git push origin --tags
# 建立分支 git branch <branch name> # 查看分支 git branch # 同时查看远程分支及版本 git branch -av # 切换分支 git checkout <branch name> # 删除分支 git branch -d <branch name> # 强制删除分支 git branch -D <branch name> # 关联远端分支 git branch –set-upstream <branch name> <remote branch name> # 建立并切换分支,也可关联远端分支 git checkout -b <branch name> [remote branch name] # 合并分支 git merge <branch name> # 合并时若是有冲突保留当前分支的代码 git merge --abort # 拉取分支 git fetch # 删除远程分支 git push origin --delete <branch name> # 拉取合并 git pull
更多分支管理操做,请查阅官方文档文档
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 reset HEAD -- <文件名> git config --global alias.unstage 'reset HEAD --' # 查看最后一次提交 git config --global alias.last 'log -1 HEAD' # 打开gitk git config --global alias.visual '!gitk'
git checkout experiment git rebase master
git checkout master git merge experiment
转移提交
git cherry-pick <commit id>
# 保存当前进度,会分别对暂存区和工做区的状态进行保存 git stash # git stash带上message git stash save '<message>' # 显示已保存的进度列表 git stash list # 恢复最新保存的进度,并将恢复的进度删除 # 若是提供--index 除了恢复工做区的文件外,还尝试恢复暂存区 # 若是提供stash id则恢复该进度 git stash pop [--index] [stash id] # 除了不删除恢复的进度以外,其他和 git stash pop 命令同样 git stash apply [--index] [stash id] # 删除进度 git stash drop [stash id] # 删除全部存储的进度 git stash clear