git
1.拉取远程分支并创建本地分支
// 本地分支和远程分支映射关系
git checkout -b 本地分支名 origin/远程分支名
2.合并分支
// 将当前分支与指定分支<branch-name>进行合并
git merge <branch-name>
3.新建并切换到新建分支上
git checkout -b <branch-name>
运行 git checkout -b <branch-name> 命令可以创建一个新分支,并切换到该分支。在创建这个新分支时,它会基于你当前所在的分支的状态进行创建。
如果两个分支的代码在创建新分支之前是完全一样的,那么新创建的分支会与当前分支的代码完全相同。这是因为 Git 在创建分支时,实际上只是将当前分支的引用复制给了新分支,两者共享相同的提交历史和文件快照。
然而,一旦新分支创建完成后,你可以在任一分支上进行修改和提交,而这些修改只会影响到当前所在的分支。因此,即使两个分支起初是相同的,它们随着时间的推移也可能会出现差异。
所以,如果你在创建新分支之后在其中一个分支上进行了修改,两个分支的代码就会开始分岔开来,不再完全一样。
4.删除分支
git branch -d <branch-name>
5.查看分支
// 本地仓库的所有分支
git branch
// 远程仓库的所有分支
git branch -r
6.关联远程仓库源
// 默认为origin,url为远程仓库地址
删除源 git remote rm <origin>
查看仓库源 git remote -v
关联远程源 git remote add <origin> <url>
7.拉取
git pull 和 git fetch区别
git pull(实为fetch和merge的组合操作)
8.检查代码冲突
git status
9.回退版本
git reset
1、查看提交历史:git log
2、回退到某个版本:git reset --hard [commit id]
注意:
--hard后,会回到上次commit的状态,也就是说从上次commit之后的的修改都将被删除
恢复方法:
条件:之前的修改进行了 commit 提交,也就是说我们回退前的修改(曾经)存在于版本里
1、先使用 git reflog 找到 [commit id]
2、然后使用 git reset --hard [commit id] 切回去即可
git reset 和 git revert 区别
git revert 后会多出一条commit,这里可进行回撤操作
例如:develop分支已经合并了a、b、c、d四个分支,我忽然发现b分支没用啊,代码也没必要,这个时候就不能用reset了,因为使用reset之后c和d的分支也同样消失了。这时候只能用git revert b分支commit号,这样c和d的代码依然还在。
git reset 直接把之前 commit 删掉,非 git reset --hard 的操作是不会删掉修改代码,如果远程已经有之前代码,需要强推 git push -f
10.撤销 commit
// git reset --soft 除了回溯节点外,还会保留节点的修改内容。
// 应用场景1:有时候手滑不小心把不该提交的内容 commit 了,这时想改回来,只能再 commit 一次,又多一条“黑历史”。
多次commit撤销,使用
git reset --soft HEAD~N(N表示commit次数)
git reset --soft 1a900ac29eba73ce817bf959f82ffcb0bfa38f75
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
对于已经 push 的 commit,也可以使用该命令,不过再次 push 时,由于远程分支和本地分支有差异,
需要强制推送 `git push -f` 来覆盖被 reset 的 commit。
11.暂存代码
- 隐藏当前变更,以便能够切换分支:
git stash; - 查看当前所有的储藏:
git stash list; - 应用最新的储藏:
git stash apply,如果想应用更早的储藏:git stash apply stash@{2};重新应用被暂存的变更,需要加上--index参数:git stash apply --index; - 使用apply命令只是应用储藏,而内容仍然还在栈上,需要移除指定的储藏:
git stash drop stash{0};如果使用pop命令不仅可以重新应用储藏,还可以立刻从堆栈中清除:git stash pop;
git遇到的问题
1.切换分支时出现报错
error: The following untracked working tree files would be overwritten by checkout:
.DS_Store
Please move or remove them before you switch branches.
Aborting
这个错误表示在切换分支时存在未跟踪的工作树文件(例如 ".DS_Store")可能会被覆盖
.DS_Store是一种由苹果操作系统(如Mac OS X)生成的隐藏文件,用于存储有关特定文件夹的自定义属性和显示设置。这个文件通常在包含图像、文件夹布局和元数据的目录中出现。
// 删除该文件即可
rm .DS_Store