Git 笔记

服务器远程使用记录。

概述

已经建好仓库,cd到仓库路径下。
Git:分布式版本管理工具,去中心化(每个分支都是一个中心),支持本地仓库存储。使用可参考Git 基础 - 远程仓库的使用

Git中三类文件:

  • 被追踪的(tracked): 已经加入文档库
  • 不被追踪的(untracked): 没有加入文档库
  • 忽略的(ignored): 忽略那些不需要管理的文件夹或文件

Git之所以比其他版本控制系统设计的优秀,因为Git跟踪并管理的是修改,而非文件。参考[管理修改-廖雪峰的官方网站]。
Git是分布式版本控制工具,它是有一个暂存区概念的,每一次修改了需要add到暂存区然后在commit提交,如果修改了直接提交的话,是不会成功的,因为提交只会提交暂存区中有的修改。可以使用git diff HEAD -- filename来查看工作区和版本库里面最新版本的区别。关于Git的各个区可参考[Git 工作区、暂存区和版本库]。

Git使用的奇技淫巧 (qq.com)

git clone -b my-feature-branch https://github.com/user/repo.git【克隆一个名为 my-feature-branch 的分支】
git clone -b master https://github.com/username/example.git 【拉取某个分支(示例中是master分支)】

LFS

tutorials/git-lfs
Git LFS 操作指南

使用 Git LFS 的核心思想就是把需要进行版本管理、但又占用很大空间的那部分文件独立于 Git 仓库进行管理。从而加快克隆仓库本身的速度,同时获得灵活的管理 LFS 对象的能力。
默认情况下,只有当前 commit 下的 LFS 对象的当前版本才会被获取。

# 查看当前使用 Git LFS 管理的匹配列表  
git lfs track

# 使用 Git LFS 管理指定的文件  
git lfs track "*.psd"

# 不再使用 Git LFS 管理指定的文件  
git lfs untrack "*.psd"

# 类似 `git status`,查看当前 Git LFS 对象的状态  
git lfs status

# 枚举目前所有被 Git LFS 管理的具体文件  
git lfs ls-files  

# 检查当前所用 Git LFS 的版本  
git lfs version  

# 针对使用了 LFS 的仓库进行了特别优化的 clone 命令,显著提升获取  
# LFS 对象的速度,接受和 `git clone` 一样的参数。 [1] [2]  
git lfs clone https://github.com/user/repo.git  

如果正在克隆包含大量 LFS 文件的仓库,显式使用 git lfs clone 命令可提供更好的性能。该命令不会一次下载一个 Git LFS 文件,而是等到检出(checkout)完成后再批量下载所有必需的 Git LFS 文件。这利用了并行下载的优势,并显著减少了产生的 HTTP 请求和进程的数量(这对于提高 Windows 的性能尤为重要)。该命令同样也兼容没有使用 LFS 的仓库。即无论要克隆的仓库是否使用 LFS,都可以使用 git lfs clone 命令来进行克隆。

使用

常用命令:

  • git remote 查看本地添加了哪些远程分支地址;git remote -v 详细
  • git status 查看当前仓库的状态。显示当前的工作目录状态,包括你是否处于一个分支上。检查本地 Git 仓库中是否有未提交的更改。出现 working tree clean表示工作区很干净,没有被修改的文件或者没有需要提交的文件;否则可以结合git diff filename查看文件被修改情况
  • git log 查看提交日记,键入q回到主界面;git log --oneline查看简介版本的日志
  • git diff filename 比较文件的变动,必须在没有add进暂存区之前进行比较,如果已经添加进暂存区之后将无法比较出区别

分支管理

  • git branch 查看并列出仓库中的所有本地分支
  • git branch --show-current 输出当前所在的分支名
  • git symbolic-ref --short HEAD 输出 HEAD 引用的短名称,也就是当前分支的名称
  • git branch branchname 手动创建一个分支
  • git pull origin master 这里 git pull 表示将远程origin主机的master分支最新内容拉取过来和本地的当前分支进行合并。git pull = git fetch + git merge
  • git checkout test 切换到test分支

修改提交

  • git add * 将所有文件添加到缓存区;git add filename 将文件filename添加到缓存
  • git commit -m 'description' 将缓存区内容添加到仓库中
  • git commit -am 'description' 如果觉得 git add 提交缓存的流程太过繁琐,Git 也允许用 -a 选项跳过这一步
  • git push <远程主机名> <本地分支名> <远程分支名> 如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名

远程地址修改
可以先用使用命令 git remote -v 来查看当前配置的远程仓库地址。

  • git remote add neworigin https://newgit.com/usr/test 添加一个名为 neworigin 的远程仓库,地址为 https://newgit.com/usr/test
  • git remote set-url origin https://newgit.com/usr/test 如果你想要修改 origin 的地址

