CodeGym /课程 /C# SELF /开发者的日常流程:Commit、Push 和 .gitignore

开发者的日常流程:Commit、Push 和 .gitignore

C# SELF
第 26 级, 课程 1
可用

1. 开始工作:克隆项目

我们从上节课停下的地方继续。你有一个在 GitHub 上创建的仓库,现在需要把它的本地副本拉到你的电脑上开始工作。这个过程叫做 克隆。

步骤 1. 打开你的 IDE。如果已经打开了某个项目,先通过 File -> Close Project 关闭。在启动窗口选择 Clone Repository 或者 Get from VCS。

步骤 2. 在弹出的窗口粘贴你仓库的 URL。这个方法适合克隆别人的仓库。URL 可以从 GitHub 仓库页面复制。

如果你在克隆自己的仓库(我们的情形),最方便的是直接在 IDE 里登录 GitHub。选择 Log in to GitHub,IDE 会打开浏览器让你授权。

JetBrains IDE 在 GitHub 的授权窗口

打开的页面上直接点绿色的按钮 Authorize JetBrains。授权后你可以在 IDE 的列表里直接选到自己的仓库。选好项目后点 Clone。

步骤 3. IDE 会问你是否信任这个项目。因为这是你自己的仓库,就点 Trust Project。

步骤 4. 为 Windows 用户设置杀毒软件

Windows 的杀毒软件可能会提示 IDE 正在做未知操作。因为我们要创建和运行程序,需要允许 IDE 正常工作。点「Automatically」,让 IDE 把需要的文件夹添加到杀毒软件的例外中。

2. 保存改动:Commit

commit 是项目在某一时刻的“快照”,你可以把它想成游戏里的保存点:出问题时可以回到这里。每个 commit 有唯一的 id 和描述改动的消息。

        gitGraph
        commit id: "Initial commit"
        commit id: "Add user authentication"
        commit id: "Fix login button bug"
        commit id: "Refactor database connection"
    
历史的 commit。每个新 commit 基于前一个,形成项目发展的时间线。

步骤 1. 做出改动。

如果你克隆的是新建的仓库,它通常只有一个文件 —— README.md

打开 README.md,给项目写点描述。开始编辑后,IDE 会在项目栏把文件名用 蓝色 标出,表示文件被改动但还没保存到 Git。IDE 会在你改动的地方显示 绿色线条。

步骤 2. 打开 Commit 窗口。

IDE 左侧有个 Commit 选项卡。打开后你会看到所有准备保存的改动。第一次 commit 需要特别注意。

我们来看下都有哪些内容:

  • Changes: 这里是已经被 Git 跟踪但发生改动的文件。我们例子里是 README.md,我们在里面加了项目计划。
  • Unversioned Files: 新文件,Git 在项目文件夹里看到了但还没开始跟踪。

可能会问:这些 IDE 的配置文件要不要加到仓库?

好消息是,当我们在 GitHub 创建仓库时,通常会选一个 .gitignore 模板。这个文件里写好了规则,让 Git 忽略不需要的文件。后面我们会详细讲。

当前第一次 commit 的任务是把项目的主要文件加入历史,并写好 commit 消息。

步骤 3. 做 commit。

点 Commit 按钮。完成!你把项目的“快照”保存在本地仓库了。文件会回到普通颜色。

3. 把改动发到 GitHub:Push

现在你的 commits 只存在本地。要和团队分享或备份到远端,需要把它们发到 GitHub。

        sequenceDiagram
        participant Local repository (Your computer)
        participant Remote repository (GitHub)

        note over Local repository (Your computer): You made one or more commits.
They exist only here. Local repository (Your computer) ->> Remote repository (GitHub): git push (send commits) note over Remote repository (GitHub): Your commits are copied
and securely saved on the server.
你的本地 commits 会被发到远程服务器,同步项目历史。

步骤 1. 点 Push 按钮。

IDE 右上角有一个向上的绿色箭头 —— 那就是 Push。点它。

