git 的基本使用(创建,分支,删除)

本文全面解析Git的基本使用方法,包括代码库的创建与管理、文件的增删改查、分支的处理、撤销操作及配置代理等高级技巧。适合Git新手入门与进阶。

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

更新时间 2019-08-22

git基本使用

声明:为方便描述:A,B,C都代表“分支”或者说“仓库”的名字
声明:gitAddress  代表git地址
(例如:https://github.com/dacaoyuan/SlidingMenu.git)

几个专用名词的译名:

  • Workspace : 工作区
  • Index / Stage : 暂存区
  • Repository : 本地仓库
  • Remote : 远程仓库

1.新建代码库

  1. git init 创建本地仓库

  2. git remote add origin gitAddress 本地库“关联”远程库

  3. git remote remove origin 取消本地目录下关联的远程库

  4. git clone gitAddress           从远程仓库克隆项目代码

  5. git clone -b C gitAddress   从远程仓库克隆“指定分支C”上的代码


2.增加/删除文件

  1. git add [file] 将指定文件添加到暂存区
  2. git add .       添加当前目录下所有文件
  3. git add -p 添加每个变化前,都会要求确认;对于同一个文件的多处变化,可以实现分次提交
  4. git add -u 暂存修改的和删除的文件,不包括新增加的文件。
  5. git add -A 暂存所有的文件,包括新增加的、修改的和删除的文件。
  6. git rm [file1] [file2] … 删除工作区文件,并且将这次删除放入暂存区
  7. git rm --cached [file1 [file2] (说法1:删除本地仓储文件,但不会删除文件);(说法2:停止追踪指定文件,但该文件会保留在工作区)
  8. git mv [file-original] [file-renamed] 改名文件,兵器将这个改名放入暂存区

3.代码提交

  1. git commit -m “first commit” 提交暂存区到仓库区
  2. git commit [file1] [file2] … -m [message] 提交暂存区的指定文件到仓库区
  3. git commit -a 提交工作区自上次commit之后的变化,直接到仓库区
  4. git commit -v 提交时显示所有diff信息
  5. git commit --amend [file1] [file2] … 重做上一次的commit,并包括指定文件的新变化
  6. git commit --amend -m [message] 使用一次新的commit,代替上一次提交;如果代码没有任何新变化,则用来改写上一次commit的提交信息

4.分支

  1. git branch A 创建分支

  2. git checkout -b A 创建分支A,并且切换到A分支上

  3. git checkout B 切换到B分支上

  4. git branch -a 查看所有本地分支和远程分支

  5. git merge B 合并指定分支B到当前分支

  6. git branch -d B 删除分支

  7. git branch -D B 删除分支

  8. git push origin --delete B 删除远程分支B

  9. git branch -dr [remote / branch] 也是删除远程分支

  10. git push origin 本地分支A:远程分支A 将本地分支push到远程分支 ,并且命名远程分支的名字为A

  11. git fetch origin 同步远程仓库

  12. git push -u origin master 关联后,使用该命令第一次推送 master 分支的所有内容,后续再推送的时候就可以省略后面三个参数了,其中参数 u 代表上游(upstream)的意思。


5.撤销

一:
1.git checkout [file] 恢复暂存区的指定文件到工作区

2:在还没有add,的时候
git checkout 那个路径下的文件夹或者文件名。(就能撤销未添加的修改)

3:如果已经add过的文件:
git reset HEAD 那个路径下的文件夹或者文件名。(就能回到未添加的状态)
然后在用 1 中的方法撤销修改。

注意:如果你把某个文件删除了,或者是新添加的文件,都不会再恢复或者去掉,但是会把文件中的添加的代码去掉。

4.如果已经commit过的文件:
git reset --hard HEAD^ 那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:git reset --hard HEAD~100 即可。

不过还有一种比较实用的方法:
git reset --hard [你要回退的版本号] 这样就能直接回退到你指定的那一次提交。

例如:git reset --hard 852782f

5:可获取到每次提交的版本号

git reflog

6: git reset --soft origin/dev
//git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
git reset --soft origin/dev

二.已经push

粗暴的方法:(只需两行命令)
git reset --hard 1243ad3(commit唯一标识) 或者 git checkout (commit唯一标识 前7位)
git push origin HEAD --force (强行push)


6.删除

git branch -D A 删除分支A

rm fileName 删除文件


7.配置

git config – list 显示当前的git配置
git config -e [–global]编辑git配置文件

设置提交代码时的用户信息
git config --global user.name “username”
git config --global user.email “email”


8.cherry-pick 用法

1:git cherry-pick 的基本语法如下:

git cherry-pick <commit-hash>

例如:
切换到 main 分支,使用 git cherry-pick 命令挑选该提交

git checkout main
git cherry-pick abc1234

commit-hash可以从这里看:
在这里插入图片描述
或者这个长也可以:1337b316f3698a9970d07a3a87feca80ad4c3d53

在这里插入图片描述

2:如果在 cherry-pick 过程中遇到冲突并决定放弃操作,可以使用 --abort 来中止并恢复到之前的状态。

git cherry-pick --abort

3:如果在 cherry-pick 过程中遇到冲突并手动解决冲突后,使用 --continue 继续操作。

git cherry-pick --continue

4:合并多个提交,你可以使用 git cherry-pick 一次性应用多个提交。只需提供多个提交哈希,Git 会按顺序应用这些提交。

git cherry-pick abc1234 def5678 ghi9012

Git “cherry-pick“ 命令详解

git cherry-pick 用法

9.设置代理

设置方法一(推荐)

打开 Git Bash,使用命令临时设定http代理:

git config --global http.proxy 'http://127.0.0.1:7890'

临时设定socks代理

git config --global http.proxy 'socks5://127.0.0.1:socks5端口号'

查看当前的 Git 代理设置

git config --global --get http.proxy
git config --global --get https.proxy

取消 Git 代理设置

git config --global --unset http.proxy
git config --global --unset https.proxy

设置方法二

若想要设置代理永久生效,则可以把它写入 .gitconfig 文件中。

使用 vi 打开 .gitconfig 文件:

vi ~/.gitconfig

写入下列配置(建议在最末写入):

[http]
 
proxy = socks5://127.0.0.1:socks5端口号
proxy = http://127.0.0.1:http端口号
 

修改后重启 git ,使配置生效:

git config -l --global

查看当前代理:

git config -l

10.其他

git status 查看当前提交(commit)状态,例如:文件有没有被修改过

git diff [可选]fileName 查看具体修改了什么

git log 查看下历史记录

git show 查看最后一个 commit 的修改。

1.git push origin A 将代码push到A远程仓库中
(例如:git push origin matser 将代码push到master远程仓库中)

2.git pull gitAddress origin A 将远程仓库A中的代码,拉取到本地仓库中

在本地目录下找到.git文件

[root@test01 H2_20151112]# ls -a
. … .git .gitignore H2

删除 .git
[root@test01 H2_20151112]# rm -rf .git

git rm #删除文件
git rm filename

git mv #修改文件名,或搬移目录
git mv filename newfilename

配置了.gitignore 之后,配置不生效,提交代码还是不能忽略?

原因是 .gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:
可以将本地代码通过git 提交,然后使用以下命令即可:

git rm -r --cached .
git add .
git commit -m ‘update ignore’

注意:命令行结尾的点(.)

这样之后,你可直接将代码push到远程分支。push 的时候,显示感觉还会将忽略的文件提交,放心,实际是不会的。


常见问题:

1:提交代码或pull 代码时,把如下的错误:

fatal: Unable to create ‘XXXXXX/.git/index.lock’: File exists.

解决办法:
找到index.lock 删除即可,例如:rm -f XXXXXX/.git/index.lock

2:push 代码时,提示如下错误:

fatal: unable to access ‘https://gitee.com/dacaoyuan/AliplayDemo470.git/’: Failed to connect to 127.0.0.1 port 9666: Connection refused
解决办法:很有可能是你不知道的情况下或者自己设置了 http://127.0.0.1:9666 这个代理了。

查询是否使用了代理:
git config --global http.proxy

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

取消之后,可再次push代码试试!

3:git解决自动合并报错error: Your local changes to the following files would be overwritten by merge

方案一:强制使用远程分支覆盖本地分支
如果您希望完全使用远程分支的代码覆盖本地分支(注意:此操作会丢弃本地所有未提交的更改),可以执行:

git fetch origin
git reset --hard origin/main

方案二:创建一个新的分支
如果您希望保留本地的更改,同时更新代码,可以创建一个新的分支:

git checkout -b new-branch-name
git fetch origin
git reset --hard origin/main

总结:
直接合并:使用 git pull origin main 合并远程分支的更改,解决冲突后提交。
强制覆盖:使用 git reset --hard origin/main 完全使用远程分支的代码覆盖本地分支。
创建新分支:保留本地更改的同时,创建一个新的分支来更新代码。


这是一篇对 git 再详细不过的完全剖析,如果你没有一点基础,可以从这里开始学习:

从0开始学习 GITHUB 系列之「初识 GITHUB」

郭霖微信推荐 地址(git命令大全)

<think>好的,用户想在Git创建一个基于现有分支的新分支。我需要先理解用户的需求,然后根据提供的引用内容来组织回答。 首先,用户可能已经知道Git基本操作,但需要具体步骤来从现有分支创建分支。根据引用[1],Git分支机制允许创建多个开发路径。引用[2]提到了使用git checkout -b的快捷方式。同时,引用[3]和[4]可能涉及初始化和配置,但用户的问题更侧重于分支创建。 接下来,我需要确定正确的步骤。通常有两种方法:先创建再切换,或者用git checkout -b一步完成。引用[2]中提到的-b选项就是快捷方式,所以应该包含这个方法。另外,可能需要确保用户知道如何查看现有分支,比如git branch命令。 还需要考虑用户是否已经处于目标分支上。如果是,直接创建分支即可;如果不是,需要先切换到现有分支或者从远程获取。另外,推送新分支到远程可能也是用户需要的,所以添加git push步骤会有帮助。 然后,检查提供的引用内容是否有其他有用的信息。引用[4]提到配置默认分支,但可能和当前问题关联不大,可以暂时忽略。引用[3]的git init是初始化仓库,但用户的问题可能已经有一个仓库了。 最后,确保回答结构清晰,分步骤说明,并包含示例命令。同时,生成相关问题时要围绕分支管理,比如重命名、删除、合并等,这些都是用户可能后续会问的问题。</think>### 分步说明:如何在Git中基于现有分支创建分支 以下是两种常用方法,适用于本地仓库和远程仓库的操作: #### 方法一:分步创建与切换(推荐新手使用) 1. **查看现有分支** 执行命令查看所有本地分支,确认当前所在分支: ```bash git branch -a ``` 2. **切换到目标分支** 若需要基于`feature/login`分支创建分支: ```bash git checkout feature/login ``` 3. **创建分支** 通过`git branch`命令创建分支`feature/payment`: ```bash git branch feature/payment ``` 4. **切换到新分支** ```bash git checkout feature/payment ``` #### 方法二:快捷创建并切换(推荐常用) 使用`-b`参数一次性完成创建与切换: ```bash git checkout -b feature/payment origin/feature/login ``` 此命令会基于远程分支`origin/feature/login`创建本地分支`feature/payment`并自动切换[^2] #### 同步到远程仓库(可选) 将新分支推送到远程仓库: ```bash git push -u origin feature/payment ``` ### 关键原理说明 当基于现有分支创建分支时,Git会在本地仓库中: 1. 复制当前分支的提交历史 2. 创建新的指针指向相同提交 3. 建立与远程仓库的关联(使用`-u`参数时) $$ \text{新分支指针} = \text{原分支指针} + \Delta(\text{新提交}) $$
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值