git代码提交方式
发表于 2016-07-27
设置Git
git config --global user.name "your_username"
git config --global user.email "your_email@domain.com"
创建一个本地代码库
直接clone线上代码库
git clone https://github.com/git/*.git
如果你已经在本地的项目上工作了,只是想从远程代码库上取得它最新的版本,移动到项目的根目录下,并发送:
git pull origin master
或者本地创建
mkdir mygit
cd mygit
git init
Github的提交方式
git add . //暂存到本地
最后的“.”符号的意思是“所有文件、文件夹和子文件夹”。假如我们只想要把特定文件添加到源代码控制中去,我们可以指定它们:
git add a.file, b.file
git status //查看文件状态
git commit -m 'message' //存储打标
git pull //下载服务器代码
git push //上传代码至服务器
暂存
我们在使用git的时候也会遇到这样的情况。当在需要紧急处理一个bug时,工作区内容又没有完成,不适合提交,想暂存起来。git提供了git stash命令来解决这样的需求。
//暂存当前状态
git stash
//显示已暂存列表
git stash list
//恢复暂存区和工作区进度
git stash pop
创建分支
git checkout -b new_feature
或者,你可以先创建一个分支然后手动切换,就像这样:
git branch new_featuregit checkout new_feature
查看项目下所有分支
git branch
切换分支
git checkout 分支名
放弃修改直接切换分支(谨慎操作)
git checkout file-name // 放弃单个文件修改
git checkout *.js //放弃同后缀名所有文件修改
git checkout . //放弃所有文件修改
合并分支
当你对你的新功能满意了的时候,你想要把它加到主干分支上。当你在你的新功能分支上时,你首先需要加载(stage)并且提交你的文件:
git add .
git commit -m "adds my new feature"
然后你移到你的主干分支:
git checkout master
像这样合并:
git merge new_feature
丢弃分支
相反,如果你打算丢弃你在分支里做的修改,你首先需要加载(stage)你的文件并且在分支里提交:
git add .
git commit -m "feature to be discarded"
然后,你移到主干分支:
git checkout master
删除一个分支
如果你要把你的分支合并到主干分支,从主干(master)分支上发送:
git branch -d new_feature
假如修改已经合并了,它只会删除分支。假如分支没有合并,你会得到一个错误信息。删除一个未合并的分支(通常你不想保留的修改),你需要发送一样的命令附带一个大写D。意思是“强制删除分支,无论如何我不想要它了。”:
git branch -D new_feature
删除远程分支(git version > 1.7.0)
//git push origin :branchName //git version < 1.7.0
git push origin --delete branchName //git version > 1.7.0
删除tag
git push origin --delete tag tagName
A删除远程分支后,B使用branch -a查看时同步A的删除
git fetch -p
回滚到之前的提交状态
git log
这会输出你的提交的历史记录,像这样:
commit 744fd32f14604e6dacd458e9415e926574ae0956
Author: yourname <yourname@domain.com>
Date: Wed Jul 27 20:30:43 2016 +0800
如果你想回到上面的这个提交
git checkout 744fd32f14604e6dacd458e9415e926574ae0956
还想了解更多?请查看Git官方文档git或者阮一峰博客:ruanyifeng
.gitconfig 配置
[core]
editor = vim
quotepath = false
# 处理windows和linux下换行时\r\n和\n的区别,尽量保持一致
# autocrlf表示以已输入换行为准,不自动替换,减少fetch后差异的出现
autocrlf = input
# eol表示统一使用\n, 在add后自动替换\r\n为\n,减少提交后的差异
eol = lf
# 忽略大小写, false表示不忽略大小写
ignorecase = false
[alias]
ll = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
co = checkout
ci = commit
br = branch
st = status
ps = push
pl = pull
[color]
ui = auto
[color "branch"]
current = yellow reverse
local = yellow
remote = green
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
[color "status"]
added = yellow
changed = green
untracked = cyan