Git使用教程

配置用户信息

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

再次强调,如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。

当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。

很多 GUI 工具都会在第一次运行时帮助你配置这些信息。

Git刪除文件

在git中我们可以通过git rm命令把一个文件删除,并把它从git的仓库管理系统中移除。但是注意最后要执行git commit才真正提交到git仓库

示例1
git rm 1.txt
删除1.txt文件,并把它从git的仓库管理系统中移除。

示例2
git rm -r myFolder
删除文件夹myFolder,并把它从git的仓库管理系统中移除。

Git推送到服務器倉庫

git中,我们可以通过git push把本地仓库的更新推到服务器仓库。

$ git push ssh://git@dev.lemote.com/rt4ls.git master
把本地仓库提交到远程仓库的master分支中
$ git remote add origin ssh://git@dev.lemote.com/rt4ls.git
$ git push origin master 

这两个操作是等价的,第二个操作的第一行的意思是添加一个标记,让origin指向ssh://git@dev.lemote.com/rt4ls.git,也就是说你操 作origin的时候,实际上就是在操作ssh://git@dev.lemote.com/rt4ls.git。origin在这里完全可以理解为后者 的别名。
需要说明的是,默认情况下这条语句等价于提交本地的master仓库到远程仓库,并作为远程的master分支。
如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

$ git push origin test:master // 提交本地test分支作为远程的master分支
$ git push origin test:test // 提交本地test分支作为远程的test分支
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
$ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心

删除文件用 git rm
改文件名用 git mv
使用 git 遇到问题时,git status 一下,通常都会有提示告诉你该怎么做

If you deleted a file from the working tree, then commit the deletion:

git commit -a -m “A file was deleted”
And push your commit upstream:

git push
差别在-a 这个选项
add 只能加入原来没有被跟踪的文件,没有把删除这个行为也加入版本控制

命令为:
git ls-files -d |xargs -i git checkout {}

git ls-files -d :意思是显示出删除的文件
git checkout 命令为恢复某个文件,xargs将其作为参数传给git checkout.

然后就想,能不能从之前的版本中检出这个文件,然后重新添加到版本库中?再作为一个新的提交来挽救?

经实验室可以的,过程如下:

git checkout HEAD^ – a.txt

HEAD^ 代表上一次提交,

– a.txt 表示将上一次提交里的a.txt文件检出到工作区,这样a.txt就回来了。

接着:

git add a.txt && git commit -m “recover a.txt” && git push

其他人直接git pull

从 git 仓库中导出项目

git archive --format tar --output /path /to /file.tar master # 将 master 以 tar 格式打包到指定文件

使用Coding 克隆其他账号的代码 https://xxx@git.coding.net/uuu/iii.git

1 查看远程分支

$ git branch -a

  • br-2.1.2.2

master

remotes/origin/HEAD-> origin/master

remotes/origin/br-2.1.2.1

remotes/origin/br-2.1.2.2

remotes/origin/br-2.1.3

remotes/origin/master
2 查看本地分支
$ git branch

  • br-2.1.2.2

master
3 创建分支

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei(br-2.1.2.2)

$ git branch test

$ git branch

  • br-2.1.2.2

master

test
4 切换分支到test
shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei(br-2.1.2.2)

$ git branch

  • br-2.1.2.2

master

test

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei(br-2.1.2.2)

$ git checkout test

M jingwei-server/src/main/java/com/taobao/jingwei/server/service/cmd/GetCustomerTarCmd.java

M jingwei-server/src/main/java/com/taobao/jingwei/server/util/ServerUtil.java

Switched to branch ‘test’

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei(test)

$ git branch

br-2.1.2.2

master

  • test
    5 删除本地分支 git branch -d xxxxx

$ git checkout br-2.1.2.2

M jingwei-server/src/main/java/com/taobao/jingwei/server/service/cmd/GetCustomerTarCmd.java

M jingwei-server/src/main/java/com/taobao/jingwei/server/util/ServerUtil.java

Switched to branch ‘br-2.1.2.2’

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei(br-2.1.2.2)

$ git br

  • br-2.1.2.2

master

test

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei(br-2.1.2.2)

