这篇文章写的是在mac下利用Terminal
来进行代码上传及其他基本操作的方法
认识git
工作区Working Directory:git init
目录
版本库Repository:工作区中的子目录.git
暂存区:stage
分支:branch
上传代码流程
工作区=>add=>暂存区=>commit=>branch
git各类命令操作及相关名词解释
git配置
git的当前工作目录的配置文件一般存在如下路径:.git/config
当前用户的git配置文件一般存在如下路径:~/.gitconfig
设置名称邮箱
git config –global user.name “Your Name”
git config –global user.email you@example.com
若git保存的name和emaile有误,则进行修改,如下:
git commit –amend –author=’Your Name you@example.com‘
git显示颜色
git config –global color.ui true
设置alias
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
忽略文件配置
- 在git工作区创建
.gitignore
文件,把需要忽略掉的文件名填进去,git就会自动忽略掉这些文件,注意不要重头编写.gitignore
文件,github已经为我们准备了各种配置文件,详情请查看https://github.com/github/gitignore - 填写完
.gitignore
文件后,需要把该文件提交到Git上
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
查看被忽略的文件
git check-ignore
强行添加被忽略的文件
git add -f filename
本地操作
把目录变成git
可以管理的仓库
git init
查看状态
git status
可查看有change but not update的文件或add了没commit的文件
- Untracked files:从来没add过,不受git控制
- Changed but not updated:工作区更改了的文件,表示可以add
用暂存区中的版本库中的最新版本覆盖掉工作区的文件
git checkout [-filename]
- Changes to be committed:暂存区中的文件,可以commit
版本回退
git reset [–hard] HEAD [filename]
- unstage:取消掉当前的commit
- HEAD:当前版本
- HEAD\^:上一个版本
- HEAD\^\^:上两个版本
- HEAD~100:上100个版本
回退到上次代码提交时的状态
git reset –hard
这条命令会把你工作目录中所有未提交的内容清空
查看git里面有什么文件
git ls-files
查看日志
git log
- –pretty=oneline:显示每个版本的id、message
- –pretty=oneline –abbrev-commit:只显示版本id的前7位
查看文件的改动
git diff filename
查看相对于某个版本的改动
git diff HEAD –readme.txt
把工作区中的文件add到stage暂存区,即子目录.git下
git add filename1 filename2 …
暂存区的文件会显示status中的Changes to be committed:add了之后若再次修改需要再次add才能把修改后的文件commit上去
从版本库中删除
git rm file
把stage暂存区的文件一次性提交到版本库中所属分支上
git commit -m “本次提交所做的改动”
commit只会提交add进来时的状态,add了之后再做改变的不会commit
关联远程库
origin表示远程库,可理解为上传代码到远程库
git remote add origin git@server-name:path/repo-name.git
git remote add origin git@TeamServer(IP address):Project_name
更改已关联库
git remote set-url origin git_usr@teamservers:New_pro
查看已关联库
git remote -v
推送本地的最新修改到远程库master分支,注:第一次推送要加上-u
参数
git push -u origin master
git push origin master
git push origin branch
查看可克隆的项目
ssh git@teamserver
克隆
git clone git@teamserver:project
从远程库拉取
git fetch [origin master](推荐)
git pull [origin master]
查看本地和远程的所有分支
git branch -a
把远程的origin/dev分支拷贝一份到本地新建的dev分支并跳到dev分支
git checkout -b dev origin/dev
分支
查看分支
git branch
新建分支
git branch
删除branch_name分支
git branch -d
强行删除未merge的分支
git branch -D feature-vulcan
切换到branch_name分支
git checkout
新建并切换到branch_name分支
git checkout -b
合并branch_name与当前分支并加上commit信息防止branch_name删除后信息丢失
git merge –no-ff -m “merge with no-ff” branch_name
工作栈
用于临时切换到别的分支修复bug,可再跳回来
保存现有的工作区到栈中
git stash
查看栈
git stash list
恢复工作区
git stash apply
删除栈中保存的工作区
git stash drop
恢复工作区并删除栈
git stash pop
临时修复bug流程代码示例
git satsh//保存现场
git checkout master
git checkout -b bugfix
...
git checkout master
git merge --no-ff -m "merged bug fix" bugfix
git branch -d bugfix
git checkoutdev//回到原来的分支
git stash list//查看栈
git stash pop//弹出原来的工作区
标签
给commitid号贴一个名字
查看标签(安装字母排列)
git tag
查看标签信息
git show
给最新的一次commit贴标签v1.0
git tag v1.0
给commitid为12356的贴标签v2.0
git tag v2.0 123456
制定标签名并加上说明文字
git tag -a v1.0 -m “version 1.0 released” 123456
-a
参数换成-s
参数才用psp
标签
从本地删除标签
git tag -d v1.0
推送某个标签到远程
git push origin
推送所有标签到远程
git push origin –tags
从远程删除
git tag -d v1.0 && git push origin:res/tags/v1.0
上传代码
新建仓库
- 点击新建仓库
2. 填写相关信息
安装git
mac下必须先安装Xcode Command Line Tools
确认安装完成后,在Terminal
下输入命令:git
初次运行Git前的配置——git config
Git自带一个git config
的工具来帮助设置控制Git外观和行为的配置变量。这些变量存储在三个不同的位置:
/etc/gitconfig
文件: 包含系统上每一个用户及他们仓库的通用配置。如果使用带有--system
选项的git config
时,它会从此文件读写配置变量。~/.gitconfig
或~/.config/git/config
文件:只针对当前用户。可以传递--global
选项让Git读写此文件。
当前使用仓库的Git目录中的config
文件(就是.git/config
):针对该仓库。
每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。
用户信息
git config --global user.name "username"
git config --global user.email "address@email.com"
文本编辑(默认是vim)
git config --global core.editor vim
检查配置信息
git config --list
创建SSH Key
在Terminal
中输入cd ~/.ssh
查看有没有.ssh
文件夹,如果能进入此文件夹则继续ls
查看有没有id_rsa
和id_rsa.pub
这两个文件,有了则不需再创建SSH Key了,没有输入cd ~
回到用户目录,在Terminal
上输入:
ssh-keygen -t rsa -C "address@email.com"
然后一路回车,然后在.ssh
文件夹下就产生了这两个文件了
在代码托管平台添加公钥
在Terminal
中输入cat ~/.ssh/id_rsa.pub
,复制文本中的内容,然后登陆github账号,找到settings
,在左侧的Personal settings
中找到SSH and GPG keys
,点击New SSH Key
按钮,标题随意,粘贴文本内容
最后,在Terminal
中输入ssh -T git@github.com
命令来验证这个key是否能正常工作,若是正常的,则会打印:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
warning不需理会
clone新建的repository到本地
在Terminal
中输入cd {PATH_TO_WHERE_YOU_WANT}
到一个你想放代码的地方,并输入一下命令:
git clone https://...
这时会在目录下会生成对应的文件夹,文件夹里有一个README.md文件,将想要上传的代码放到此文件夹中
上传代码
在Terminal
中输入命令cd {PATH_TO_GIT_FOLDER}
到需要上传的代码的所在文件夹中,输入一下命令:
git init
则出现
Reinitialized existing Git repository in /.../.git/
而且当前文件夹中还会出现.git
文件夹
再输入:
git add *
此命令则表示上传当前文件夹中的所有文件,若想传单个文件,则应输入git add README.md
回车后则输入
git commit -m "..."
简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录
接着再输入
git remote add origin https://.../
若输出以下错误:
fatal: remote origin already exists.
则输入:
git remote rm origin
再重复执行以上命令,接着输入:
git push origin master
若输入以下错误:
error:failed to push som refs to.......
则输入:
git pull origin master
再重复输入以上命令
先把远程服务器github上面的文件拉先来,再push上去
最后你可以去GitHub上查看代码已经上传成功~~~