git作为当代较为流行版本管理工具,一些常用到的命令跟大家分享一下
Git把管理的文件分为了以下几个区域:
- Workspace:工作区 (本地计算机)
- Index / Stage:暂存区 (本地计算机)
- Repository:仓库区(或本地仓库) (本地计算机)
- Remote:远程仓库 (远程计算机)
新建代码库
# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url]
配置相关
# 显示当前的Git配置 $ git config --list # 编辑Git配置文件 $ git config -e [--global] # 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]" # example $ git config --global user.name "zhungli" $ git config --global user.email zhungli@example.com # 远程仓库 # 查看远程仓库 $ git remote -v # 添加远程仓库 $ git remote add <shortname> <url> # example $ git remote add pb https://github.com/paulboone/ticgit # 远程仓库的移除与重命名 $ git remote rename pb paul # 重命名 $ git remote rm paul # 移除
创建与切换分支
# 创建分支 git branch feature/test # 创建并切换到新分支 git checkout -b feature/test # 切换分支 git checkout feature/tes # 查看所有分支 git branch # 查看远程分支 git branch -r
删除分支
# 删除分支 (不能删除当前分支) git branch -D feature/test # 删除远程分支 git push origin :feature/test
提交到版本库
# 查看Git当前状态,如:那些文件被修改过、那些文件还未提交到版本库等 git status # 将指定文件添加到版本库的暂存状态。 git add test.py git add . # 代表所有 #将暂存区的文件提交到版本库的分支。 git commit -m “提交信息” git commit -am “提交信息” #(add与commit 合并操作) #查看提交记录,即:历史版本记录
提交到远程仓库
# 上传信息到远程服务器(master可换成其他分支名) git push origin master # 所有 git push
拉取
$ git fetch [remote-name] # 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。 $ git pull origin master # 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。
回滚
git log # 命令可以显示所有提交过的版本信息 但,假如reset更前的版本又想reset回去,你会发现log是看不到后续的版本。 git reflog # 如果在回退以后又想再次回到之前的版本,git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录 # 回滚 git reset --hard “版本号前七位即可”
撤消操作
git commit --amend命令是修复最新提交的便捷方式。它允许你将缓存的修改和之前的提交合并到一起,而不是提交一个全新的快照。它还可以用来简单地编辑上一次提交的信息而不改变快照。
但是,amend不只是修改了最新的提交——它进行了一次替换。对于Git来说,这看上去像一个全新的提交
git add test.py git commit -m“提交信息” # 意识到你忘记添加 forget.py 的更改 git add forget.py git commit --amend --no-edit #--no-edit标记会修复提交但不修改提交信息。需要的话你可以修改,不然的话就像往常一样保存并关闭文件。完整的提交会替换之前
获取所有分支信息
git fetch --all
修改远程指向
git remote set-url origin <project url>
暂缓
# 把当前修改放入暂缓区 git stash # 把暂缓区信息合并到当前分支 git stash pop
打标签
Git 也可以对某一时间点上的版本打上标签。人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做。
# 查看标签 git tag # 打标签 # 创建轻量标签 (创建轻量标签不需要传递参数,直接指定标签名称即可) git tag v0.2.0 -light # 创建附注标签 (创建附注标签时,参数-a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中) git tag -a v0.1.0 -m "release 0.1.0 version" #切换标签 git checkout [tagname] #删除标签 git tag -d v0.1.2 #发布标签 # 将v0.1.0标签提交到git服务器(通常的git push不会将标签对象提交到git服务器,故我们需要进行显式的操作) git push origin v0.1.0 # 将本地所有标签一次性提交到git服务器 git push origin -–tags