git安装配置技巧

安装

  1. centos
yum install git
  1. ubuntu
apt-get install git
  1. 源码安装
wget https://www.kernel.org/pub/software/scm/git/git-2.5.0.tar.gz
tar zxvf git-2.5.0.tar.gz
cd git-2.5.0

./configure

make && make install

配置

git --version //查看版本

git配置文件位置 ~/.gitconfig

git config --global user.name "你的git账户名"       //配置git账户名

git config --global user.email "你的git账户邮箱"    //配置账户邮箱

一、AutoCRLF
#提交时转换为LF,检出时转换为CRLF--Windows使用
git config --global core.autocrlf true

#提交时转换为LF,检出时不转换--Mac Uniux上使用
git config --global core.autocrlf input

#提交检出均不转换--仅运行在windows上使用
git config --global core.autocrlf false
二、SafeCRLF
#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

#允许提交包含混合换行符的文件
git config --global core.safecrlf false

#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

设置区分大小写
git config --global core.ignorecase false

避免PULLING提交合并
git config --global branch.autosetuprebase always

颜色高亮
git config --global color.ui true
git config --global color.status auto
git config --global color.branch auto

设置默认编辑器
git config --global core.editor vim

设置默认的合并工具
git config --global merge.tool vimdiff
查看配置
git config --global --list

SSH key生成
ssh-keygen -t rsa -C "你的邮箱"    //生成的你的秘钥
cat ~/.ssh/id_rsa.pub                    //查看是ssh密钥:cd ~/.ssh
在github上面添加ssh 秘钥
多个ssh key共存/切换
依次生成key
ssh-keygen -t rsa -C "你的邮箱"  -f ~/.ssh/github

添加私钥
ssh-add ~/.ssh/github

如果执行ssh-add时提示"Could not open a connection to your authentication agent",可以现执行命令:

ssh-agent bash
然后再运行ssh-add命令。

# 可以通过 ssh-add -l 来确私钥列表
ssh-add -l

# 可以通过 ssh-add -D 来清空私钥列表
ssh-add -D

在~/.ssh中增加config配置文件
vi ~/.ssh/config
内容
#github home-win-key
Host github.com ##可以随意命名,链接时使用这个名字
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/github

#oschina home-win-key
Host git.oschina.net ##可以随意命名,链接时使用这个名字
HostName git.oschina.net
User git
Port 22
IdentityFile ~/.ssh/oschina

#coding home-win-key
Host git.coding.net ##可以随意命名,链接时使用这个名字
HostName git.coding.net
User git
Port 22
IdentityFile ~/.ssh/coding

git remote 修改远端 git@git.oschina.net:xx/xx 为别名(Host):xx/xx

测试配置
ssh -T git@git地址(例如:git.oschina.net、github.com)

命令

git init            //初始化环境

git clone 项目地址        //在本地建立远程仓库的副本

git status            //查看当前目录的git状态,包含当前所在的分支,是否有新增文件,是否有修改文件等
git status -s            //简洁模式显示
git config -l          //显示git配置

git log                //查看提交的历史记录,包含日志、版本号等。(":wq" 退出日志查看状态)
git reflog            //查看所有日志包含删除日志
git stash                     //将当前分支尚未commit的内容保存到暂存区
git stash list                 //当前分支的暂存区暂存列表
git stash pop                //重新加载最后一次保存到暂存区的内容

git diff 文件名称            //查看文件修改内容,“---”为更改前内容,“+++”为更改后内容
git diff HEAD^ HEAD     //两次提交的差异
git diff 35d9747a0cddeadf8a7ce76f518bc5be1ad54d6c^ d7ad404505f79c6678c04bb6c09c1607fc5d5ae9

git tag                        //用来为代码历史记录中的某一个点指定一个永久的书签, 一般来说它用于发布相关事项

git branch            //查看本地仓库的所有分支
git branch -r            //查看远程分支
git branch –a            //查看本地&远端仓库的所有分支
git branch -v            //查看各个分支最后一次提交
git branch 分支名称        //创建分支
git branch -d 分支名称        //删除本地分支
git branch -D 分支名称        //强制删除分支
git branch --merged        //查看合并前的分支
git branch –-no-merged        //查看哪些分支未合并入当前分支

git checkout 分支名称        //切换到指定分支
git checkout –b 分支名称    //创建分支并切换到新建分支

git add 文件名称        //在工作目录中新增文件:示例:git add README.md
git add .            //添加所有文件到仓库
git reset 文件名称        //撤销添加

git commit –m "备注"        //提交当前目录所有修改到本地仓库
git commit –a            //提交所有修改,该操作会打开vim手动指定要提交的文件。(":wq" 保存并退出)
git reset --hard commit_id     //撤销提交

git pull <远程主机名> <远程分支名>:<本地分支名>        //取回远程主机某个分支的更新,再与本地的指定分支合并。
git pull origin next:master    //取回origin主机的next分支,与本地的master分支合并
//如果远程分支是与当前分支合并,则冒号后面的部分可以省略
git pull origin next
//上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。
git fetch origin
git merge origin/next

git fetch <远程主机名>        //将某个远程主机的更新,全部取回本地
git fetch <远程主机名> <分支名>    //将某个远程主机的指定分支更新取回本地

git merge 分支名称        //将指定分支合并覆盖到当前分支

git rebase 分支名称        //把提交(补丁)临时存放到.git/rebase中,更新到最新版本,把补丁应用到最新分支中
//rebase解决冲突,解决完冲突执行git add 无需执行git commit 执行 git rebase --continue
git rebase –skip        //跳过
git rebase --abort        //任何时候可以执行,终止合并返回rebase前状态

git reset --hard HEAD^
git reset --hard 3628164     git 的版本都是很长的字符串

git revert

git push <远程主机名> <本地分支名>:<远程分支名>        //将本地分支的更新,推送到远程主机
git push origin master:master        //将本地master推送到远端master
//可写git push origin master
git push origin test:test               //提交本地test分支作为远程的test分支
git push origin :master            //如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
# 等同于
$ git push origin --delete master    //删除origin主机的master分支
注意:
git push ssh://git@dev.lemote.com/rt4ls.git master // 把本地仓库提交到远程仓库的master分支中
等价于
git remote add origin ssh://git@dev.lemote.com/rt4ls.git  //添加远端别名

合并后冲突解决办法
1. 提交全部
git commit -a

2. 如果不想提交全部,那么可以通过添加 -i 选项
git commit file/to/path -i -m "merge"

git流程

git flow
https://about.gitlab.com/2014/09/29/gitlab-flow/
中文版 http://www.15yan.com/story/6yueHxcgD9Z/
git各种流程介绍
https://github.com/oldratlee/translations/blob/master/git-workflows-and-tutorials/README.md
git-flow 备忘清单
http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html
原文地址:https://www.cnblogs.com/51fx/p/7019419.html