git
1.git合并分支
1.git merge "分支" 是按照时间戳合并的,也就是分支修改时间,如果在旧的分支上合并新分支的代码,旧分支的代码就会被新分支代码合并。
正确的做法是:
(1)在新分支上merge旧分支代码,合并冲突后切换到旧分支
(2)在旧分支上合并新分支代码
2.拉取远程分支并创建本地分支
git checkout -b 本地分支名x origin/远程分支名x
#使用该方式会在本地新建分支x,并自动切换到该本地分支x。
#采用此种方法建立的本地分支会和远程分支建立映射关系。
git fetch origin 远程分支名x:本地分支名x
#使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。
#采用此种方法建立的本地分支不会和远程分支建立映射关系。
git branch -vv #查看本地分支与远程分支的映射关系
git branch -u origin/addFile #建立当前分支与远程分支的映射关系
git branch --unset-upstream #撤销本地分支与远程分支的映射关系
问题思考:本地分支只能跟踪远程的同名分支吗?答案是否定的,本地分支可以与远程不同名的分支建立映射关系
3.commit
git commit --amend -m "新的修改提交信息" #Git修改commit提交信息 (注意,仅仅只能针对最后一次提交)
git log #查看所有的commit提交记录
git show #查看提交的详情
git rebase --abort #取消变基
git rebase -i HEAD~4 等于 #在 commit 的后面加上 ~ 号和一个数,可以把 commit 往回偏移,偏移的数量是~ 号后的数。
git rebase -i HEAD^^^^ #可以把 commit 往回偏移,偏移的数量是^ 的数量。
按字母 i 进入编辑模式,ESC + :wq 退出编辑模式。
编辑玩保存的话需要将 pick 改成 edit
4.放弃本地文件修改
git checkout -- filename # 未使用git add 缓存代码,放弃单个文件
git checkout . # 放弃所有文件修改
# 此命令不会删除新建的文件,因为新建的文件还没加入git管理系统中,所以对git来说是未知,只需手动删除即可
git reset HEAD filename # 已使用git add 缓存代码,未使用git commit
git reset HEAD # 已使用git add 缓存代码,未使用git commit 放弃所有文件修改
# 此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了第一步,未使用git add 缓存代码,继续使用用git checkout -- filename,就可以放弃本地修改
git reset --hard HEAD^ # 已经用 git commit 提交了代码 回退到上一次commit的状态
git reset --hard commit id # 回退到任意版本 使用git log命令查看git提交历史和commit id
5.git log
git log # 命令可以显示所有提交过的版本信息
git reflog # 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)