Git常用总结

Git常用总结:

Date: August 6, 2023


项目目前常用代码:

常用总结:

# 暂存所有文件
git add .
# 提交版本记录
git commit -m
# 将仓库文件提交到远程仓库
git push 
# 查看版本号
git reflog
# 回退版本
git reset <commit>  # 这里我一般用--hard,具体看git常用指令表
# 拉取得远程仓库代码
git pull # 相当于 fetch 与 merge

详细流程:

1-首次拉取服务器代码

注意:提交代码之前,需先从服务器上面拉取代码,以防覆盖别人代码!

git pull

2-查看当前工作目录树的工作修改状态(这个命令在git中使用最频繁了,原因会告诉你下一步该做的事情):

git status

3-将工作区修改添加的文件提交到暂存区:

git add + 文件
 
git add -u + 路径:将修改过的被跟踪代码提交缓存
 
git add -A + 路径: 将修改过的未被跟踪的代码提交至缓存

4-将暂存区代码提交到本地仓库中:

git commit -m “功能修改,这里是注释”

5-将代码推送到服务器(主分支):

git push origin master

命令集合:

Untitled

Untitled




基础总结:

Git基础概念:

Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高

效地处理从很小到非常大的项目版本管理。



Git工作的四个区域:

Working Directory(工作目录)

即正在编辑的文件状态。文件状态为未跟踪(untrack)和已修改(modified)在此区域内

Staging Area(暂存区)

保存了下次将提交的文件列表信息。文件状态为已暂存(staged)在此区域内

Repository(本地仓库):提交到本地仓库的文件

Repository(远程仓库):已提交到远程计算机内的文件

Untitled

提交流程为:工作区》暂存区》本地版本库》远程版本库

特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性!



Git文件的四种状态:

未跟踪(untrack):未追踪,表示文件为新增加的

已修改(modified):表示修改了文件,但还没将修改的结果放到暂存区

已暂存(staged):表示修改的文件提交到了暂存区,但是还没有提交到本地Git版本库

已提交(committed):表示数据安全提交到了本地Git版本库

注意:

工作区的文件被修改了,但还没有放到暂存区,就是已修改状态。

如果文件已修改并放入暂存区,就属于已暂存状态。

如果 Git 仓库中保存着特定版本的文件,就属于已提交状态。

Git工作区中的状态

Untitled



账号管理

多个Git账号的登录与切换:

在Git Bash Here的控制台里输入:

git config --global user.name "你的名称"
git config --global user.email "你的邮箱"
 
切换完成后,查看对应的账号:
git config user.name
输出账号名称:YSGStudyHards

案例:

nathanchen@NathansMacBook-Pro ~ % git config --global user.name
nathan.chen

查看用户名和邮箱地址:

//查看用户名
git config user.name
//查看邮箱地址
git config user.email



快速上手指南:

建立仓库并上传

初始化步骤

如果本地没仓库,选这个 create a new repository on the command line

echo "# test2" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/CaptainDDDrake/test2.git
git push -u origin main

上传代码

git add .
git commit -m 'ChangeTitle'
git push origin main # origin main 指将本地main分支push到远程仓库中

拉取远程仓库代码

初始化步骤

如果本地有仓库,选这个

push an existing repository from the command line

git remote add origin https://github.com/CaptainDDDrake/test2.git
git branch -M main
git push -u origin main

拉取代码

git pull origin main
git log # 查看提交记录



Git常用指令:

文件管理命令:

查看文件状态

git status  // 显示有变更文件的状态

工作区域文件状态:

A  test.css #A代表新加入到暂存区中的文件
M  test.html #M代表文件被修改,且被加入到了暂存区

查看提交历史记录:回顾项目的提交历史

git log    # 查看提交历史
git log -2 # 查看最新的两条提交历史,数字可以更改
git log --oneline #一行展示修改记录
# esc + :q 退出查看

git基础命令

提交

git init  // 新建 git 代码库
git add index.js  // 添加指定文件到暂存区
git commit -m '提交消息'  // 提交暂存区到仓库区