步骤 2. 检查并确认。

会弹出窗口,显示所有准备发送的 commits。最后一次确认你要发送的内容,然后点 Push。

如果一切顺利,你会看到消息: Pushed commits to origin/main. Create pull request

步骤 3. 在 GitHub 上检查结果。

推送成功后打开你仓库的 GitHub 页面,你会看到改动已经出现。

4. Git 控制面板

IDE 有个专门的 Git 菜单,在顶部栏能找到。它是你版本控制的控制中心。我们快速看下常用选项。

  • Commit: 打开我们已经熟悉的保存改动窗口。
  • Push: 打开发送 commits 到 GitHub 的窗口。
  • Update Project: 很重要的功能。它会拉取别人提交的最新改动(执行 git pull)。每天上班第一件事就点它!
  • Branches: 管理分支的窗口。下一节我们会详细讲分支。
  • Show Git Log: 显示项目的全部 commit 历史。你的个人时光机。

5. 使用 .gitignore 文件

如果你在项目里有些临时或不想提交的文件,可以把它们加入忽略列表。用一个叫 .gitignore 的文件来管理。很方便,适合忽略不需要放到版本控制里的文件(比如临时文件、日志、密码)。

步骤 1. 先在项目目录里创建你想忽略的文件,比如 notes.txt。创建后如果 IDE 问你要不要把它加到 Git,点 Cancel。

步骤 2. 在 Project 窗口里右键点击刚建的文件,选择 Git --> Add to .gitignore --> Add to .gitignore。这会把选中文件名添加到项目根目录的 .gitignore。

如果你还没有 .gitignore,IDE 会提示你创建它,接受即可。

步骤 3. IDE 会自动把文件名写进 .gitignore。

加入 .gitignore 后,被忽略的文件会显示为灰色或褐色。提交改动时这些文件会被忽略。你可以把 .idea 文件夹也加入忽略。

别忘了把 .gitignore 本身 commit 并 push 到 GitHub,这样团队里大家都会用相同的忽略规则。

排除本地文件:.git/info/exclude

除了项目级的 .gitignore,Git 还支持本地的忽略规则,写在 .git/info/exclude。这些规则不会被提交到仓库,只对你的本地副本生效。

例如,IDE 生成的一些仅对你有用的文件可以写到这里,不会影响其他人的环境。

重要! 本地的忽略规则只对你本地的仓库副本有效。

那如果我已经提交了怎么办?

.gitignore 只会忽略新的、还没被跟踪的文件。如果一个文件已经被提交过,它就在仓库历史里,Git 仍会跟踪它,即使你把它加进了 .gitignore。遇到这种情况,可以用终端命令: git rm --cached <file>。这部分内容需要单独再学习。

.gitignore 的规则

在 .gitignore 里写文件和文件夹名的模式,Git 会根据这些模式忽略对应的文件。

空行会被忽略。写注释请以 # 开头。

模式:

  • * — 匹配任意数量的任意字符。比如 *.log 会忽略所有以 .log 结尾的文件。
  • / — 模式末尾的斜杠表示目录。例如 logs/ 会忽略 logs 目录及其内容。
  • ! — 行首的感叹号表示否定规则。比如有 *.log,但你想跟踪 important.log,就加一行 !important.log。
  • ** — 匹配任意层级的嵌套目录。例如 **/temp 会忽略任何层级下的 temp 目录。

.gitignore 示例


# Compiled code
/bin/
/obj/

# Temporary files
*.tmp
*.swp

# Logs
*.log

# Folders created by IDE
.idea/
*.user
*.suo

# Virtual environments and dependencies
/venv/
/node_modules/

现成的模板

你不需要从零写这些规则。社区已经准备了很多成熟的模板:

  1. GitHub 提供的各种语言和框架的 .gitignore 集合: https://github.com/github/gitignore.
  2. gitignore.io — 一个能根据你使用的技术生成 .gitignore 的方便网站。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION