GIT practical experience

  1. 宏观上,开发方式应为:

    • 保持 master 无bug,能够pull直接用。
    • 开发的新功能、要测试的内容放在其他分支上,最后再来 emerge
  2. Git别上传的内容:

    • 可以通过在.git所在文件夹下添加.gitignore解决;最好每次注意,添加需要的项目,而不是 add .
    • 不要随意上传会经常修改的文本文件,这样会造成 .git 文件夹极大,每次git clonegit 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文件

  1. 作用

    • 在该文件中定义相应的忽略规则,来管理当前文件夹下的文件的Git提交行为。
    • 需要注意的是,这种方式指定的忽略文件的根目录是项目根目录。
    • 实质是编辑当前项目下的 .git/info/exclude文件,然后将需要忽略提交的文件写入其中。
    • 如果已经上传了这些不想要的文件,就先删除远端(查看6.)
  2. 文件规则 eg

    # file .gitignore
    # 注释用#    
    *.log
    .vscode/
    # !代表例外
    !.gitignore
    !App.class    

    github上的整理~~~~

  3. 提交

    • 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 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交
    image.png

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情况:
图片

参考

  1. git 菜鸟教程
  2. git 删除远程仓库文件
  3. Gitee 帮助中心 - Git LFS 操作指南
  4. Git LFS的使用

Ra4Z
1 声望3 粉丝

下一篇 »
[obj格式] 小结