1.检出代码
git clone https://usrname@127.0.0.1:8443/r/ifp/mnt.git (master分支)
2.检出其他分支(DEV开发)
git checkout -b dev origin/dev
3.查看工作空间修改状态
git status
3.1针对存在的文件进行修改
3.2 新增加的文件
4.将准备提交的文件添加到提交暂存区
git add filePath (准备添加某一个文件)
git add . (本地本项目所修改的文件全部添加)
4.1准备提交的文件状态
4.1.1new file : 新创建的文件
4.1.2 modified :修改的文件
4.2 修改的文件快速取消修改,重置为未修改的状态
4.2.1 git checkout -- filePath (单个文件回退)
4.2.2 git checkout (所有修改的文件回退)
5. 提交代码到本地仓库
5.1 git commit -m commitRemark 直接提交时做的提交备注
5.2 git commit--amend commitRemark 追加最后一次commit的提交备注
5.3 修改远程某一次的提交备注
6.提交代码到远程
git push
7.代码处于4.1状态,但是有些错误要修改
git reset HEAD (将所有此状态的文件恢复到工作区可继续修改)
git reset HEAD filePath(指定某一文件恢复到工作区进行修改)
8.开发一部分内容后突然要改另一个内容,此时需要保存本地修改
8.1新建一个本地仓库/工作空间,两边开发互不影响代码提交后可能要解决冲突(耗费时间长,不推荐;但是版本管理者可以随时合并代码)
8.2 将代码保存到快照暂存区
8.2.1 git stash save saveRemark (针对修改的文件进行快照暂存,可能会出现newFiles丢失的情况)
8.2.2 git add . ;git stash save saveRemark(将本地所有改动过内容进行快照暂存)
8.3 查看快照暂存列表
git stash list
8.4 使用某一个快照暂存
8.4.1 快速使用列表中的第一个暂存并在快照暂存区删除掉这个暂存
git stash pop
8.4.2 使用某一个暂存(并不会在快照暂存区删除,可多次重复利用)
git stash apply stash@{stashIndex} /* 0代表第一个暂存,以list的形式进行保存,也以list的形式使用 */
8.5 删除不用/过时的快照暂存
git stash drop stash@{stashIndex}
8.6 查看某个快照暂存具体修改内容
git stash show -p stash@{stashIndex}
9.代码合并(简)
9.1 git cherry-pick commitId 将一个commit包含的内容挑拣到当前的分支上
如果出现冲突(冲突的文件可以按此寻找<<<<<<<
此为原内容
====
此为挑拣内容
>>>>>>>),
则需要解决冲突;如果不能直接解决冲突,需要重试的可以执行9.2
9.2 取消cherry-pick
git cherry-pick --abort 取消当前的cherry-pick
9.3 冲突解决完成,继续进行
git cherry-pick --continue 进入vim 编辑器,备注解决冲突内容,方便意会
10 git merge 命令(参考cherry-pick,类似,作者不常用)
[ 针对分支的操作 ]
11.分支(Branch)
11.1 查看本地分支
git branch
本地共3个分支,且当前分支处于dev分支上
11.2 查看本地分支与远程分支的关联情况
git branch -vv
当前共有四个分支,且每个分支都追踪到了远程(origin)对应的分支名称上
11.3 本地创建分支
git branch newBranchName /* 以当前分支为基准创建一个新分支,但不关联任何远程分支,也不切换到创建的分支上 */
git checkout -b newBranchName /* 以当前所处分支为基准创建并切换到新分支上,但不关联任何远程分支 */
git checkout -b localBranchName origin/originBranchName /* 在本地创建分支并关联远程originBranchName分支 */
11.4 本地删除某个分支
git branch -d
git branch -D /* 强制删除某个分支 */
11.5 创建远程分支
git push origin originBranchName /* 直接在远程创建一个分支 */
git push origin originBranchName : local /* 以本地分支(local)为基准在远程创建一个分支,但两者并未关联 */
11.6 删除远程分支
git push origin --delete originBranchName /* 推送到远程,删除远程分支 */
git push origin : originBranchName /* 推送到远程,推送一个空分支即删除远程分支 */
11.7 本地分支与远程分支建立关联关系,以便交互
git branch --set-upstream-to origin/originBranchName /* 将当前所处分支与远程分支建立关联关系 */
git branch --set-upstream-to=origin/originBranchName localBranchName /* 不论处在哪个分支,但是建立本地分支与远程分支的关联关系 */
11.8 解除本地分支与远程分支的关联关系
git branch --unset-upstream /* 解除当前操作的分支所建立的远程关系(处于某个分支解除某个) */
11.9本地分支重命名
git branch -m oldBranchName newBranchName
12.rebase(美化提交)
git rebase -i commitId~number /* 以commitId为起点,合并number个提交 */
准备合并8c8d49c~5d89b8
git rebase -i HEAD~2 || git rebase -i 5d89b8df2fd6db1e9ee455706375069b17a0ff5c~2
进入:
修改 pick关键字==>>>
退出编辑器
进入提交信息编辑状态可最后修改提交信息,之后保存并退出,就看到之前的三个提交合并到了一个提交里边
13.修改提交备注(远程)
git rebase -i HEAD~number /* number确保能够到达要修改的备注信息版本 */
进入vim编辑器页面,找到要修改的备注版本,将前面的pick改为edit,保存并退出
git commit --amend 再次进入vim编辑器中,此时修改提交备注信息,保存并退出
git rebase --skip 完成rebase操作
git push --force 强制推送到远程
14. 查找指定的提交
git log --grep str 在提交记录中查找符合条件的提交
git log --grep 'str1|str2' 在提交记录中查找符合条件的提交(多个条件需加'')
Tips:
1. 当前处于dev分支时:
git pull origin dev
===>>> * branch dev -> FETCH_HEAD
2.查看所有分支:
git branch --all
dev
master
remotes/origin/HEAD->origin/master
remotes/origin/dev
remotes/origin/master
3.异常退出
在编辑提交信息等vim页面时,如果出现异常退出现象,哪么重复操作依然进行不了任何操作,此时
需要进入项目的.git文件夹删除交换文件.swp,之后重复操作便可行
需删除.COMMIT_EDITMSG.swp和COMMIT_EDITMSG
4. 强制回退远程代码
此时我们知道 081aee9e33a9034f22c6b00a95f10cbf855f4302 是一个错误的提交,需要强制回退到远程,
4.1 将本地分支切回到指定版本
git reset --hard e914f20e93802a2cfc5f994f10aea2c474a01007
4.2 将远程强制回退
git push --force
5. 当自己本地分支与远程分支不一样(本地分支回退,但忘记强制推送到远程git push --force 的情况下,本地分支就做了修改并commit)
解决: git checkout -b temp origin/branch
在temp分支上 git reset --hard commitId(要回退到的版本号本地操作)
git push --force origin HEAD:remoteBranchName(远程操作)
之后切换到要推送的分支,就可以直接推送远程了
6. 全局配置路径
vim ~/.gticonfig 可快速修改别名,提交用户信息等