*git命令
git-for-windows
下载:https://git-for-windows.github.io/
git-bash路径表示
c:\ \c
d:\git \d\git
git工作流
本地仓库由git维护的三棵“树”组成
- 工作区:实际工作文件目录
- 暂存区(stage / index):暂存工作目录文件的改动,暂存在.git/index目录下
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库,其中HEAD指向你最后一次提交版本
git基本命令
- 创建mygit新仓库
cd \d\git
mkdir mygit
git init
- 克隆现有仓库
git clone /d/git/mygit
git clone username@hostname:/repository-path
- 添加变动
git add filename 或 git add --all
git add 将工作目录变更添加到INDEX暂存区,可以添加指定文件到暂存区,或添加所有变动(增、删、改)到暂存区。
- 提交变动到本地仓库
git commit -m "这是本次提交内容的描述"
git commit 将暂存区变动提交到本地仓库HEAD,但还未PUSH到你的远程仓库
git commit --amend -m "message" 重复上次提交(替换最后一次提交,包括-m 信息)
git commit -a -m "message" 提交工作区自上次commit之后的变化,直接到仓库区(不能提交新增加的文件)
- 推送变动到远程仓库
git push [remote] [branch] [--force] [--all]
如:git push origin master
--force 强行推送,哪怕有冲突
--all 推送全部分支
推送的前提是你已经连接到了远程仓库。
- 将本地仓库连接到远程仓库
git remote add origin git://github.com/paulboone/ticgit.git
git分支
分支可以使你从开发主线(master)上分离出来,不影响主线的同时,继续工作,并可以将工作成果合并到主线上。
- 新建分支
git branch mybranch
- 切换分支
git checkout mybranch
git checkout - 切换到上一分支
- 新建分支并切换分支
git checkout -b mybranch //创建mybranch分支并切换过去
- 查看分支
git branch [-r] [-a]
-r 列出远程分支
-a 列出远程和本地所有分支
- 删除分支
git branch -d mybranch
- 推送分支到远程仓库
git push origin mybranch //未推送前,该分支不为他人所见
- 设置分支跟踪
git branch --set-upstream-to=origin/master master
git 更新与合并
- 更新本地仓库至最新版本(获取、合并远程的变动)
git pull
- 更新本地仓库至最新版本(获取不合并)
git fetch
git pull & git fetch区别: git pull = git fetch + git merge 待理解???
- 合并其它分支到你当前分支
git merge feature_x
上面两种情况git都会自动尝试合并改动,如有冲突,需要修改冲突文件,手动合并冲突。
冲突文件修改后,使用 git add <filename>将其标记为合并成功。 为什么,有疑问???
- 差异比较
合并分支之前,可以先比较差异。
git diff <source_branch> <target_branch>
git标签
当你工作进入一个里程碑阶段,并希望永远记住此刻的快照,可以为其添加标签。
- 为提交添加标签
git tag v1.0 [commit_id] [-m "标签说明"]
为指定commit_id提交添加标签,省略则为最新提交添加标签。
使用-m参数,git会为标签添加注解,就像提交时的注解一样。
- 查看标签
git tag [-n]
-n 参数显示标签,同时显示-m参数添加的注解说明。
- 查看提交历史
git log [--decorate]
--decorate 参数可以显示提交历史,并带有标签信息
- 显示当前分支最近几次提交
git reflog
- 查看某次Commit变动的内容
git show [commit_id]
忽略commit_id,则显示最后一次提交变动的内容。
git版本操作
- 替换本地改动
git checkout [-- filename]
用暂存区中filename文件来覆盖工作区中的filename文件。 (--后面有空格)
git checkout .
恢复暂存区所有文件到工作区(不包括新增文件)
这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区
- 查看当前分支版本状态
git status
- 重置工作区与暂存区,与上一次提交版本一致
git reset --head
- 重置commit指针
git reset 重置当前分支指针(保留工作区)
git reset --hard 重置当前分支指针(不保留工作区)
- 隐藏/显示变动(未提交的变动暂时隐藏起来,稍后可以重置显示出来)
$ git stash 隐藏变动
$ git stash pop 重新显示变动
git配置
- 显示配置列表
git config -l
参考
- git使用规范流程,阮一峰
- git常用命令清单,阮一峰
- git远程操作详解,阮一峰
- git分支管理策略,阮一峰
- Git 工作流程,阮一峰
- git - 简明指南
- git概念、原理、使用
- 探索.Git目录,让你真正了解Git
branch 分支
fetch 获取
merge 合并
conflicts 冲突
decorate v.装饰、装修