本地操作
// commit 提交,在当前head指针指向的节点后添加新节点,若head指针也指向分支名,则该分支名也跟着移动
git commit
// 在指定位置(当前head指向节点)添加分支名,
git branch [新分支名] ([位置])
// 删除分支
git branch -d [分支名]
git branch -r -d[远程分支名]
// 移动head指针,位置可以是哈希值地址或者分支名,当位置是哈希值时,HEAD不再指向分支名,而是直接指向节点地址
git checkout [位置]
// 如果想同时新建分支,并移动head指针指向新分支名
git checkout -b [新分支名]
// 将某分支与当前head指向的节点合并,生成一个新的节点,若head指针也指向分支名,则该分支名也跟着移动
git merge [某分支名]
// 变基合并,线性的合并,
git rebase [基分支名] ([要移动的标签名])
// 移动分支标签名 -f 表示强制移动
git branch -f [标签名] ([要去的位置])
// 本地代码库回退
git reset HEAD^ 回退一次提交
git reset HEAD^^ 回退两次提交
git reset HEAD~3 回退三次提交
// 远程代码库回退 本质是提交一个相反的操作,所以可以看出,一旦推送的远程代码库,实质上是删除不了的
git revert HEAD 记录当前的提交的反向操作并提交
// 择优挑选提交(可以连续多个,有先后顺序)
git cherry-pick [位置] [位置]...
// 交互式 rebase ,实现上一个同样的功能
git rebase -i [位置]
//加标签,默认当前位置
git tag [标签名] ([位置])
// 描述当前位置,根据打的标签推定现在位置位于版本大概位置
git describe ([位置])
// 高级跳转节点,向上一个节点,再向右侧父节点跳转,再向上跳转三个节点。
git branch [节点名] [位置]~^2~3
远程
// 从远程仓库下载本地仓库中缺失的提交记录
// 更新远程分支指针(如origin/master origin/其他分支)
// 不会修改你本地仓库的状态,不会更新你的master 分支,也不会修改磁盘的文件
git fetch http://.......
git fetch git://......
// git fetch + git merge [刚刚下载的分支] = git pull 所以该命令可以同步远程仓库的内容
git pull git://......
// 远程仓库接收了本地的master,同时本地的origin/master 也更新到本地的master分支
git push
// 同步命令,使用变基或者合并来消除冲突
git pull --rebase;git push (使用rebase)
git pull ; git push (使用merge)