$ git br -d test

Deleted branch test(was 17d28d9).

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei(br-2.1.2.2)

$ git br

  • br-2.1.2.2

master
6 查看本地和远程分支 -a。前面带*号的代表你当前工作目录所处的分支

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei(test)

$ git branch -a

br-2.1.2.2

master

  • test

remotes/origin/HEAD-> origin/master

remotes/origin/br-2.1.2.1

remotes/origin/br-2.1.2.2

remotes/origin/br-2.1.3

remotes/origin/master

解决git clone 子模块没下载全的问题

  1. 下载一个包含很多子模块的工程
    例如:git clone --recursive https://github.com/caffe2/caffe2
    如果网络不好或者其他原因导致子模块没有下载完全,这时用git pull是无法下载完全的。

注:这是在英文环境中执行的结果,英文Submodule在中文环境中翻译为“子模组”了。
从log中可以看出,有很多子模块(为节省篇幅,完整log略,可以自行下载测试)。

$ git clone --recursive https://github.com/caffe2/caffe2
Cloning into ‘caffe2’…
remote: Counting objects: 36771, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 36771 (delta 6), reused 7 (delta 5), pack-reused 36754
Receiving objects: 100% (36771/36771), 149.13 MiB | 2.76 MiB/s, done.
Resolving deltas: 100% (26926/26926), done.

