git init --bare 创建一个原始的裸仓库 -- 适用于服务端

git支持的协议:本地协议、ssh协议、git协议、http/https协议、ftp、rsync。其中git协议不能push。


git clone --bare URL 从URL克隆一个裸仓库到本地。

git push --mirror URL 从本地的一个裸仓库提交到URL服务器上。



git add filename filename添加到缓存区。

git commit -m 'xxxx' 提交添加到缓存区的东西到本地仓库

git push origin master 提交到远端仓库 -- 远端是指URL给的地址

git remote add origin URL 将本地的仓库提交到URL仓库,在没有clone的情况下。


git checkout -b branch_name 创建一个branch的分支

git checkout branch_name 切换分支

git checkout -d branch_name 删除branch_name的分支

git push origin branch_name 把branch_name push到URL -- 该URL为之前clone的URL或自己在config中指定的URL


git pull 从URL更新仓库到本地仓库

git merge branch_name 合并branch_name到当前branch

git diff source_branch target_branch 比较两个branch


git tag 0.0.1 32werfgiek 软件发布时创建标签

git log  查看提交的日志


git checkout -- filename 替换掉本地的改动

git fetch origin 丢弃所有的本地改动与提交,从URL上获取最新版本

git reset --hard origin/master 将本地主分支指向到它


git remote get-url --all 获取url

git remote set-url 设置push或者all的URL


git config --global user.name "username" 设置提交的全局用户名

git config --global user.email "email_address"  设置提交的全局邮件地址


git status  查看本地库的状态


常用配置  

system -- 系统级别

--global 用户全局

--local 单独一个项目

git config --global user.name "xxxx"

git config --global user.email "xxxxxx"

git config --global core.editor vim  更改git编辑器


git config --global alias.st status   配置别名

git config -l  列出所有配置


Git三种状态的操作

将工作区的修改提交到本地暂存。

git add filename

git add .


将本地暂存的内容(刚才 add的内容)提交到版本库

git commit -m "comment content"

git commit filename //基本上不用这个。

git commit .

git commit -a   //包括git add / git rm / git commit 这三个操作,所有一般在操作工作区的时候,直接删除了文件,而不是使用git rm的,最后提交是可以用这个。


放弃工作区的修改(使用当前暂存区的内容状态去覆盖工作区,达到放弃工作区修改的作用)

git checkout filename

git checkout .


改变暂存区的修改(重置HEAD,制定版本库的内容状态去覆盖暂存区)

git reset filename

git reset .

git reset $id   //恢复到指定的提交版本,该$id之后的版本提交都恢复到工作区

git reset --hard $id    //恢复到指定的提交版本,该$id之后的版本提交全部会被抛弃,将不出现在工作区。

git reflog show branch_name | head   //显示所有的版本记录,包括错误重置了HEAD之后的版本。


恢复某次提交(某次提交的回滚,不影响其他的提交,效果和创建一个新版本提交去回滚将指定的提交删除,包括产生的差异文件不会出现在工作区,而是直接被抛弃)