删除


git rm    // 删除工作区文件,并且将这次删除放入暂存区
git rm -f index.js    //从仓库和工作区同时移除index.js文件
git rm --cached index.css    // 只从仓库中移除 index.css 但保留工作区中的 index.css文件


分支管理命令

分支管理:

# 查看当前仓库中所有的分支列表
git branch
	# -v 查看当前开发分支
	# -r 查看远程所有分支
	# -a 查看本地和远程所有分支

# 基于当前分支,创建一个新的分支
git branch 分支名称

# 切换到指定的分支进行开发
git checkout 指定分支

# 删除分支
git branch -d 分支名称

# 将完成后的代码合并到 master 主分支
git merge 合并分支

# git分支修改名字
git branch -m oldBranchName newBranchName

# 将远程仓库的变化下载下来,并没有本地分支合并
git fetch

# 将远程仓库的变化下载下来,并和当前分支合并merge
git pull

理解:

fetch

理解 fetch 的关键, 是理解 FETCH_HEAD,FETCH_HEAD指的是: 某个branch在服务器上的最新状态’。这个列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行对应于远程服务器的一个分支。

当前分支指向的FETCH_HEAD, 就是这个文件第一行对应的那个分支,使用git fetch获取远程仓库最新代码,但是不会自动合并(merge),git fetch更安全一些,因为在merge(合并)前,我们可以查看更新情况,然后再决定是否合并。



版本控制命令:

常用:

# 查看之前提交版本的版本号
git reflog --oneline 

# 跳转到最新的版本
git reset --hard <CommitID>

参考:

# 在一行上展示所有的提交历史
git log --oneline

# 使用 git reset --hard 命令,根据指定的提交 ID 回退到指定的版本
git reset --hard <CommitID>

# 在旧版本中使用 git reflog --pretty=oneline 命令,查看命令操作的历史
# 注:这个命令可以查看之前所有的commit与reset命令
git reflog --pretty=oneline

# 再次根据最新的提交ID,跳转到最新的版本
git reset --hard <CommitID>


仓库管理命令:

本地仓库管理:

# 初始化 Git 仓库的命令
git init
# 暂存所有文件
git add .
# 提交版本记录
git commit -m
# 查看版本号
git reflog --pretty=oneline
# 回退版本
git reset <commit>  # 这里我一般用--hard,具体看git常用指令表

远程仓库管理:

建立本地与远程仓库关联

本地仓库提交至远程仓库:

git init  #仓库初始化
git add . #
git commit -m "初始化" #将文件提交到本地

# 将本地仓库与远程仓库进行关联,并把远程仓库命名为origin
# 别名唯一,地址是 .git 结尾的网址
git remote add origin git@github.com:CaptainDDDrake/proj3.git

# 将本地分支 main 重命名为 main
git branch -M main

# 将本地仓库中的内容推送到远程的origin仓库中
# 注意:第一次推送分支需要带 -u 参数,此后可以直接使用 git push 推送代码到远程分支
git push -u origin main

本地与远程仓库管理命令:

1-推送本地分支至远程仓库

# -u 表示把本地分支和远程分支进行关联, 只在第一次推送的时候需要带-u
git push -u 远程仓库的别名 本地分支名称:远程分支名称

# 例子
git push -u origin payment:pay

# 如果远程分支的名称和本地分支名称保持一致,可以对命令进行简化:
git push origin payment

2-远程仓库克隆

具体步骤看Github基础:

# 将远程仓库克隆到本地
git clone https://gitee.com/lidongxu/work.git

3-查看Git项目远程仓库地址

命令:

git remote -v

注意:这个得在使用git的项目目录下

案例:

nathanchen@NathansMacBook-Pro clone-test % git remote -v
origin	git@github.com:CaptainDDDrake/Raabbit.git (fetch)
origin	git@github.com:CaptainDDDrake/Raabbit.git (push)



多人协同开发:

上传代码

git add .
git commit -m 'ChangeTitle'
git push origin main # origin main 指将本地main分支push到远程仓库中

