远端 和 本地操作命令做归并整理
---------------------缩写-----------------------
branch-br | checkout-co | commit-ci | pull-pl | push-ps | status-st
comment : -m(参数)
build:-b(参数)
------------------- 配置-------------------------
git config core.filemode false 忽略文件权限方面的修改
------------------- 本地命令---------------------
git init 把所在目录变成Git可以管理的仓库
git status 查看修改或者新增的文件
git add <path> 把需要提交的文件的信息添加暂存区;撤销暂存: git reset HEAD [文件路径]
git diff fileName 可以查看索引库中文件和原版本的差异
git diff HEAD -- fileName 可以查看工作区和版本库里面最新版本的区别
git commit -m "log" 提交到本地库
git log 显示从近到远的提交日志
git reflog 查看历史命令(带版本号)
git branch 查看当前使用版本
git branch -a 查看本地所有版本
git fetch -v 查看最新版本
git fetch origin feature/20171016_minsheng:feature/20171016_minsheng #从远程库获取代码。
git remote -v 查看远程库信息
git tag 20180123-02 #打标签
git push origin 20180123-02 #推送标签
git checkout master 切换到主干分支
git merge branchName 合并指定分支到当前分支(有的需要root权限)
git checkout -b branchName 在当前分支下,创建并切换到新分支
git branch -D branchName 在主(非当前)分支下,删除本地分支
git branch -D -r origin/BranchName 删除本地的远程分支
git push origin --delete branchName 远程删除git服务器上的分支
------------------- 远端交互命令---------------------
git clone url 拉主干或者分支
git checkout -- fileName 撤销修改。(编辑保存了,但还没有git add)
git reset HEAD fileName 撤销暂存,重新放回到工作区。(已经git add,但还没有git commit)
git reset HEAD^ (已经commit,但未push的撤销,改动不变,撤销git commit,撤销git add)
HEAD^的意思是上一个版本,也可以写成HEAD~1 。 如果你进行了2次commit,想都撤回,可以使用HEAD~2
--soft 不删除工作空间改动代码,撤销commit,不撤销git add .
--mixed 不删除工作空间改动代码,撤销commit,并且撤销git add .此为默认参数。 git reset --mixed HEAD^ <=>git reset HEAD^
--hard 删除工作空间改动代码,撤销commit,撤销git add . 注意完成这个操作后,就恢复到了上一次的commit状态。
git reset --hard HEAD^
git reset --hard 3628164 定位到指定版本,版本号没必要写全,具有唯一性就可以了,Git会自动去找。
如果commit注释写错了,只是想改一下注释,只需要:git commit --amend
删除
一种情况是确实要从版本库中删除该文件
git remove fileName
git commit -m "log"
另一种情况是删错了,因为版本库里还有,可以把误删的文件恢复到最新版本
git checkout -- fileName git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
git pull 拉回服务器的更新并合并(master)
git pull origin branch-name
git push origin branch-name 从本地推送分支到远程
git checkout -b branch-name origin/branch-name new本地分支,并与远端exist分支关联。
git branch --set-upstream branch-name origin/branch-name 将本地exist分支与远端exist分支关联。
1. Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区。
2. 因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
3. 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。 用git log --graph命令可以看到分支合并图
多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。 这就是多人协作的工作模式,一旦熟悉了,就非常简单。
参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git reset(删除问题及其后面的所有版本) && git revert(在前进中解决问题版本) && git rebase(剔除问题版本)
现状:A -> B -> C -> D -> E,想要还原到 commit C 之后的状态 (也就是把 D 和 E 回退)
【1】git reset C(git 会将 log 中的 D, E 都清除)
【2】git revert E git revert D 结果: A -> B -> C -> D -> E -> F -> G, F 是还原 commit E 修改结果的 commit, G 是还原 commit D 修改结果的 commit。
【3】假如只想要还原 D ,变成A -> B -> C -> E
git rebase -i C
这时候会出现文字编辑
pick D xxx
pick E ooo
把 pick D xxx 整列移除后储存就可以了,
若中间有遇到冲突,则必须自行修正后再继续
git add .
git rebase --continue