git 配置:
.gitconfig
[user]
name = cpf099
email = cpf09@163.com
[color]
ui = true
[alias]
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
l = log --pretty=oneline
ll = log --graph --pretty=oneline --abbrev-commit
[receive]
denyCurrentBranch = ignore
[credential]
helper = store
[core]
fileMode = false
Git常用操作命令收集:
1) 远程仓库相关命令
检出仓库 : git clone git://github.com/jquery/jquery.git
查看远程仓库: git remote -v
添加远程仓库: git remote add [name] [url]
删除远程仓库: git remote rm [name]
修改远程仓库: git remote set-url --push[name][newUrl]
拉取远程仓库: git pull [remoteName] [localBranchName]
推送远程仓库: git push [remoteName] [localBranchName]
创建空仓库 : sudo git init --bare sample.git
创建远程分支(本地分支push到远程): git push origin [name]
删除远程分支: git push origin :heads/[name] 远程仓库是空的,加上-u,git push -u
我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。
如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。
提交本地test作为远程仓库origin的master分支: git push origin test:master
提交本地test分支作为远程的test分支: git push origin test:test 远程自动创建test分支
删除远程分支test git push origin :test 提交到远程的test将被删除,但是本地还会保存的
2)分支(branch)操作相关命令
查看本地分支: git branch
查看远程分支: git branch -r
创建本地分支: git branch [name] 注:创建新分支后不会切换到新分支
创建新分支: git checkout --orphan name 在当前分支上创建一个新的空分支分支,如果不提交,是没有这个分支信息的
分支改名: git branch -m old_name new_name
切换分支: git checkout [name]
创建新分支并立即切换到新分支: git checkout -b [name]
删除分支: git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支: git merge [name] ----将名称为[name]的分支与当前分支合并
3)版本(tag)操作相关命令
查看版本: git tag
创建版本: git tag [name]
删除版本: git tag -d [name]
查看远程版本: git tag -r 不可用
创建远程版本(本地版本push到远程): git push origin [name]
删除远程版本: git push origin :refs/tags/[name]
4) 子模块(submodule)相关操作命令
添加子模块: git submodule add [url] [path]
如:$ git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
初始化子模块: git submodule init 只在首次检出仓库时运行一次就行
更新子模块: git submodule update 每次更新,切换分支后都需运行
删除子模块:(分4步)
1)git rm --cached [path]
2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
3) 编辑“.git/config”文件,将子模块的相关配置节点删除掉
4) 手动删除子模块残留的目录
5)忽略一些文件、文件夹不提交
在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如
target、bin、*.db
查看两个版本改动的文件: git diff 前一版本id 后一版本id --name-only
或者 git diff 前一版本id 后一版本id --stat
git打补丁
git专用的补丁: git format-patch
git format-patch -s 6f909ec(前一版本号)
或者使用
git format-patch HEAD^ <==最近的1次commit的patch
git format-patch HEAD^^ <==最近的2次commit的patch
git format-patch HEAD^^^ <==最近的3次commit的patch
git format-patch HEAD^^^^ <==最近的4次commit的patch
通用补丁: git diff
git diff 6f909ec b2129b54 > 01.patch
前一版本号:6f909ec、后一版本号:b2129b54
检查补丁包: git apply --check 01.patch
应用补丁: git apply 01.patch
使用补丁: patch -p1 < 01.patch
如果修改代码的官方版本库不是Git管理的版本库,那么必须使用git diff生成的patch
git add \*
http://www.cnblogs.com/chaoguo1234/p/5323649.html
查看用于提交的暂存的修改文件 git diff --cached
git删除文件 git rm add2.txt
git查看未管理的文件(未版本控制) git clean -nf
git删除未管理的文件 git clean -f
删除未管理的目录 git clean -fd
删除未管理的文件和目录 git clean -xfd
删除被管理的文件: git rm --cached filePath
删除被管理的文件夹: git rm -r -f --cached filePath
删除被管理的文件: git rm -r -n --cached file -n:加上这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。
撤销git add添加的文件(重新放回工作区) : git reset HEAD files
丢弃工作区修改: git checkout -- files
不再追踪文件权限修改: git config core.fileMode false
忽略已经被提交的文件: git rm --cached file 然后重新git commit
如果想要忽略某些文件,需要在产生这些文件之前加入.gitignore文件中,否则被纳入了版本管理中,就忽略不了
注意: .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。
忽略管理文件: git update-index --assume-unchanged PATH
取消忽略文件的设定: git update-index --no-assume-unchanged <files>
这种做法需要每个成员都执行上述的命令,一旦一个没有执行,并且拉取了他提交的代码就必须重新执行update-index
查看已经管理的文件: git ls-files
展示所有未被追踪的分支: git ls-files --others
展示所有被忽略的文件: git ls-files --others -i --exclude-standard git check-ignore * git status --ignored
列举所有的别名与配置: git config --list
设置git大小写敏感: git config --global core.ignorecase false
设置自动更正: git config --global help.autocorrect 1
查看当前仓库所有未打包的objects和硬盘占用: git count-objects --human-readable
查看历史提交记录: git reflog
删除reflog: git reflog expire --expire=now --all
从object数据库中删除所有不可达的object: git gc --prune=now --aggressive
切换到其他的分支,将已经修改的保存到stash git stash save -a file
查看stash列表: git stash list
恢复stash的改动 git stash pop
删除stash git stash drop stash_id
查看谁修改了file git blame filename
将修改合并到其他分支 git cherry-pick id1..id2
创建SSH KEY ssh-keygen -t rsa -C "cpf09@163.com"
将生成的公匙添加到~/.ssh/authorized_keys文件中即可