删除某一个分支

在删除分支之前,最好切换到其他分支,以确保不会丢失工作。例如,切换到 master 分支:git checkout master

  1. 删除本地分支

方法一:使用 git branch -d(推荐,更安全)。此命令会尝试删除指定的本地分支。如果该分支尚未合并到其它分支,Git 会阻止您删除它。
git branch -d branch_to_delete 将 branch_to_delete 替换为要删除的分支名称。
方法二:使用 git branch -D(强制删除,谨慎使用)。此命令会强制删除指定的本地分支,即使它尚未合并到其它分支。谨慎使用此选项,以免丢失未合并的更改。
git branch -D branch_to_delete

  1. 删除远程分支

要删除远程分支,请使用以下命令:
git push origin --delete branch_to_delete
执行此命令后,远程分支将从远程仓库中删除。请注意,在执行此操作之前,确保您确实要删除此分支,并且已将其合并到其他分支(如果需要的话)。因为删除远程分支后,恢复起来会比较困难。

本地变动->更新远程

本地仓库变动,更新到远程仓库时:
git pull 报错:error: Pulling is not possible because you have unmerged files.

# 确保变动已经提交:
## 推送之前,确保已经使用 git add 将变动的文件添加到暂存区,然后使用 git commit 提交这些变动  
git add .  【或者 git add <file1> <file2> ...】
git commit -m "Your commit message"  

# 检查远程仓库的别名(可选):
## 通常远程仓库的别名是 origin,也可能不同
git remote -v    

# 拉取远程分支的变动(可选):
## 推送之前,通常建议先拉取远程分支的最新变动,以避免直接推送时可能发生的冲突。
git pull origin <branch-name>    

# 推送到远程仓库:
## 如果之前没有设置上游分支,可能需要指定远程仓库和分支:
git push origin <branch-name>   
## 如果已经设置了上游分支,可以简化命令为:  
git push  

本地仅推送新分支

如果本地目录中仅有打算推送新分支的代码,而不是一个完整的Git仓库,需要先将本地目录初始化为一个Git仓库,然后将代码添加到新的分支,最后将新分支推送到远程仓库。具体步骤如下。

  1. 确保在本地代码目录中:可使用命令行工具(如Terminal或Command Prompt)进入代码目录。

  2. 初始化Git仓库:在本地代码目录中,初始化一个新的Git仓库:
    git init

  3. 添加远程仓库:将远程仓库添加到本地Git仓库。假设远程仓库地址为https://github.com/your_username/your_repository.git,可使用:
    git remote add origin https://github.com/your_username/your_repository.git

  4. 创建新分支:在本地创建一个新的分支。假设要创建一个名为new_branch的新分支,使用以下命令:
    git checkout -b new_branch
    上述命令会创建一个名为new_branch的新分支,并自动切换到这个新分支。

  5. 添加并提交代码:将本地代码添加到新分支,并创建一个新的提交。例如:
    git add .
    git commit -m "Your commit message"
    这些命令会将所有修改添加到暂存区,然后创建一个新的提交。

  6. 推送新分支到远程仓库:最后,使用git push命令将新分支推送到远程仓库。假设远程仓库的名称是origin(这是Git的默认设置),可以使用以下命令:
    git push -u origin new_branch
    这个命令会将new_branch分支推送到origin远程仓库。-u选项会将origin设置为new_branch的上游仓库,这意味着在以后的git pull和git push命令中,可以省略远程仓库和分支的名称。

基于已有项目创建新分支

基于已有的Git项目创建一个新的分支,并在本地进行修改后同步至远程端,可以按照以下步骤进行:

  1. 切换到现有的分支,确保你在想要基于其创建新分支的现有分支上。假设这个分支叫做 test:
    git checkout test

  2. 基于当前分支 test 创建一个新的分支 test_new 并立即切换到这个新分支:
    git checkout -b test_new

  3. 进行本地修改,在 test_new 分支上进行你的修改。这可能包括添加文件、修改文件内容等。修改完成后,使用以下命令将这些更改暂存并提交:
    git add .
    git commit -m "Your commit message"

  4. 将本地的 test_new 分支推送到远程仓库。这会创建远程仓库中的对应分支:
    git push -u origin test_new 其中-u 参数设置了上游分支,这样以后只需要使用git push来推送更改。

  5. 使用以下命令来查看远程仓库的分支状态:
    git branch -r

  6. 如果需要切换回原来的 test 分支,可以使用:
    git checkout test

  7. (未用)如果在 test 分支上也需要最新的更改,可以使用以下命令来拉取远程分支的更改并合并到当前分支:
    git pull origin test

posted @ 2020-08-04 15:10  Skye_Zhao  阅读(130)  评论(0编辑  收藏  举报