(v0.2.0,2016-03-01)
本地git维护三棵“树”。第一个是工作目录,拥有实际文件;第二个是暂存区,像是缓存区域,临时保存改动;最后是HEAD,指向最后一次提交的结果。
cd ~/.ssh
ssh-keygen -t rsa -C email_address
//如果已经有其他的key存在,则需要重命名
生成一对文件,默认名为id_rsa和id_rsa.pub,前者为私钥,后者为公钥,将公钥内容填入响应git管理ssh中。
如果有多个ssh key需要管理配置,比如公共的github和公司私有的gitlab,需要生成多个ssh key,对应不同的账户来管理,可以通过配置~/.ssh中的config文件来实现。
config配置示例如下:
# gitlab
Host gitlab.公司名.com
HostName gitlab.公司名.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
#github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
如果ssh可以成功连接,会返回欢迎信息。
#ssh -T [email protected]
git branch branchname
git checkout branchname
// 可以合并为:
git checkout -b branchname
// 追踪某一分支来创建本地分支
git checkout -b branchname origin/dev_junmo
// 再调用push,可以将本地分支提交到远程分支上去
// 如果远程分支不存在,则会自动创建
git push origin branchname
git branch --set-upstream-to 本地分支名 origin/远程分支名
// 删除本地分支
git branch -d branchname
// 删除远程分支
git push --delete origin branchname
// 重命名本地分支
git branch -m oldbranchname newbranchname
// 重命名远程分支,即先删除远程分支,重命名本地分支后再push
git fetch
git checkout origin/远端分支名 -- 路径/文件名
// 不带任何参数
git diff
// 查看已经add,但没有commit的变更
git diff --cached
// 修改后,查看与最近一次commit的变更
git diff HEAD -- 路径
// 两次commit的差异比对
git diff v1.0 v1.1
// 两个分支间变更
git diff master dev
// 不取master分支上最后一个commit和dev最后一个commit进行对比,而是从master和dev交点的分歧点和dev分支的最后一个commit进行比对
git diff master...dev
// 如果正处在master分支上
git diff ...dev
git add 文件/文件夹
git status
git reset 文件/文件夹
git commit
git add 文件/文件夹
git commit
git push origin 分支名
会在本地工作目录中获取(fetch)并合并(merge)远端的改动。
git pull
git commit --amend
git log // 查看commit日志,找到需要回退的commit的哈希值
git reset --hard commit_id
git push origin 分支名 --force
git lig
git reset commit_id
git add
git commit
git push origin dev_junmo
上一次提交为commit1,在commit1的基础上做了一些修改,有其他需求要修改另一部分,但是当前修改还未完成,不想提交也不想丢弃,使用git stash。
git stash save "message" // 保存当前修改的工作区内容假定为stash1,整个工作区回退到commit1版本,后面的message有助于自己记录保存的内容
// 做其他修改.......
git add files
git commit
git push // 提交后为commit2
// 想恢复stash1的内容,当前本地的HEAD也已经在commit2版本了
git stash pop // 会将最新的stash弹出,并且从stash中删除
git stash apply stash{编号} // 指定弹出stash,并且不会删除
// 这里会存在一个问题,将stash1 pop出来其实是自动和commit2版本进行merge,如果stash中的文件和commit2版本中有冲突,则需要自己解决冲突的地方
git relog
git cherry-pick commit_id
使用HEAD中的最新内容替换掉工作目录的文件
git checkout –
在自己的分支上工作完成后,想将改动提交到master分支,可以提出merge请求,还没有使用命令行操作过,在网站上使用图形化界面操作。merge请求会将发生的改动提交到对应分支,可以在merge时查看difference。