git 小结

来源:互联网 发布:国家创新训练项目 知乎 编辑:程序博客网 时间:2024/04/18 22:49

初始化git目录:

git init

从远程主机克隆代码:

git clone 远程主机

克隆后默认远程主机名为origin,默认分支为master

查看远程主机:

git remote

将修改添加到缓存区:

git add

提交到本地仓库:

git commit -m “”

提交到远程仓库:

git push 远程主机 远程分支:本地分支

从远程仓库更新:

git pull或git fetch

git fetch是将远程仓库的代码更新到本地,更新后还要用git merge将更新的代码与本地代码合并
git pull将远程代码更新后并merge,我一般用git pull的rebase模式,这样可以让分支历史看起来像没有合并过一样,是一条线下来的。
撤消操作

git reset

没有push,这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题.
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交commit_id,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard 79f673d631b08907496ce792f429e1f00da25b73。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
回退远程仓库代码

git revert

已经push,对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令
git revert用一个新提交来消除一个历史提交所做的任何修改.
revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新.(这里不会像reset造成冲突的问题)
revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看.
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
resert和revert两者区别
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit看似达到的效果是一样的,其实完全不同.
第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突(或git push -f强制推送).但是revert 并不会.
第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.
第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

查看远程分支:

git branch -a 或者 git branch -r

结果是远程分支列表,如下图:
这里写图片描述
带*的为当前分支

查看本地分支:

git branch

获取或切换分支:

git checkout

我一般用git checkout -t 远程分支 从远程主机获取分支,-t的意思是从远程主机获取分支并在本地创建与远程分支同名的分支。也可以用git checkout -b 本地分支名 远程分支 来获取远程分支并自定义本地分支名。用checkout获取分之后本地分支会自动切换到刚获取的分支上。
checkout也可以在本地工作空间切换分支。如本地有两个分支master和branch1,当前工作空间为master分支,可以用git checkout branch1将本地工作空间切换到branch1上。

暂存已改动的内容

git stash

恢复暂存的内容:

git stash pop

还有别的后续再补充。。。

参考文章:http://www.cnblogs.com/chenlogin/p/6592228.html

原创粉丝点击