git 常用命令

远端 和 本地操作命令做归并整理

---------------------缩写-----------------------

branch-br |  checkout-co commit-cipull-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

原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/6323121.html