拉取代码

git pull origin main
git log --oneline #一行展示修改记录

理解:pull的作用

git pull origin master

#等价于

git fetch origin master:master #(获取远程分支记录到本地,未合并)
git merge origin/master #(把远程分支记录合并到所在分支下)

查看远程仓库中所有的分支列表:

git remote show 远程仓库名称

# 例子
nathanchen@NathansMacBook-Pro Bevent % git remote show origin
* 远程 origin
  获取地址:https://github.com/CaptainDDDrake/BigEvent.git
  推送地址:https://github.com/CaptainDDDrake/BigEvent.git
  HEAD 分支:main
  远程分支:
    main 已跟踪
  为 'git pull' 配置的本地分支:
    main 与远程 main 合并
  为 'git push' 配置的本地引用:
    main 推送至 main (本地已过时)

查看本地的远程仓库名称

git remote -v

# 例子
nathanchen@NathansMacBook-Pro Bevent % git remote -v
origin	https://github.com/CaptainDDDrake/BigEvent.git (fetch)
origin	https://github.com/CaptainDDDrake/BigEvent.git (push)



Git常见问题:

Q:误将代码提交到暂存区中(git add)

解决办法:利用 git reset 命令将撤回缓存中的代码。

Q:误将暂存区代码提交到本地仓库(git commit)

解决办法:

git reset —soft + 版本号

回退到某个版本,只回退了commit的信息,不会改变已经修改过的代码。

git reset —hard + 版本号

彻底回退到某个版本,本地的代码也会改变上一个版本内容

Q:rebase解决:git error:您对下列文件的本地修改将被合并操作覆盖

解决方案

拉取合并:

git pull --rebase ori master # ori 远程仓库的别名  master 远程以及本地分支的名字

结果:
在这里插入图片描述

或者,还没试

# 先处理完C,会继续报D的冲突,所以下面命令一共会执行两次
git add file
git rebase --continue

上面的例子可抽象为如下实际工作场景:远程库上有一个master分支目前开发到B了,张三从B拉了代码到本地的feature分支进行开发,目前提交了两次,开发到D了;李四也从B拉到本地的master分支,他提交到了M,然后合到远程库的master上了。此时张三想从远程库master拉下最新代码,于是他在feature分支上执行了git pull origin master:feature --rebase(注意要加–rebase参数),即把远程库master分支给rebase下来,由于李四更早开发完,此时远程master上是李四的最新内容,rebase后再看张三的历史提交记录,就相当于是张三是基于李四的最新提交M进行的开发了。(但实际上张三更早拉代码下来,李四拉的晚但提交早)

Untitled

Untitled

Q:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支

问题:

nathanchen@NathansMacBook-Pro Bevent % git push origin main 
To https://github.com/CaptainDDDrake/BigEvent.git
 ! [rejected]        main -> main (non-fast-forward)
错误:无法推送一些引用到 'https://github.com/CaptainDDDrake/BigEvent.git'
提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
提示:再次推送前,先与远程变更合并(如 'git pull ...')。详见
提示:'git push --help' 中的 'Note about fast-forwards' 小节。

因为您当前分支的最新提交落后于其对应的远程分支意味着远程分支上发生了您本地没有的更改

所以我们需要用git pull origin master指令将远程代码库与本地代码库同步一下,但是可能会出现“fatal:拒绝合并无关历史。”的错误

解决方案:

使用-f标签,您将使用您的代码覆盖远程分支代码。

git push -f origin master



常用操作补充:

如何删除远程仓库:

步骤:

1-找到setting

Untitled

2-在setting的最下面的 Delete this repository 选项

Untitled



