1. 仓库创建
初始化当前目录为一个git代码库
git init
在当前目录新建一个目录,将其初始化为git代码库
git init [project_name]
在当前目录克隆一个项目
git clone [project_url]
注意:上面三个命令都是在当前目录进行操作
2. 配置
设置提交代码时的用户信息
git config [--global] user.name "name"
git config [--global] user.email "email"
注意:如选择用了[–global]参数,那么那这台机器的所有Git仓库都会用该配置信息;反之,则是对单个Git仓库的用户信息配置。
3. 文件的增加和删除
添加指定文件到暂存区
git add [file1] [file2] ...
添加指定目录到暂存区
git add [dir]
添加当前目录的所有文件到暂存区
git add .
删除工作区文件(文件未被git追踪)
rm [file1] [file2] ...
删除暂存区和工作文件,并且将这次删除放入暂存区
(前提:文件在暂存区,工作区和本地库信息一致)
git rm [file1] [file2] ...
停止追踪指定文件(暂存区不会有该文件信息),但工作区文件信息不变
git rm --cached [file]
改名文件,并且将这个改名放入暂存区
git mv [file_original] [file_renamed]
注意:git rm 只能删除没有修改过的文件;若暂存区或工作区文件信息与本地库信息不一致,想要删除文件则使用 git rm -f [file] 命令进行强制删除。
4. 代码提交
提交暂存区代码到代码仓库(本地库)
git commit -m [message]
提交时显示所有的diff信息
git commit -v
使用一次新的提交,替代上一次commit
如果文件信息没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend -m [message]
文件信息有更新,重做上一次commit,并包括指定文件的新变化
git commit --amend [file1] [file2] ...
5. 分支操作
列出本地所有分支
git branch
列出所有远程分支
git branch -r
列出所有本地分支和远程分支
git branch -a
新建分支,但仍然停留在当前分支
git branch [branch_name]
新建分支,并切换到该分支
git checkout -b [branch_name]
推送本地分支到远程仓库
git push -u origin [branch_name]
切换分支到指定分支
git checkout [branch_name]
切换到上一个分支
git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
git branch --set-upstream-to [branch] [remote_branch]
合并指定分支到当前分支
git merge [branch_name]
删除一个分支
git branch -d [branch_name]
删除远程分支
git push orign --delete [branch-name]
6. 查看信息
显有变更的文件
git status
显示当前分支的版本提交历史(完整的版本号信息)
git log
显示当前分支的版本提交历史(前7位版本信息)
git reflog
显示最近n次的提交
git log -n
git log -n --pretty --oneline
显示所有文件暂存区和工作区的差异
git diff
显示指定文件暂存区和工作区的差异
git diff [file]
7. 远程仓库同步
查看所有远程仓库
git remote -v
拉取远程仓库指定的分支,并与本地指定分支合并
git pull [remote_name] [remote_branch]:[local_branch]
如果拉取的分支是与当前分支合并,则[local-branch]可以省略
git pull [remote_name] [remote_branch]
如果拉取的分支是与当前分支合并,且与远程分支存在追踪关系(多个)
git pull [remote_name]
如果拉取的分支是与当前分支合并,且只与一个远程分支存在追踪关系
git pull
将本地的指定分支推送到远程仓库的指定分支上
git push [remote_name] [local_branch]:[remote_branch]
如果推送的分支是当前分支,则[remote-branch]可以省略
git push [remote_name] [local_branch]
如果推送的分支是当前分支,且与远程分支存在追踪关系(多个)
git push [remote_name]
如果推送的分支是当前分支,且只与一个远程分支存在追踪关系
git push
注意:[remote_name]一般默认是 origin
8. 撤销操作
恢复指定文件到上次 add 之前
git reset HEAD [file_name]
恢复所有到上次 add 之前
git reset HEAD
撤销上次commit, 并且撤销上次 add
git reset HEAD^
提交了本地commit,未提交远程仓库,撤销到上一次commit
git reset [commit_id]
回退到指定版本,工作区,暂存区跟随变化
git reset --hard [commit_id]
版本回退后强制推送到远程仓库
git push -f
注意:git reset 后本地库版本比远程库版本低,想要进行 git push -f 强制推送
9. 标签
查看所有标签
git tag
查看tag信息
git show [tag_name]
在当前commit 新建一个tag
git tag [tag_name]
在指定commit新建一个tag
git tag [tag_name] [commit_id]
新建tag的时候添加tag说明
git tag -a [tag_name] -m [tag-message] [commit_id]
推送所有tag到远程仓库
git push [remote_name] --tags
推送指定tag到远程仓库
git push [remote_name] [tag_name]
删除本地tag
git tag -d [tag_name]
删除远程tag,需要先删除本地tag
git push origin :refs/tags/[tag_name]
新建一个分支,指向指定tag
git checkout -b [branch_name] [tag_name]
注意:[remote_name]一般默认是 origin