(1)本地分支管理
1.初始化本地git仓库
$git init
2.拉取远程代码
$git clone ssh_address
如果已经建立了本地分支和远程分支的管理,可以直接执行
$git pull 该命令相当于git fetch + git merge获取远程最新修改并合并,但不会删除本地的基于之前base的提交,本地修改也会和最新的修改合并,但是基于以前base的修改依然存在,假设某一天回退到该版本,那么就会舍弃其他人的修改。
$git pull --rebase 而rebase则是将之前的本地commit废除,将该commit合并到最新的commit上,这样所有的commit都是沿着一条主线下来。
pull之后通常需要将本地commit提交到远程分支
将本地的commit提交到远程分支的命令如下
$git push origin master
origin为远程主机名, master为与本地分支对应的远程分支名
如果远程分支与本地分支已经建立了联系,那么可以直接使用下面指令
$git push origin
如果只有一个远程分支,那么可以省略主机名,直接使用
$git push
如果是本地分支对应的远程分支不是master,而是一个其他的独立分支,和本地相对应,那么提交方法为
$git push origin localbranch:remotebranch
3.查看本地的分支
$git branch
4.切换分支
$git checkout branch_name(假设该分支已经存在)
5.创建本地分支
$git checkout -b branch_name创建并切换到该分支,相当于$git branch branch_name $git checkout branch_name
该分支是基于当前的master分支(即主分支)
6.重命名本地分支
$git branch -m old_name new_name
7.删除本地分支
$git branch -D branch_name
8.查看缓存区状态
$git status
9.查看修改记录
$git log
按关键字检索提交的log记录
$git log --grep 关键字
按照关键字和作者检索log
$git log --grep 关键字 --author 作者
10.彻底回退到之前的某个版本
$git reset --hard commit_id
11.合并某几条提交
假设有commit_id_0; commit_id_1; commit_id_2; commit_id_last
a.合并后面两条的方法
$git reset --soft commit_id_1
$git status
$git add .
$git commit -m ""
git reset --soft意思是从该commit之后的所有修改都恢复为暂存状态,可以把他们一起commit为一条。
b.如果是想合并中间的某几条commit,那么就使用git rebase命令
首先用git log命令找到合并之前的那个commit id,然后执行
$git rebase -i commit_id
接下来会弹出一个修改窗,前面几行是这样的
pick id_1
pick id_2
pick id_3
将需要合并的commit的pick改为squash或者s,保存退出。
12.将创建的本地分支合并到master分支
$git merge local_branch_name
(2)远程分支的操作
1.查看远程分支
$git branch -r
2.查看所有分支
$git branch -a
查看所有分支的状态
$git branch -av
3.创建与远程分支对应的本地分支
$git checkout -b localBranch origin/remoteBranch
创建本地分支localBranch,它与远程分支remoteBranch对应,origin为远程主机名。
4.将本地分支推送到远端
$git push origin localBranch
5.查看远程分支log
$git log origin/remoteBranch
origin为远端host名字
6.删除远程分支
git push origin --delete remot_name
7.重命名远程分支
a.删除远程分支
b.重命名本地分支$git branch -m oldName newName
c.推送本地分支
$git push hostName localName
(3)git补丁的生成与应用
通常,一个commit对应一个patch文件。
1.生成patch的命令
为某条commit生成patch
$git format-patch commit_id -1
为某两条commit之间的修改生成patch
$git format-patch commit_id1 commit_id2 (包括起始的两条commit)
为某条commit之后的n条提交生成patch(包含该commit)
$git format-patch -n
2.应用patch
$git am modify.patch应用某个补丁文件
$git am *.patch应用所有补丁文件
$git am --reject modify.patch强制打补丁
(4)如果不小心 删除了某条commit,那么可以用reflog来恢复
$git reflog
(5)如果想把当前的修改不commit的情况下与最新代码合并,可以使用git stash命令
具体步骤是这样的:
a. git stash将最新的修改保存到暂存区
b. git pull --rebase 拉取远程服务器的最新代码
c. git stash pop 将暂存区的修改应用到当前最新代码
(6)如果本地基于master创建了一个分支,并且把这个分支推送到了远端,此分支很久没有和master分支进行同步,那么该如何把master的最新修改合并到这个分支呢,具体步骤如下:
首先切到master分支,git checkout master
然后拉取master的最新代码, git pull --rebase
再切换到另外的本地分支 git checkout localbranch
合并master的最新修改git merge master
解决冲突,接着git add , git commit
将本地修改推送到远端git push origin [localbranch]:[remotebranch]
(7)修改已经提交到服务器的commit
如果要修改最近的一次commit,可以这样
git commit --amend修改
git fetch
git push origin branch_name --force
如果想更新修改,那么可以这样
1.git commit --amend 保存修改
2.git push -f 主机名 HEAD:refs/for/远程分支名