本文记录git使用过程中的一些操作

commit合并 链接到标题

作用:当提交一个Pull request时可能有多个commit信息,Log太长我们可以进行合并(squash) 状态:

commit e1a7dfa9dfea8e63ad079dba37c61d8e80ffbe1b
Author: Frank Li
Date:   Mon Nov 28 14:00:00 2016 +0800

add line in squash.txt

commit c6e45575484666245bb22d2d5d534bfee91f44c6
Author: Frank Li
Date:   Mon Nov 28 13:57:43 2016 +0800

create squash.txt

操作:

git rebase -i c6e4557

提示:

pick c6e4557 create squash.txt
pick e1a7dfa add text in squash.txt

# Rebase a71eba2..e1a7dfa onto a71eba2
#
# Commands:
#  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
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

修改为如下并保存:

pick c6e4557 create squash.txt
s e1a7dfa add text in squash.txt

提示:

# This is a combination of 2 commits.
# The first commit's message is:

create squash.txt

# This is the 2nd commit message:

add line in squash.txt

修改合并的commit信息保存即可

修改commit信息 链接到标题

作用:修改之前commit信息 操作:

git commit --amend

彻底删除文件 链接到标题

作用:从git仓库中彻底删除文件(git rm并不能彻底删除文件) 操作:

git rm path-to-your-remove-file
it filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path-to-your-remove-file' --prune-empty --tag-name-filter cat -- --all

path-to-your-remove-file为文件路径

bare使用 链接到标题

git init时使用bare可以建立独立仓库,被用于做push和pull,可以在局域网的情况下不搭建git server做多人代码管理,以下操作均在windows git bash下操作 建立bare repo

mkdir /d/repo.git
cd /d/repo.git
git init --bare

推送代码

cd /f/source
git init
git add .
git commit
git push /d/repo.git master

本机下载代码

git clone /d/repo.git

局域网内下载代码: A-PC windows下共享/mnt/d/repo.git(D:\repo.git),并给予读写权限。共享后B-PC windows下可以通过\192.168.1.66\repo.git访问,在B-PC 的git bash下执行

git clone //192.168.1.66/repo.git