GIT practical experience
宏观上,开发方式应为:
- 保持
master
无bug,能够pull直接用。 - 开发的新功能、要测试的内容放在其他分支上,最后再来
emerge
。
- 保持
Git别上传的内容:
- 可以通过在
.git
所在文件夹下添加.gitignore
解决;最好每次注意,添加需要的项目,而不是add .
。 - 不要随意上传会经常修改的文本文件,这样会造成
.git
文件夹极大,每次git clone
和git pull
时候都会把这些历史记录下载下来,浪费资源。 - 不要比如上传
.vscode
等编辑器配置文件、pycache
等cache文件。
- 可以通过在
常用GIT操作
1. git clone/pull
git clone
一般用于第一次下载git的内容,像是第一次下载一个app;git pull
一般是clone之后用,更新别处提交的内容,像是更新应用。
git clone <git address>
# -b 选择分支进行clone,之后也能切换到其他分支
git clone -b branch_a <git address>
# --depth=n 只clone最近n次的提交,之前的东西不管(可以减少占用.git的空间)
git clone --depth=1 <git address>
# pull 当前分支
git pull
git pull origin
# 将远程分支的branch_a拉到本地分支branch_b
# 如果branch_b就是当前本地分支,则可以省略
git pull origin branch_a:branch_b
2. git add
git add <filename>
# 常用
git add *.py
# 仅add之前已经commit过的、修改过的文件
git add -u .
# 全部提交,强烈建议仅小项目这样用,且最好使用.gitignore
git add .
.gitiginore文件
作用
- 在该文件中定义相应的忽略规则,来管理当前文件夹下的文件的Git提交行为。
- 需要注意的是,这种方式指定的忽略文件的根目录是项目根目录。
- 实质是编辑当前项目下的 .git/info/exclude文件,然后将需要忽略提交的文件写入其中。
- 如果已经上传了这些不想要的文件,就先删除远端(查看6.)
文件规则 eg
# file .gitignore # 注释用# *.log .vscode/ # !代表例外 !.gitignore !App.class
github上的整理~~~~
提交
- gitignore 文件是可以提交到公有仓库中,这就为该项目下的所有开发者都共享一套定义好的忽略规则。
3. git commit & git push
commit: 提交到暂存区
git commit -m "message"
# 将所有!已跟踪!文件中的执行修改或删除操作的文件都提交到本地仓库
git commit -m "message"
# 可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中
# 可能犯了一些小错误之类的,没必要多增加一次commit的时候用
git commit --amend
push: 提交到远程端
git push <远程主机名> <本地分支名> <远程分支名>
# 如果远程分支被省略,则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
git push origin master
# 如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
git push origin
# 如果当前分支只有一个远程分支,那么主机名都可以省略(如果同时上传gitlab github就不能这么用)
git push
# 删除远程分支branch_a
git push origin --delete branch_a
git push origin : branch_a
# 修改远程分支名
git branch -m old_branch_name new_branch_name
git push --delete origin old_branch_name
git push origin new_branch_name
4. git checkout
切换/创建本地分支,文件和当前branch信息都会改变。
# 查看本地分支
git branch
# 新建分支
git branch new_branch
# 删除本地分支
git branch -d localBranchName
# 切换分支
git checkout new_branch
# (新建且)切换分支
git checkout -b new_branch
# push并关联新建的分支到远程分支remote_branch(不过通常会同名)
git push origin new_branch : remote_branch
git branch --set-upstream-to=origin/remote_branch
# 删除远程分支
git push origin --delete remoteBranchName
5. git merge
比如你为了解决某个问题,创建了分支iss53,并且已经解决了
# Switched to branch 'master'
git checkout master
# merge, 这一步可能会有冲突,有图形界面的话可以鼠标选择
git merge iss53
# delete iss53
git branch -d iss53
一个很好的 例子 ,讲解两种合并的情况
6. git 删除远程文件
# 1.预览将要删除的文件
git rm -r -n --cached 文件/文件夹名称
# 加上 -n 这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。
# 2. 确认无误再删除文件
git rm -r --cached 文件/文件夹名称
# 3. 提交到本地,然后推送到远程
git commit -m "提交说明"
git push origin master
GIT使用基本逻辑
工作流程:
- 克隆 Git 资源作为工作目录。
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交
Git LFS
Git LFS 是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持,可以无感地将大文件做隐藏式的上传。
它是在Git仓库使用这些文件的指针
代替实际文件,而把实际文件存储在远程端LFS服务器,同时在本地仓库中实时追踪这些文件的变动。
安装
使用
# 在git代码的目录下初始化
$ git lfs install
# 添加追踪文件,仓库下的.gitattributes配置会自动更新
$ git lfs track "*.svg"
$ git lfs track "2.png"
# 查看追踪的文件
$ git lfs ls-files
# 解除追踪
$ git lfs untrack "1.png"
# 提交配置
$ git add .gitattributes
$ git commit -m "add .gitattributes"
接下来只要正常使用git添加提交所有文件和代码就行。
比如我的一个gitlab上的离线部署的push情况:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。