记录一些常用的 Git 命令,便于查看
config 设置用户名和邮箱
1 2 git config –global user.name "[name]" git config –global user.email "[email]"
别名配置
1 2 3 4 git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.st status
init 初始化一个仓库
1 2 3 4 5 # 将当前目录初始化成一个Git代码库 git init # 新建一个目录,将其初始化为Git代码库 git init [repository name]
clone 1 2 3 4 5 # 克隆现有的仓库 git clone [repository url] # 克隆现有的仓库并自定义本地仓库名 git clone [repository url] [new repository name]
add 暂存改变的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 暂存指定文件 git add [file1] [file2] ... # 暂存所有改变(新增,修改,删除) git add -A # 暂存所有改变(新增,修改,删除),git v1 版本不会暂存 删除文件 git add . # 暂存除删除外的所有改变(新增,修改) git add --ignore-removal . # 暂存除新增外的所有改变(修改,删除) git add -u
commit 提交
1 2 3 4 git commit -m "[commit message]" # 跳过 add 步骤,直接提交 git commit -a -m "[commit message]"
fetch 1 2 3 4 5 # 下载远程仓库的所有变动 git fetch [remote] # remove any remote-tracking references that no longer exist on the remote git fetch --prune
pull 1 2 # 取回远程仓库的变化,并与本地分支合并 git pull [remote] [branch]
push 1 2 3 4 5 6 7 8 # 上传本地分支 branch1 到远程仓库 git push origin branch1 # 强行推送当前分支到远程仓库,即使有冲突 git push [remote] --force # 推送所有分支到远程仓库 git push [remote] --all
checkout 1 2 3 4 5 6 7 8 # 切换分支 git checkout branch1 # 创建并切换到 branch1 分支 git checkout -b branch1 # 丢弃指定文件的修改,恢复至上一次 git commit 或 git add 时的状态 git checkout -- file
branch 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 查看分支 git branch # 创建分支 branch1 git branch branch1 # 删除本地分支 git branch -d branch1 # 强制删除本地分支 git branch -D branch1 # 删除远程分支(若报远程分支不存在,可以执行 git fetch --prune) git push origin --delete branch1
merge 1 2 # 合并 branch1 到当前分支 git merge branch1
diff 1 2 3 4 5 # 比较当前分支文件的修改 git diff # 比较指定文件的修改 git diff file
status 查看当前分支的状态
log 查看提交记录
1 2 3 git log git log --pretty=oneline
reflog 查看操作的历史命令记录
reset 1 2 3 4 5 # HEAD^ 表示上一个版本,HEAD^^ 表示上上一个版本,HEAD~n 表示回退 n 个版本 git reset --hard HEAD^ # 回退到指定提交,commit id 没必要写全,前几位就可以了,Git会自动去找 git reset --hard [commit id]
关联并提交到远程仓库 1 2 3 git remote add origin [repository url] git push -u origin master
stash git 暂存,在临时需要开发其他功能时暂存当前修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # 暂存当前修改 git stash save 'message' # 查看已有的暂存 git stash list # 清空已有的暂存 git stash clear # 移除编号为 0 的暂存 git stash drop stash@{0} # 使用编号为 0 的暂存(不指定则默认使用最近的) git stash aplly stash@{0} # 使用编号为 0 的暂存,并移除该暂存 git stash pop # 查看编号为 0 的暂存 git stash show stash@{0} # 从 stash 创建分支 git stash branch [branch name]
tag 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # 查看 tag git tag # 用特定的搜索模式列出符合条件的 tag git tag -l 'v1.4.2.*' # 新建 tag git tag -a [tag name] -m [tag message] # 查看指定 tag 的信息 git show [tag name] # 推送 tag git push origin [tag name] # 一次推送所有本地新增的 tag git push origin --tags # 删除本地 tag git tag -d [tag name] # 删除远程 tag git push origin :refs/tags/[tag name]
仓库迁移 Git仓库完整迁移 含历史记录
方法一 1 2 3 4 5 6 7 8 # 1. 从原地址克隆一份裸版本库 git clone --bare git://github.com/username/project.git cd project.git # 2. 然后到新的 Git 服务器上创建一个新项目 # 3. 以镜像推送的方式上传代码到新服务器上的新仓库 git push --mirror git@mygit.com/username/newproject.git
方法二 1 2 3 4 git clone --mirror <URL to my OLD repo location> cd <New directory where your OLD repo was cloned> git remote set-url origin <URL to my NEW repo location> git push -f origin