penn-wang
一位老和尚,他身边聚拢着一帮虔诚的弟子。这一天,他嘱咐弟子每人去南山打一担柴回来。弟子们匆匆行至离山不远的河边,人人目瞪口呆。只见洪水从山上奔泻而下,无论如何也休想渡河打柴了。无功而返,弟子们都有些垂头丧气。唯独一个小和尚与师傅坦然相对。师傅问其故,小和尚从怀中掏出一个苹果,递给师傅说,过不了河,打不了柴,见河边有棵苹果树,我就顺手把树上唯一的一个苹果摘来了。后来,这位小和尚成了师傅的衣钵传人。

1,命令:

git忽略提交文件:git rm --cache .idea/workspace.xml

因为你已经把他加到tracked file里了 用
git rm --cached java/.idea/workspace.xml
把他移除

.gitignore这个文件是用于 untracked 文件的忽略列表
你用add将文件标记为 tracked 状态 .gitignore就对其无效了

2,如果您有新的远程git仓库,以前旧的废弃不用。  试用一下命令,将旧的git复制到新的git远端上。

cd old.git

git push --mirror git@gitlab.com/****/new.git

再从新的git远端服务器上,拉取代码即可。

这种方法,新的git远端代码和旧的git远端代码,保持一致。包括所有的tags,branch。

3,同一台机器存在多个git账户。

比如:公司使用gitlab.*****.com 而自己使用 github。

配置config 目录:~/.ssh。  git默认是无config文件,自己新建一个 config。请看我的.ssh目录文件:

config        id_rsa.pub    id_rsa_penn.pub
id_rsa        id_rsa_penn    known_hosts

git使用 rsa来区分身份。 需新建"id_rsa_penn", 命名要区分区分"id_rsa"。 请看config文件:

Host gitlab.***.com
HostName gitlab.***.com
User git
IdentityFile ~/.ssh/id_rsa

Host github.com
HostName github.com
User 471793830@qq.com
IdentityFile ~/.ssh/id_rsa_penn

git访问config,通过 不同的host,来找到对应的 IdentityFile,即rsa。

当你从github,clone,即选择的是id_rsa_penn。 而从公司gitlab.****.com,选择的是id_rsa。

好了,这样你可以提交代码了。  

另外 你可能配置了全局的账户: 

git config --global --add user.name "penn" 
git config --global --add user.email "****.com" 

而现在使用两个账户 so,全局global的 user就不可以使用了。 请使用当前库下的local user。

取消全局:

git config --global --unset user.name
git config --global --unset user.email

进入到你的 “git库”目录下:

git config --local --add user.name "公司/github"
git config --local --add user.email "公司/github"

 3,git撤销commit

git reset --hard <commit_id>
git push origin HEAD --force

根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:
git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容。

posted on 2015-09-25 21:58  penn-wang  阅读(184)  评论(0编辑  收藏  举报