(这里只以子模块protobuf为例,其他子模块略)
Submodule ‘third_party/protobuf’ (https://github.com/google/protobuf.git) registered for path ‘third_party/protobuf’
(略)
Cloning into ‘third_party/protobuf’…
remote: Counting objects: 47717, done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 47717 (delta 23), reused 23 (delta 5), pack-reused 47657
Receiving objects: 100% (47717/47717), 40.97 MiB | 59.00 KiB/s, done.
Resolving deltas: 100% (32097/32097), done.
Checking connectivity… done.
Submodule path ‘third_party/protobuf’: checked out ‘a428e42072765993ff674fda72863c9f1aa2d268’

★ 2. 下载子模块
git submodule update --init --recursive
1
如果你不确定子模块是否都已经下载完全了,也可以执行一遍这个命令确认一下。

用git config命令查看配置文件

命令参数 –list, 简写 -l
格式:git config [–local|–global|–system] -l
查看仓库级的config,即.git/.config,命令:git config –local -l
查看全局级的config,即C:\Users\zuoyu.ht.gitconfig,命令:git config –global -l
查看系统级的config,即D:\Program Files\Git\etc\gitconfig,命令:git config –system -l
查看当前生效的配置,命令:git config -l,这个时候会显示最终三个配置文件计算后的配置信息,如下图:
在这里插入图片描述

git clone时报RPC failed; curl 18 transfer closed with outstanding read data remaining 错误

原因1:缓存区溢出

解决方法:命令行输入

git config http.postBuffer 524288000
执行上面命令如果依旧clone失败,考虑可能原因2:网络下载速度缓慢

解决方法:命令行输入

git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
如果依旧clone失败,则首先浅层clone,然后更新远程库到本地

git clone --depth=1 http://gitlab.xxx.cn/yyy/zzz.git
git fetch --unshallow

使用git clone --depth 1 后无法获取其它分支的问题

depth用于指定克隆深度,为1即表示只克隆最近一次commit.

这种方法克隆的项目只包含最近的一次commit的一个分支,体积很小,即可解决文章开头提到的项目过大导致Timeout的问题,但会产生另外一个问题,他只会把默认分支clone下来,其他远程分支并不在本地,所以这种情况下,需要用如下方法拉取其他分支:

$ git clone --depth 1 https://github.com/dogescript/xxxxxxx.git
$ git remote set-branches origin ‘remote_branch_name’
$ git fetch --depth 1 origin remote_branch_name
$ git checkout remote_branch_name

删除最后一次提交

命令很简单,但是不能马虎,不能多回滚或者少回滚,不然就麻烦不断了。

主要命令:

第一步:回滚上一次提交
git reset --hard HEAD^

就很简单,回滚master分支的上一次提交。

第二步:强制提交本地代码
git push origin master -f

由于本地reset 之后本地库落后于远程N个版本,所以需要强制提交。

代理

查看代理
git config --global --list

设置ss
git config --global http.proxy ‘socks5://127.0.0.1:1080’

git config --global https.proxy ‘socks5://127.0.0.1:1080’

设置代理
git config --global https.proxy http://127.0.0.1:1080

git config --global https.proxy https://127.0.0.1:1080

取消代理
git config --global --unset http.proxy

git config --global --unset https.proxy

修改本地分支名称

git branch -m oldName newName

<think>嗯,用户想查找关于Git使用教程,特别是入门教程和完整指南。首先,我需要根据用户提供的引用内容来组织回答。用户引用了三个来源,其中第一个和第三个提到了Git的基础操作、安装、常用命令和工作流程,第二个引用则列出了具体的教程内容,包括安装、常用命令、原理、工作流程、代码审查和工蜂文档。 首先,我应该按照用户的要求,结构清晰地分步骤讲解Git的入门使用。可能需要从安装开始,然后介绍基本概念,再讲解常用命令,最后提到工作流程和进阶建议。需要确保每个部分都包含具体的例子,比如命令示例,并且正确使用LaTeX格式的行内公式,不过这里可能用不上数学公式,但要注意代码块的格式。 接下来,用户的问题生成部分需要生成相关问题。我需要确保问题与Git入门相关,可能涉及安装、基本命令、分支管理、撤销操作、解决冲突、远程仓库等。要避免重复,并且覆盖用户可能关心的方面。 还要注意引用标识,比如在提到版本控制系统时引用[^1],在安装步骤引用[^2],在基础操作部分引用[^3]。需要自然地插入引用,而不是生硬地添加。 另外,用户示例中的快速排序部分有代码块,所以在Git教程中也应该包含代码示例,比如git init、git add等命令的使用示例,用代码块展示,这样用户更清楚如何操作。 还要检查是否有遗漏的部分,比如是否提到了分布式版本控制系统的优势,或者Git与其他系统的区别,但根据引用内容,可能不需要深入这些,保持入门级即可。 最后,确保回答使用中文,语言流畅,结构清晰,分步骤讲解,并且相关问题部分有针对性。可能需要提醒用户注意常见问题,如冲突解决,或者推荐进一步的学习资源,如Pro Git书籍。</think>### Git使用入门教程完整指南 Git作为分布式版本控制系统,其核心功能是追踪文件变更并支持多人协作开发。以下是入门Git的完整学习路径: #### 一、环境准备 1. **安装Git** - Windows系统访问[Git官网](https://git-scm.com/)下载安装包,勾选`Add to PATH`选项[^2] - Linux系统使用命令安装: ```bash sudo apt-get install git # Debian/Ubuntu sudo yum install git # CentOS ``` 2. **初始配置** ```bash git config --global user.name "YourName" git config --global user.email "your@email.com" ``` #### 二、核心概念 - **仓库(Repository)**:项目的版本库,包含完整历史记录 - **工作区(Working Directory)**:本地修改文件的区域 - **暂存区(Staging Area)**:准备提交的修改暂存区域 - **提交(Commit)**:包含文件变更记录的快照 #### 三、基础操作流程 ```bash # 初始化新仓库 git init my-project cd my-project # 创建新文件 echo "# My Project" > README.md # 添加文件到暂存区 git add README.md # 提交变更 git commit -m "Initial commit" # 查看提交历史 git log ``` #### 四、分支管理 ```bash # 创建新分支 git branch feature-login # 切换分支 git checkout feature-login # 合并分支到main git checkout main git merge feature-login ``` #### 五、远程协作 ```bash # 关联远程仓库 git remote add origin https://github.com/user/repo.git # 推送本地分支 git push -u origin main # 获取远程更新 git pull origin main ``` #### 六、常见问题处理 - **撤销修改**: ```bash git checkout -- filename # 撤销工作区修改 git reset HEAD filename # 取消暂存状态 ``` - **冲突解决**:编辑标记`<<<<<<< HEAD`和`>>>>>>>`冲突区域后重新提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积跬步DEV

如有帮助,那多谢赞助!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值