最近在做企业站外包
git建了一个仓库用来存放外包的各个网站,但每次下载都是全部下载时,不能单独下载管理。 于是想到了分支,把每个项目都单独放到一个分支里,这样用的时候切换分支就行了。具体操作如下:
1、建立分支
首页你需要的分支是必须要创建(对应不同的项目)
那么问题来了,后创建的分支默认是以当前分支为父分支的,像下面这样:"master-dev"的父分支是master
既然Git在创建是默认给我们的新分支指定了父亲,那么可不可以在创建是不需要呢?
强大的Git同样提供了解决方法(创建时提供--orphan 参数即可):git checkout --orphan 分支名
注意:
尽管创建分支时没有了父分支,但创建成功后,原分支的文件会在创建时添加到当前暂存区的,所以需要移除(不需要的情况下)
然后再将原分支的文件从当前分支仓库中移除,这样你的分支里的文件对于其他分支来说就是独一无二的了(即使不移除原分支的文件,此文件也是新添加到当前分支的,所以跟其他分支没有任何关系)
而其他分支也完全不可能会影响你当前分支的工作(不存在依赖关系的前提下)
当切换到PC分支时,Git仓库里的文件也会发生变化,也就实现了我们的目的
不同的分支其实就是不同的目录和文件,跟其他分支没有关系的
备注:推送用这个命令
可能遇到的问题
1、分支切换时 报错 error: The following untracked working tree files would be overwritten by checkout
解决方法:
打开SourceTree通过命令行,进入本地版本仓库目录下,直接执行
git clean -d -fx
即可。可能很多人都不明白-d,-fx到底是啥意思,其实git clean -d -fx表示:删除 一些 没有 git add 的 文件;
git clean 参数
-n 显示将要删除的文件和目录;
-x -----删除忽略文件已经对git来说不识别的文件
-d -----删除未被添加到git的路径中的文件
-f -----强制运行
git clean -n
git clean -df
git clean -f
2、rm 删除
-
rm
删除文件
-
git rm
git rm
当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用git rm
git rm file = rm file+ git add file
rm file删除本地文件
git add file 提交删除的步骤同步到git仓库 -
git rm --cached file
当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用 git rm --cached
git rm --cached 会从index里面删除该文件,下次commit的时候会修改git仓库,但是本地的文件还是保留 -
Untrack and stop tracking files in git
有一些文件我们不想提交到git上去了,但是又被检测到有变化,显示Untracked files,我们可以采用
git rm --cached file来停止跟踪这些文件
3、附上一些分支管理命令
创建分支
git branch dev
这就创建了一个dev(development之意),更好的,选择使用下面的方法创建两个分支——dev,创建后会自动切换到新创建的分支,
git checkout -b dev
切换master分支怎么办?使用
git checkout master
当然你也可以使用
git checkout dev
再次切换到dev分支。
看看有哪些分支:
git branch
恭喜,算法调试成功,我要合并到master中
-
git checkout master // 切换到master
-
git merge debug // 合并debug到master
这时如果你很幸运,直接合并成功。
最后,反正debug我玩完了,删除debug分支
git branch -d dev