<think>首先,用户的问题是:"我想查找git常用使用方式的总结内容 请问git常用使用方式的总结"。这是一个关于Git常用使用方式的总结查询。 用户提供了几个引用: - 引用[1]:涉及Git的基本操作,如clone, add, commit, push。 - 引用[2]:讨论放弃修改和缓存代码的命令,如checkout, reset。 - 引用[3]:关于stash清除、日志查看和提交统计的命令。 - 引用[4]:解释push操作失败时的处理,建议先pull。 用户指示中说:"上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。" 但在消息中,用户上一次的问题就是这个问题本身,没有之前的对话历史。所以,我应该基于当前查询和提供的引用来回答。 系统级指令要求: - 所有行内数学表达式使用$...$格式(但Git命令没有数学表达式,所以可能不适用)。 - 独立公式使用$$...$$格式(同样不适用)。 - LaTeX语法正确(不适用)。 - 使用中文回答。 - 生成相关问题。 - 引用的段落末尾添加引用标识,如[^1]。 回答结构: - 结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 用户想要Git常用使用方式的总结。我应该组织一个全面的总结,基于常见Git命令和最佳实践。 关键Git命令总结: 1. **克隆仓库**:`git clone <url>` – 克隆远程仓库到本地。 2. **添加更改**:`git add <file>` 或 `git add .` 或 `git add -A` – 添加文件到暂存区。 3. **提交更改**:`git commit -m "message"` – 提交暂存区的更改。 4. **推送更改**:`git push` – 推送本地提交到远程仓库。 5. **拉取更改**:`git pull` – 拉取远程更改并合并到本地(相当于`git fetch` followed by `git merge`)。 6. **分支操作**: - 创建分支:`git branch <branch-name>` - 切换分支:`git checkout <branch-name>` 或 `git switch <branch-name>` - 合并分支:`git merge <branch-name>` 7. **放弃更改**: - 未暂存的更改:`git checkout -- <file>` 或 `git checkout .` - 已暂存的更改:`git reset HEAD <file>` 或 `git reset HEAD .` - 已提交的更改:`git reset --hard HEAD^` 或 `git reset --hard <commit-id>` 8. **查看日志**:`git log` – 查看提交历史。可以加选项如`--oneline`, `--graph`, `--all`, `--since`, `--author`等。 9. **储藏更改**:`git stash` – 临时保存未提交的更改。`git stash apply` 恢复。 10. **其他常用命令**: - 状态查看:`git status` - 差异查看:`git diff` - 远程管理:`git remote -v` - 标签:`git tag` 我应该参考用户提供的引用: - 引用[1] 提到 clone, add, commit, push。 - 引用[2] 提到放弃修改的命令。 - 引用[3] 提到 stash clear, log命令,统计提交。 - 引用[4] 提到 push失败时先pull。 在回答中,当我使用这些信息时,在段落末尾添加引用标识。 组织回答: 1. **引言**:简要介绍Git常用操作。 2. **基本工作流**:描述日常使用命令(clone, add, commit, push, pull)。 3. **撤销更改**:解释如何处理放弃修改(参考引用[2])。 4. **查看历史**:日志查看和统计(参考引用[3])。 5. **分支管理**:创建、切换、合并分支。 6. **储藏更改**:stash使用(参考引用[3])。 7. **推送注意事项**:当push失败时的处理(参考引用[4])。 8. **其他提示**:简短的其他命令。 最后,生成相关问题。 使用中文回答。 确保结构清晰:使用标题或列表来组织。 由于Markdown支持,我可以使用列表和代码块来显示命令。 示例中的代码块是用的三重反引号,我应该类似。 例如: ```bash git clone <url> ``` 引用格式:在引用内容的末尾加[^1]。 生成相关问题:至少3个相关问题,如示例中的"相关问题"部分。 相关问题示例: 1. Git如何解决合并冲突? 2. Git的rebase和merge有什么区别? 3. 如何配置Git别名提高效率? 现在,构建回答。 </think>### Git常用使用方式总结 Git是一个分布式版本控制系统,广泛用于协作开发和代码管理。以下是Git常用使用方式的全面总结,基于日常开发流程组织,帮助您高效使用Git。总结内容包括基本命令、撤销更改、日志查看、分支管理等核心操作。参考了您提供的引用内容,我将关键点融入其中,并在相关段落末尾添加引用标识[^1][^2][^3][^4]。 #### 1. **基本工作流(日常开发的核心步骤)** - **克隆仓库**:从远程仓库复制到本地。常用命令行示例: ```bash git clone <远程仓库地址> # 克隆远程仓库到本地目录[^1] ``` - **添加文件到暂存区**:准备提交的更改。使用`git add`跟踪新文件或修改: ```bash git add <文件名> # 添加指定文件 git add . # 添加当前目录所有更改(包括新文件和修改)[^1] git add -A # 添加所有更改(包括删除的文件)[^1] ``` - **提交更改**:将暂存区的更改保存到本地仓库,并添加提交消息: ```bash git commit -m "更新内容" # 提交更改,消息描述修改内容[^1] ``` - **推送更改**:将本地提交同步到远程仓库: ```bash git push # 推送当前分支到远程仓库[^1] ``` - **注意事项**:如果推送失败(如他人先更新了代码),先运行`git pull`拉取远端变更并合并后再推送[^4]。 - **拉取更新**:获取远程仓库最新更改并合并到本地: ```bash git pull # 相当于 git fetch + git merge[^4] ``` #### 2. **撤销更改(处理错误或放弃修改)** - **未使用`git add`缓存代码**:放弃工作区的修改: ```bash git checkout -- <文件名> # 放弃指定文件的修改[^2] git checkout . # 放弃所有文件修改[^2] ``` - **已使用`git add`缓存代码**:移除暂存区的更改: ```bash git reset HEAD <文件名> # 放弃指定文件的缓存(文件仍保留在工作区)[^2] git reset HEAD . # 放弃所有缓存文件[^2] ``` - **已提交代码**:回退到历史版本: ```bash git reset --hard HEAD^ # 回退到上一个提交状态[^2] git reset --hard <commit-id> # 回退到特定提交ID的版本[^2] ``` #### 3. **查看历史与日志(分析提交记录)** - **基本日志查看**: ```bash git log # 显示完整提交历史[^3] git log --oneline # 简洁显示(每行一个提交)[^3] git log --graph --all # 图形化显示分支结构[^3] ``` - **过滤日志**:按时间、作者或文件查询: ```bash git log --since="3 days ago" # 查看最近三天提交[^3] git log --author="用户名" # 查看特定作者的提交[^3] git log <文件名> # 查看指定文件的变更历史[^3] ``` - **统计提交**:分析团队贡献: ```bash git shortlog -s -n --since="1 week ago" # 统计最近一周每人提交次数[^3] ``` #### 4. **分支管理(处理多任务或协作)** - **创建与切换分支**: ```bash git branch <新分支名> # 创建新分支 git checkout <分支名> # 切换到指定分支 git switch <分支名> # 新版本推荐方式(更安全) ``` - **合并分支**:将其他分支合并到当前分支: ```bash git merge <分支名> # 合并指定分支的更改 ``` - **储藏更改**:临时保存未提交的工作(例如切换分支前): ```bash git stash # 储藏当前更改 git stash apply # 恢复最近储藏的内容 git stash clear # 清空所有储藏项目[^3] ``` #### 5. **其他常用命令** - **状态检查**:`git status` – 查看工作区和暂存区状态。 - **差异比较**:`git diff` – 显示未暂存的更改;`git diff --staged` – 显示已暂存的更改。 - **远程仓库管理**:`git remote -v` – 列出所有远程仓库地址。 - **标签操作**:`git tag <标签名>` – 为当前提交打标签(用于版本发布)。 #### 最佳实践提示 - **推送前先拉取**:避免冲突,养成`git pull`习惯后再`git push`[^4]。 - **定期提交**:小步提交(commit)能减少冲突风险。 - **使用`.gitignore`**:忽略无需跟踪的文件(如临时文件)。 通过以上总结,您可以覆盖Git日常使用的90%场景。如需深入学习,推荐Git官方文档或在线教程。 相关问题: 1. Git如何处理合并冲突? 2. Git的rebase和merge有什么区别? 3. 如何配置Git别名以提高命令效率?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值