Skip to content

Chilkings/learngit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

Notes for git!!!

git常用命令

获得版本库 查看信息 版本控制 远程协作
git init git help git add git pull
git clone git log (--graph) git commit git push
git diff git rm

对于user.name和user.email有三个地方可以设置

  • 全部计算机用户  git config --system "value"
    
  • 当前计算机用户  git config --global      常用
    
  • 当前仓库       git config --local
    

git文件操作

直接删除:只在工作区起作用,commit前需要手动git add

git rm删除:在工作区删除并提交到暂存区

恢复删除的文件

  1. 将被删除的文件从暂存区恢复到工作区

    git reset HEAD test2.txt

  2. 丢弃删除这一动作

    git checkout -- test2.txt

替换最新的一次提交

git commit --amend -m "message"

Replace the tip of the current branch by creating a new commit.

自定义log输出

git log -3 git log --pretty=oneline

忽略不需要的文件

自定义.gitignore文件:

  1. *.txt !error.txt 忽略所有txt文件除了error.txt
  2. 指定层级 /error.txt /*/error.txt /**/error.txt
  3. 忽略文件夹的所有文件 build/

git分支

作用 命令
查看分支 git branch 创建新分支 git branch new_branch
切换分支 git checkout branch_name 删除分支(After merge) git branch -d branch_name
创建并切换分支 git checkout -b new_branch 合并分支 git merge branch_name
更改分支名称 git branch -m name new_name 查看远程分支 git remote -v

合并有冲突的分支

首先正常执行合并操作,git会在冲突区域给出选择,选择所需要的结果。使用git add name标记冲突已修改,最后使用git commit完成合并。

禁用FF合并

git merge --no-ff new_branch

可以保留分支信息,合并时生成一个新的commit。

git版本控制

版本切换

git reset --hard commit_id    
git reset --hard HEAD^(上一版本)   
git reset --hard HEAD^^(上两个版本) 
git reset --hard HEAD~x 回退到第x个版本 

操作日志用于查看id号 git reflog

checkout进阶与stash

文件恢复

git checkout -- file_name
将文件恢复至暂存区的状态,实际效果为修改工作区的文件
git reset HEAD file_name
将文件从暂存区移回工作区

切换到游离状态

git checkout commit_id
切换到commit_id这个版本,相当于创建一个未命名的分支。
如果要保存在commit_id这个版本下的修改,必须进行提交并创建一个新分支。
创建新分支时指向此次提交的commit_id2。
git branch new_branch_name commit_id2

保存现场

使用场景---当前分支未开发完成,需要切换的另一分支进行开发
git stash
git stash list

恢复现场

git stash pop 恢复并删除stash内容
git stash apply stash内容并不删除,单纯恢复,需要通过git stash drop stash@{0}删除
git stash apply stash@{0} 恢复到指定现场

标签与diff

查看便签 git tag 打上轻量标签 git tag
打上附注标签 git tag -a -m "" 查找标签 git tag -l ''
删除标签 git tag -d
git blame file_name
查看文件的全部修改记录以及作者
暂存区与工作区比较 git diff 特定commit_id与工作区比较 git commit commit_id(HEAD)
特定commit_id与缓存区比较 git diff --cached commit_id

远程与GitHub

新建远程仓库

Creat a new repo

git init
echo "readme" > README.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/Chilkings/learngit.git
git push -u origin master

Push an existing repo

git remote add origin https://github.com/Chilkings/learngit.git
git push -u origin master //将本地仓库与远程仓库绑定并提交,只执行一次
git remote remove origin //取消关联
git push  				//提交 
git remote show           		//查看所有远程仓库
git remote show origin         //查看远程origin仓库的详细信息

SSH证书配置

ssh-keygen       生成,密码可掠过
id_rsa   私钥              
id_rsa_pub 公钥

git协作

协作模型

master 分支
test 分支
dev 分支
bugfix 分支

获取远程仓库

git clone <link> <new_name> 

推送与拉取

git pull = git fetch + git merge  拉取远程分支并自动合并
git fetch  拉取远程分支
git push 推送到远程分支

图形化界面

gitk        git自带的图形化软件
git gui

获取fork仓库的更新

git remote -v  查看现有的远程仓库
git remote add upstream [email protected]:xxx/xxx.git   添加被fork的远程仓库并命名为upstream
git fetch upstream        拉取远程仓库
git merge upstream/master 合并
git push                 提交到自己的远程仓库

git refspec

别名配置:

git config --global alias.br "branch" 将branch的别名设置为br

拉取远程并创建本地同名同内容分支:

git checkout -b dev origin/dev 
git checkout --track origin/dev

新建分支推送到远程

首先切换到新建分支
git push -u origin dev   -u参数为关联,只需使用一次
git push --set-upstream origin dev
运行此命令的含义就是关联分支并推送,没有关联是无法推送的

删除远程分支

git push origin src:dev
git push origin  :dev   将空分支推送到远程分支,相当于删除
git push origin --delete dev 

标签必须手动推送

git push origin tag_name
git push origin --tag  推送所有未推送的标签
git push origin :refs/tags/v1.0    删除远程v1.0标签
git push origin --delete tag v1.0  删除远程v1.0标签
git tag -d v1.0    删除本地v1.0标签

模块化开发

submodul

无法修改,只能拉取更新

subtree

可以修改,作为子仓库

官方手册

https://git-scm.com/book/zh/v2

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published