git笔记

修改工作目录

$ git config core.worktree /path/to/new/dir

使用别名

[alias]
st = status
ci = commit
co = checkout
br = branch
glog = log --graph
dlog = log --decorate
plog = log -p
nlog = log --name-status
[color]
ui = auto
[core]
editor = vim

创建空分支

$ git symbolic-ref HEAD refs/heads/newbranch
$ rm .git/index
<do work>
$ git add your files
$ git commit -m 'Initial commit'

http://gitbook.liuhui998.com/5_1.html

修改最后一次提交:

$ git commit --amend

恢复到上一个提交:

$ git reset --hard HEAD^

提交上一次提交的反转:

$ git revert HEAD

ssl认证出错:

git config --global http.sslVerify false

git push origin branch_name 推送分支。默认只推送master分支。

git fetch origin 会将远程分支也下载下来,但本地无分支

git checkout -b branche_name origin/branch_name 将远程分支创建本地分支

对于原始库,就是创建分支的那个库,想得到后来其他库对分支的修改,需要使用git pull: git pull origin branch_name

转换hg到git

使用fast-export:

1.创建目的git库:mkdir dest_git; cd dest_git; git init 2.转换: /path/to/hg-fast-export.sh -r /path/to/source_hg 3.git reset --hard HEAD

cd existing_git_repo git remote add origin git@github.com:amoblin/flyshion.git git push -u origin master

合并多次提交

$ git reset --soft [开始合并的提交]
$ git ci --amend

git svn相关

git svn rebase 更新版本库

讲Git工作流的,很好 http://heikezhi.com/2011/08/04/understanding-the-git-workflow/ 知道了squash合并

git clone https:// 出现认证错误解决方法: $ git config --global http.sslVerify false

git rebase 变基, 一般用来把两个分支合并成一个分支,但不是merge,而是移植。

防止远程合并,不顺序

打包

$ git archive -o ../proj.zip HEAD

不能删除submodule

$ git rm --cached [dir]

遇到的问题

$ git st
fatal: cannot exec 'git-st': Permission denied

解决方法:

查看问题的原因:

$ strace -f -eexecve git st 2>&1 | grep EACC
[pid 3993] execve("/home/sndba/scripts/bin/git-st", ["git-st"], [/* 22 vars */]) = -1 EACCES (Permission denied)
[pid 3993] execve("/home/sndba/scripts/bin/git-st", ["git-st"], [/* 22 vars */]) = -1 EACCES (Permission denied)

目录没有访问权限?

# ll /home/sndba -d
drwx------ 5 my3000 3353 4096 Jul 6 15:34 /home/sndba

果然!

tagged by
comments powered by Disqus