Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vagusx/git-petty-thing

petty thing about git
https://github.com/vagusx/git-petty-thing

Last synced: 2 days ago
JSON representation

petty thing about git

Awesome Lists containing this project

README

        

##git-petty-thing

* ####git rebase
>背景
提交代码后,本次commit和服务器中的某些commit不在同一时间轴上,即:本次commit需要参入到服务器中的某些commit之间,这样会造成代码冲突,所以要做rebase
方法:现在的分支为feature/mix,在本分至上刚提交过一些commit,此时
>* 1.新建一个分支,并且代码和服务器中代码同步

git checkout origin/master -b temp

git push

>* 2.回到feature/mix分支
git checkout feature/mix

>* 3.开始rebase操作
git rebase temp

>* 4.solve conflict 解决冲突后,
git add .

git rebase --continue

注意,在以上git add .之后是不需要git commit

>* 5.因为提交有多个,所以会出现多次solve conflict操作,直至没有冲突
>* 6.此时重新提交代码,
git push

* ####git 合并数次commit
>* 1.git log查看你需要合并的几条commit的hax_num

```
commit 5db46f...
Author: me
Date: Sun Jan 18 14:10:46 2015 +0800

fix the github-markdown layouts

commit cdedf...
Author: me
Date: Sun Jan 18 14:02:10 2015 +0800

sort it
```

>* 2.git rebase -i hax_num,此处hax_num是属于几条commit中最早的那一条commit的

```
pick d0ccecd remove ##
pick b677a3c add reset methods
pick ba1ce29 remove ##
pick cdedf66 sort it
pick 5db46fd fix the github-markdown layouts

# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
```
>* 3.将第一条commit的pick保留,其他要合并的commit的pick改为squash,然后退出
如果出现冲突,就solve conflict,
再次查看git log发现

```
commit dad35...
Author: me
Date: Sun Jan 18 13:29:37 2015 +0800

remove ##

add reset methods

remove ##

sort it

fix the github-markdown layouts
```

>* 4.git push

* ####git 修改某次commit
>* 1.git rebase -i
>* 2.将要修改的commit的pick改成edit
>* 3.git commit -amend
>* 4.修改commit内容,保存并退出
>* 5.git rebase --continue
>* 6.git log查看是否修改生效(可选)

* ####删除分支
>删除本地分支
>git branch -d feature/xxx
>** **
>删除远程分支
>git branch -d feature/xxx先删除本地分支
>git push origin :feature/xxx再将该空分支推送到远程,即可删除

* ####commit
>* git add .
>* git commit -m 'merge feature into master'
>* git push

* ####git merge 合并feature/xxx分支到master上
>* 1.git checkout master
>* 2.git merge feature/xxx
>* 3.commit
>* 4.删除feature/xxx分支

* ####git stash
>* 1.git stash暂存修改内容
>* 2.git stash pop从git栈中读取最近一次的stash内容,并从stash list中移除
>* 3.git stash list显示git栈中所有stash版本
>* 4.git stash clear清除git栈
>* 5.git stash pop stash@{1}git stash apply stash@{1} 后者不会从stash list中移除stash@{1}

* ####git如何删除远程仓库的某次错误提交
>* git reset –mixed
>此为默认方式,不带任何参数的git reset,就是这种方式,它回退到某个版本,只保留源码,回退commit和stage信息
>* git reset –soft
>回退到某个版本, 只回退了commit的信息,不会恢复stage(如果还要提交,直接commit即可
>* git reset –hard
>彻底回退到某个版本, 本地的源码也会变为上一个版本的内容