GIT操作 - 尽量够用版

本文介绍了Git的基本概念及其在GitHub上的应用,包括代码版本管理、本地库与远程库操作及多人协作流程等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 快速开始

简单理解
git - 代码版本管理控制,帮助管理代码辅助团队协作开发。
github - 部署了git分布式开源版本控制系统的项目托管平台。讲很多功能可视化,方便操作。

辅助软件
github官方图形界面软件 - 想减少一些配置的麻烦时使用
git bash - git官方命令行界面 - 本教程命令使用的环境
sourceTree - 三方git图形管理平台
三者用任意一个都可以完成需要的工作。

注册github账号,根据提示可以建立自己的第一个项目。
可以通过官方的git try体验一下整个过程,一些具体的内容见后。
git try - https://try.github.io

下面分三个层次来说明一下我们会用到的git的运作:
1.在本地的库的操作
2.本地库和github远程库的操作
3.多人协作

2 本地库操作 - 关于git的几步提交

lifecycle
这里假设在计算机本地已经git init或者git clone了一个库。

  1. 我们修改或者增加了一些文件
  2. 查看变动
    $ git status
    可以查看那些文件是新增的,修改的
    比如上图untracked状态 - 新增文件,modified - 修改过的文件
  3. 本地暂存stage
    $ git add . #添加所有变动
    $ git add [file] #添加某个文件
  4. 将暂存的改变作为一个新的版本
    $ git commit -m "update" #-m参数后面是提交备注,必写
    这时就会在本地创建一个新的版本。
  5. 版本回退
    有时候自己想退回之前的某个版本
    $ git log #可以查看自己的每次commit记录,找到需要退回的commit的编号
    $ git reset 2e3e12d2e3ea1f226c6d12bd99231bb3d0ce35ee [file]
    利用commit号将本地文件退回某个节点,file可以不写,就是将整个库都退回那个版本。

3 本地库和远程git库操作

如果本地库是git init产生,那么github远端还没有自己的库。需要进行配置

  1. 现在github建立一个库,并获得地址[address]
  2. 利用git remote add origin [adress]来配置远程库地址
  3. 将修改完的内容通过$ git push origin mater 来将本地内容推送到远程origin库的master分枝

Tip:如果下次想用简化命令git push直接push,需要在首次使用完整命令的时候
$ git push -u origin mater #来让系统记着自己的push选项。

如果本地库是从自己的git clone下来的,那么在自己的本地commit完后,远程的服务器还没更新,那么可以向远程数据库发送自己的更新。

$ git push
$ git push origin master #完整命令,向远程origin库的master分枝提交代码

如果出现无法提交或者其他错误可以按照提示查一下。
一般有可能是本地的git config配置不对。

# 查看当前所有配置
$ git config -l
# 查看repo配置,响应有--global(用户) --system(系统)
$ git config --local -l
# 设置repo用户名和邮箱
$ git config --local user.name "git_user_name"
$ git config --local user.email "git_registered_email"

4 多人协作

多人协作的时候不但有自己本地库和自己github的远程库还有合作者的远程库。
比如A建立了一个RepoA,B将其Fork有了RepoB,然后git clone到本地RepoB_local。这里就涉及三个库。
情况很多先介绍一些常用的

情形1:开始自己的版本RepoB和RepoA一致,然后再RepoB_local修改了文件,并且做了git push更新了RepoB。此时想让RepoA也接受自己的更新。
方法:需要通过建立一个pull request请求,来让A知道,当A知道后会处理这个请求。如果处理成功,RepoA会更新。这个可以在github的网站页面完成。

情形2:RepoA有了更新,自己需要更新本地RepoB_local和自己云端的RepoB。
方法:一般情况下,自己本地和自己的远程库连通后没有配置上游库(这里是RepoA)信息。
首先添加一个远程库配置:
$ git remote add upstream https://bitbucket.org/maintainer/repo
更多详细可以参考教程 https://github.com/oldratlee/translations/blob/master/git-workflows-and-tutorials/workflow-forking.md
然后就可以从远程库拉取最新的内容
$ git pull upstream master
这时自己的文件会被修改增加,如果有冲突的内容,现在我理解需要手动去从查看并修改文件。最后自己都处理完之后,用git add 和 commit来更新本地库。


获取最新远端代码
$ git pull [repo] [branch]如果只用$ git pull,则默认当前的repo和分支。pull下来的分支会与本地进行合并,冲突需要处理。如:

     A---B---C origin/master
    /         \
D---E---F---G---H master
# 如果本地开发到G,远端为C,则生成H
# fig from:https://blog.youkuaiyun.com/chaiyu2002/article/details/82120256

本地分支开发向远端提交merge - pitch
本地获取最新代码后git checkout -b pitch_1创建名为pitch_1的分支,并进行切换,相当于git branch pitch_1 + git checkout pitch_1命令。在pitch_1中修改。git add .git commit -m "fix xxx"提交。将分支*pitch_1 *git push到远端。如果远端没有分支,需要在远端创建git push --set-upstream origin pitch_1。在网页发起merge request

分支管理
git branch -a查看所有分支,包括远端。本地和远端分支可以视为两个分支。远端分支不一定都在本地。
删除本地不需要的分支:git brach -d branch_name.
删除远端不需要的分支:git push origin -d branch_name.

5 问题探讨

Q1: 我们4个组员有申请request的权力,只有你组长才有合并的权力。是吧?
A1: 这个看具体任务和开发模式, 你可以merge给别的组员,再由他merge给我。这个其实比较灵活。不过一般会有一个地方保持一个全组最新的latest version。

Q2: 下一个问题是,当组长同意了其它的合并之后,我本人的cs50平台会自动更新代码吗?还是说,我每次打开cs50平台都要输入命令获取更新的代码?
A2: 代码的更新都需要命令操作,无论云端还是本地的repo更新了都不会影响别的位置的代码直接变化。你如果知道别人有改进,或者自己的工作需要在最新的版本上开始做那么就需要先pull一下对应的源的最新的版本。如果之前的工作没做完,想继续,那就不用每次pull更新啊。

Q3: 关于pull request
A3: pull request顾名思义是你想让别人接受你的东西的时候用,你发一个pull request让我来做pull。我做pull之后就会选择性的merge你的内容。merge完成之后就会形成一个新的版本。如果第三个人想从这个最新的版本开始开发,那么就需要先做一下pull,将这个最新版本拉到本地来,开发完之后再选择update到自己的git还是发一个pull request。

6 其他教程

廖雪峰
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值