Git

TIP

If you have two-factor authentication enabled for your account, you are already required to use token- or SSH-based authentication.

Docopen in new window

command

# 万物尹始
git init
#也可以从远程clone下来
git clone rep

#一共有三个基准的config list
git config --system --list/-l
git config --global --list/-l
git config --local --list/-l
#可以全局设置用户名/邮箱, 也可以单独针对一个rep设置
git config --global user.name 'yourname'
git config user.name 'yourname'
git config --global user.email 'youremail'
git config user.email 'youremail'

# git remote 的概念\opreation
git remote -v # 查看远程仓库 以及他们的remote
git remote remove remoteName # 删除远程remote
git remote add remoteName # 添加远程remote
git remote update originName --prune # 更新本地remote分支,与远程保持一致(刷新)

# git branch
git branch -v # 查看本地分支
git branch -a # 查看本地与远程分支
git branch -r # 查看远程分支
git branch -vv # 查看本地分支跟踪到了哪个分支
git branch -u origin/branchName # 已有远程分支,让本地分支跟踪远程分支
#在远程分支的基础上建立develop分支,并且让develop分支追踪origin/develop远程分支
git branch --set-upstream branchName(本地) origin/branchName(远程)
git branch branchName # 创建本地分支
git branch -m branchName # 重命名分支

#代码操作
git add . # 添加代码到暂存区
git commit -m 'description'
git push # 推送到远程分支
git fetch 配合 git merge 使用
git pull
git push originName branchName:remoteBranchName #推送本地分支到指定远程(没有则会创建远程分支)
git checkout branchName # 切换分支
git checkout -b branchName # 创建并切换到分支
git push origin branchName # 本地的分支名称和远程名称相同,则使用
git reset --soft HEAD^  # 撤销commit (撤销commit 不撤销 add)

git clean -nxdf
git checkout . && git clean -xdf

ssh 秘钥 以及 配置

#git使用https协议,每次pull, push都要输入密码,相当的烦。
#使用git协议,然后使用ssh密钥。这样可以省去每次都输密码。

# git 生成 rsa ssh
ssh-keygen -t rsa -C 'xxx@example.com' -f ~/.ssh/gitee_id_rsa
ssh-keygen -t rsa -C 'xxx@example.com' # 或者直接执行然后按照提示步骤进行操作
ssh-add ~/.ssh/id_rsa # rep 添加私钥 , 如果出现
# Could not open a connection to your authentication agent. 执行 ssh-agent bash 在重新add
ssh -T git@github.com # 测试连接

# 如果添加不了 执行 ssh-agent bash 再重新执行

# 公钥用于在rep上输入

ssh-keygen -m PEM -t rsa -b 4096 -C "你的git邮箱地址"

TIP

在代码块中, []包裹内容为可选, <>中内容为替换

https://www.cnblogs.com/yhjoker/p/11776240.html

创建 git 本地仓库, 添加远程仓库

git init

# git init 设置默认分支
git config --global init.defaultBranch master

# 添加远程仓库, origin 可以替换为任意输入
git remote add origin <remote_url>

配置文件存放位置

全局的配置: ~/.gitconfig; 针对单独仓库的配置: <yourRepository>/.git/config

git 对文件的权限追踪

查看 git 仓库的 config 设置,core -> filemode如果设置为 true,会对通过 chmod 权限修改的 文件也进行追踪。如果要取消设置git config core.filemode false

查看与设置 User 的信息

git config [--global] user.name [your_name]
git config [--global] user.email [your_email]

clone 一个仓库

如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。

git clone <remote_url>

抓取更新

fetch

git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

TIP

一般添加远程仓库 或者 clone 仓库 都默认会以 origin 作为远程仓库的名字,要特别注意的一点是当抓取到新的远程跟踪分支时,本地不会自动生成一份可编辑的副本(拷贝。 换一句话说,这种情况下,不会有一个新的 serverfix 分支——只有一个不可以修改的 origin/serverfix 指针 可以运行 git merge <remote>/<branch> 将这些工作合并到当前所在的分支。

pull

当你的当前分支设置了跟踪远程分支, 可以用 git pull 命令来自动抓取后合并该远程分支到当前分支。

检出分支

想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数的 git checkout 命令

git checkout [-b] <branch_name>

删除分支

删除本地分支

你可以使用带 -d 选项的 git branch 命令来删除分支

git branch [-d] <branch_name>

删除远程分支

假设你已经通过远程分支做完所有的工作了——也就是说你和你的协作者已经完成了一个特性, 并且将其合并到了远程仓库的 master 分支(或任何其他稳定代码分支)。 可以运行带有 --delete 选项的 git push 命令来删除一个远程分支。 如果想要从服务器上删除 serverfix 分支,运行下面的命令

git push origin --delete serverfix

查看远程分支

你可以通过 git ls-remote <remote> 来显式地获得远程引用的完整列表, 或者通过 git remote show <remote> 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支

跟踪分支

跟踪分支是与远程分支有直接关系的本地分支。 如果在一个跟踪分支上输入git pullGit能自动地识别去哪个服务器上抓取、合并到哪个分支。当克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master(远程)master(本地) 分支。

直接从远程分支检出本地分支

从一个远程跟踪分支检出一个本地分支会自动创建所谓的“跟踪分支”(它跟踪的分支叫做“上游分支”)

然而,如果你愿意的话可以设置其他的跟踪分支

git checkout -b [branch] <remote>/<branch>

# or

git checkout --track <remote>/<branch>

从本地分支跟踪远程分支

设置已有的本地分支跟踪一个刚刚拉取下来的远程分支,或者想要修改正在跟踪的上游分支, 你可以在任意时间使用 -u--set-upstream-to 选项运行 git branch 来显式地设置

git branch -u <remote>/<branch>

推送

从本地推送一个远程没有的分支到远程仓库 可以创建远程分支

git push <remote> <branch>

# 如果并不想让远程仓库上的分支叫做 serverfix,可以运行 git push origin serverfix:awesomebranch 来将本地的 serverfix 分支推送到远程仓库上的 awesomebranch 分支
git push origin <local_branch>:<remote_branch>

TIP

git push origin serverfix为例: 在你推送之后, 下一次其他协作者从服务器上抓取数据时,他们会在本地生成一个远程分支 origin/serverfix,指向服务器的 serverfix 分支的引用

Reset and Revert(版本回退)

# 强制把branch的指针指向需要的一次commit, 会影响那次commit之后的commit
git reset --hard <commit_id>

# 快捷指向上一次修改
git reset --hard HEAD^

取消 merge

git merge --abort

取消关联远程分支

git branch --unset-upstream
Last Updated:
Contributors: Moui