Git
TIP
If you have two-factor authentication enabled for your account, you are already required to use token- or SSH-based authentication.
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 pull
,Git
能自动地识别去哪个服务器上抓取、合并到哪个分支。当克隆一个仓库时,它通常会自动地创建一个跟踪 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