github
打开git bash(右键菜单Git Bash Here)
// 生成rsa公钥和私钥 - Enter到底
>> ssh-keygen -t rsa -C "[email protected]"
/*
. 找到C:\Users\[用户名]\.ssh目录下id_rsa和id_rsa.pub;
. 用文本工具打开id_rsa.pub,全选复制;
. 登录github,settings > SSH and GPG keys > New SSH key
. Title随便写,key粘贴刚复制的内容;
*/
//
>> ssh -T [email protected]
// 配置
>> git config --global user.name "your name"
>> git config --global user.email "[email protected]"
第一次git push 会有如下提示:
注意:切换其他账号时,需在【控制面板 - 用户账户 - 凭据管理器 - Windows凭据】将github信息删掉
git图
git命令
- git init
- git config
- git add
- git rm
- git status
- git commit
- git push
- git pull
- git log
- git branch
- git checkout
- git remote
- git reflog
git init
初始化一个空的git本地仓库, 如git init
新建一个目录,将其初始化为Git代码库,如git init <project-name>
git config
列出Git可以在该处找到的所有的设置, 如 git config --list
获取特定项目的特定的关键字目前的值,如 git config user.name
设置特定项目的特定的关键字目前的值,如 git config user.name zhou
全局设置特定的关键字目前的值, 如 git config --global user.name zhou
git add
将文件添加到暂存区(索引), 如git add test1.txt test2.txt
将当前目录所有文件都添加到暂存区, 如git add .
将所有修改的新增的删除的未跟踪的添加到暂存区,如git add -A
将所有修改的删除的添加到暂存区, 如git add -u
添加每个变化前,都会要求确认, 如git add -p
git rm
说明:从工作区和索引中删除文件
删除工作区并停止跟踪此文件, 如git rm test1.txt test2.txt
停止跟踪此文件但不删除工作区文件 如git rm --cached test1.txt test2.txt
删除目录 如git rm <目录名> -r
git status
显示工作目录和暂存区的状态。
使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到.
git commit
-m : 提交的注释信息
-a : 直接将修改过的或删除操作的文件提交到本地仓库
--amend: 追加提交,不增加commit-id
--help : 提交帮助
git tag
标记当前HEAD指针
git tag
git tag -a "test_tag_1" -m "test tag 1"
git push origin tag test_tag_1
git push
git push <远程主机名> <本地分支名>:<远程分支名>
说明::<远程分支名>省略表示远程分支名为与本地分支名同名的远程分支名
如git push origin master
指定默认跟踪关联远程分支用-u,以后直接就可以用git push了,如git push -u origin master 有待验证
git pull
git pull <远程主机名> <远程分支名>:<本地分支名>
说明::<本地分支名>省略表示本地分支名为本地当前分支名
如git pull origin master
git log
查看提交记录
--pretty=oneline : 只显示commit-id和备注信息
--oneline:只显示commit-id简单形式和备注信息
git branch
创建一个本地分支,如git branch <分支名称>
删除一个本地分支,如git branch -d <分支名称>
查看所有分支名称,如 git branch -a
查看远程分支名称,如 git branch -r
修改本地分支名称,如 git branch -m <旧分支名称> <新分支名称>
删除远程分支名称,如 git push origin --delete <分支名称> 或者git push origin :<分支名称>
git checkout
切换分支,如git checkout <分支名称>
创建并切换分支到指定起点,如git checkout -b <分支名称> <commit-id简写>
(起点可以是之前删除的同名的一个提交点)
git remote
说明:管理一组跟踪的存储库
列出已经存在的远程分支, 如git remote
列出详细信息,在每一个名字后面列出其远程url, 如git remote -v
添加一个新的远程, 如git remote add <名称> <仓库地址>
git reflog
查看操作记录
每行记录都由版本号,HEAD值和操作描述三部分组成。版本号在第一列,HEAD值在第二列,操作描述信息在第三列。
HEAD值用来标识版本,但是不同于版本号的是,Head值是相对的。
HEAD值为HEAD时,表示为提交的最新版本;
HEAD^ 表示为最新版本的上一个版本;
HEAD^^表示为最新版本的上上个版本;
HEAD~100表示为最新版本的往上第100个版本。
.git
本地项目git管理根目录下都会有一个.git的隐藏文件夹,即git目录
HEAD
查看HEAD信息
>> cat .git/HEAD
可能的结果: ref:refs/heads/master
>> cat .git/refs/heads/master
结果: master分支最后一次提交的commit-id
config
查看config信息
>> cat .git/config
可能的结果:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = https://github.com/***/***.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase配置
[branch "<bash分支名>"]
rebase = true
// 或者
[branch]
autosetuprebase = always
这样没错git pull就会默认带上--rebase
info/exclude
忽略提交规则文件,同.gitignore
操作
▶ 避免合并提交日志(有待验证)
- pull在每次提交前,若发现有文件重贴或者冲突,停止pull;
- commit提交;
- git pull --rebase,若有冲突会停止,此时需要手动修改;
- git add ***,手动修改后添加;(这次不用commit)
- git rebase --continue,然后继续重新应用;也可以放弃应用回到原始状态;
- git rebase --abort,放弃重新应用,回到rebase前的状态;
(说明:git pull --rebase原理,先把暂存区修改记录保存到rebase下,回到修改前状态,拉代码合并,在将修改的记录从rebase取出,在通过补丁方式打入到合并后代码中,并产生一次提交记录,废弃pull前的原来提交记录,若产生者冲突,要求手动修改,然后继续合并代码,合并成功后再push代码,最后到分支记录也只有一次提交记录)