git基础操作:http://www.admin10000.com/document/5374.html
git远程操作:http://www.admin10000.com/document/4554.html
# 生成密钥
ssh-keygen -t rsa –C "<userEmail>"
# 配置用户信息
git config --list
git config --global user.name "<userName>"
git config --global user.email "<userEmail>"
### 本地仓库操作
# 初始化仓库
git init # 需空目录下执行
git init <仓库名> # 建立一个仓库文件夹,并以此命名
# 添加文件
git add <fileName>
git add <dirName> # 添加指定目录到暂存区,包括子目录
git add . # 添加当前目录的所有文件到暂存区
git add * # 提交所有的文件到缓存区
git rm <fileName> # 删除工作区文件,并且将这次删除放入暂存区
git rm --cached <fileName> # 停止追踪指定文件,但该文件会保留在工作区
# 查看状态
git status
git log --stat # 查看每次commit发生变更的文件
# 提交文件
git commit -m "<注释内容>"
# 提交时显示所有diff信息
git commit -v
# 查看文件修改的内容
git diff <fileName>
# 查看历史修改记录
git log
git log --pretty=oneline
# 回退版本
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard HEAD~100
git reset --hard <版本号{从git log里查看}>
# 撤销修改
## 一、修改内容,还未提交(未git add)
方法一: 直接修改文件,add,commit;
方法二:git reset --hard HEAD^
## 二、git checkout -- <fileName>
情况一:文件修改了,还未提交到缓存区,执行撤销后,文件回到修改状态之前;
情况二:文件修改了,并且提交到缓存区,之后又修改了文件,执行撤销后,回到添加暂存区后的状态。
# 删除文件
git rm <fileName>
# 删除文件之后,未commit,再撤回
git checkout -- <fileName>
### 远程仓库操作
# 克隆git仓库
git clone <版本库的网址>
git clone <版本库的网址> <本地目录名> # 在本地生成目录,默认是使用git仓库的项目名
git clone -o <主机名> <版本库的网址> # 克隆时,指定主机名
# git中远程仓库,即远程主机 ,默认主机名时origin
# 列出远程主机
git remote
# 列出远程主机详细信息
git remote -v
# 查看主机详细信息
git remote show <主机名>
# 添加远程主机
git remote add <主机名> <版本库的网址>
# 修改远程主机名
git remote rename <原主机名> <新主机名>
# 删除远程主机
git remote rm <主机名>
# 拉去分支fetch
git fetch <远程主机名> # 将远程主机的更新,全部取回本地
git fetch <远程主机名> <分支名> # 取回特定的分支
# 取回远程分支后,在此分支的基础上,创建一个新的分支
git fetch
git checkout -b <newBranch> <远程分支名> # 示例: git checkout -b newBranch origin/master
# 拉取分支pull
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull <远程主机名> <远程分支名> # 远程分支是与当前分支合并,则冒号后面的部分可以省略; 等同于下面两步:git fetch ; git merge origin/master
# 本地分支和远程分支建立追踪(映射)关系
git branch --set-upstream <本地分支名> <远程分支> # 示例:git branch --set-upstream locaBranch origin/oneBranch
上面会被取消,以后会慢慢用下面
方法一:git branch --set-upstream-to=origin/remote_branch local_branch
方法二:
如果远程新建了一个分支,本地没有该分支,可以利用** git checkout --track origin/branch_name** ,这时本地会新建一个分支名叫 branch_name ,会自动跟踪****远程的同名分支 branch_name。
# 查看当前分支与远程分支的对应关系
git branch -vv
# 如果当前分支和远程分支存在追踪关系,则可以省略远程分支名
git pull origin
# 如果当前分支只有一个追踪分支,远程主机名都可以省略
git pull
# 推送分支
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master:master
# 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
git push <远程主机名> <本地分支名>
git push origin master
# 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
git push origin :master
# 删除远程分支
git push <远程主机名> --delete <远程分支名>
# 如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
git push <远程主机名>
git push origin
# 如果当前分支只有一个追踪分支,那么主机名都可以省略
git push
# 如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。
git push -u origin master
# 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。
git config --global push.default matching
# 或者
git config --global push.default simple
# 操作分支
# 创建分支
git branch <branchName>
# 切换分支
git checkout <branchName>
# 查看分支
git branch # 查看本地分支
git branch -a # 查看所有分支,包括本地分支和远程分支
git branch -r # 查看远程分支
# 创建并切换分支
git checkout -b <branchName>
# 合并分支
git merge <branchName> # fast forward模式,删除分支后,会丢掉分支信息
git merge -no-ff -m "<注释>" <branchName>
# 删除分支
git branch -d <branchName>
# 新建一个分支,与指定的远程分支建立追踪关系
git branch --track [branch] [remote-branch]
# 生成一个可供发布的压缩包
git archive
# 需要采用rebase模式,可以使用--rebase选项
git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
# 合并分支
git rebase
# 隐藏分支
git stash
# 恢复隐藏分支
git stash list
git stash apply # 恢复后,stash内容并不删除,你需要使用命令git stash drop来删除
git stash pop # 恢复的同时把stash内容也删除了