正 文:
【
Git版本控制本地安装】
学习资料:
版本2:
https://git-scm.com/book/zh/v2/ 版本1:
http://iissnan.com/progit/*安装
打开
https://git-scm.com/download/win 目前最新版本2.8.3
下载 64-bit Git for Windows Setup 或者 32-bit Git for Windows Setup
安装选项
•在 Select Components 中,选定 Use a TrueType font in all console window (not only for Git Bash)
•在 Adjusting your PATH environment 中,选定 Run Git from the windows Command Prompt
•其他选项保留缺省值
设置用户名称与邮件
git config --global user.name "Piaoyi"
git config --global user.email piaoyi@gmail.com
Windows 下的 Git 设置Sublime Text 2为默认编辑器
git config --global core.editor "'C:\Program Files\Sublime Text 2\sublime_text.exe' -w"
解决git status 中文乱码
git config --global core.quotepath false
生成 SSH 公钥,路径一般在 C:\Users\登陆用户名\.ssh,把生成的公钥 id_rsa.pub 发送给Git服务器管理员
ssh-keygen
本地如何使用Git?一、新项目联系Git服务器管理员开通一个git裸仓库。
二、本地首次初始化
cd myproject #到实际本地目录里
git init
git add .
git commit -m 'initial commit'
git remote add origin git@git.jinyiyun.net:/home/git/test.git
git push origin master
三、其他人克隆、推送:
git clone git@git.jinyiyun.net:/home/git/test.git
cd test
vim README
git commit -am 'fix for the README file'
git push origin master
四、设置本地分支跟踪远程分支
git branch --set-upstream-to=origin/master master
五、
检查项目根目录 .gitignore 文件(若无则创建),排除不需要版本控制的文件夹/文件GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在
https://github.com/github/gitignore 找到它。
简单介绍:
https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93----------------------------------------------------------------------
【
Git版本控制服务器端安装for CentOS 6.5 64位】:
如果直接yum安装,那么centos 6.5的默认源里的git版本是 1.7.1,比较老旧:
yum install git
所以建议大家采用从源代码安装最新版本git,目前最新版本是2.8.3:
从源码安装 Git,需要安装 Git 依赖的库:curl、zlib、openssl、expat、libiconv:
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
支持更多格式的文档(如 doc, html, info),需要安装以下的依赖包
yum install asciidoc xmlto docbook2x
下载git最新版本
先查看最新版本(网址
https://www.kernel.org/pub/software/scm/git),当前为 git-2.8.3.tar.gz :
cd /usr/src
wget https://www.kernel.org/pub/software/scm/git/git-2.8.3.tar.gz
tar -xzf git-2.8.3.tar.gz
cd git-2.8.3
make configure
./configure --prefix=/usr/local/git
make all doc
make install install-doc install-html
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc
查看版本号
git --version
git-shell位置:
/usr/local/git/bin/git-shell
创建用户:git 步骤:
adduser git #默认家目录 /home/git/
mkdir /home/git/.ssh
touch /home/git/.ssh/authorized_keys #创建
添加各用户的公钥 id_rsa.pub 到上述文件中。
修改 /home/git 目录用户组权限
chown -R git:git /home/git
修改git用户的默认shell权限
vi /etc/passwd
git:x:500:500::/home/git:/bin/bash
改成
git:x:500:500::/home/git:/usr/local/git/bin/git-shell
服务器初始化一个不包含工作目录的裸仓库
cd /home/git
mkdir test.git
cd test.git
git --bare init
----------------------------------------------------------------------
Git常用的命令语句:
在现有目录中初始化仓库
git init
git add *
git add *.c
git commit -m 'initial project version'
提交更新
方法1: 增改的文件必须先 git add
git commit #会启动编辑器输入
git commit -m 'added new benchmarks'
方法2:加上 -a 选项,自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
git commit -a -m 'added new benchmarks'
移除文件
从快照和本次磁盘里删除
git rm PROJECTS.md
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
仅删除快照里的,不删除本地磁盘里的
git rm --cached PROJECTS.md
git rm log/\*.log #删除 log/ 目录下扩展名为 .log 的所有文件
git rm \*~ #删除以 ~ 结尾的所有文件
移动文件
在 Git 中对文件改名
git mv file_from file_to
查看提交历史
git log
git log -p -2 #显示最近2次提交的内容差异
git log --pretty=oneline
git log --pretty=format:"%h - %an, %ar : %s"
撤消操作 选项 --amend
git commit -m 'initial commit'
git add forgotten_file
git commit --amend
只会有一个提交 - 第二次提交将代替第一次提交的结果。
取消暂存的文件
git reset HEAD <file>
撤消对文件的修改
git checkout -- <file>
危险!对文件做的任何修改都会消失 - 只是拷贝了另一个文件来覆盖它
查看远程仓库
git remote
git remote -v
git remote show origin
添加远程仓库
git remote add <shortname> <url> #若不设置shortname,默认为origin
git remote add pb https://github.com/paulboone/ticgit
从远程仓库中抓取与拉取
git fetch [remote-name]
示例:git fetch origin
使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写
git fetch origin #会抓取克隆(或上一次抓取)后新推送的所有工作。
git pull #自动的抓取然后合并远程分支到当前分支
推送到远程仓库
git push [remote-name] [branch-name]
示例:git push origin master # 将 master 分支推送到 origin 服务器
远程仓库的移除与重命名
git remote rename pb paul #重命名
git remote rm paul #移除
----------------------------------------------------------------------
列出标签 (标记发布结点 v1.0 等)
git tag
git tag -l 'v1.8.5*'
创建标签
git tag v1.4-lw # 轻量标签,不保存任何其他信息
git tag -a v1.4 -m 'my version 1.4' # 附注标签,指定 -a 选项
git show v1.4 #查看
后期补打标签
git tag -a v1.2 9fceb02 # 末尾指定提交的校验和(或部分校验和)
共享标签
git push origin [tagname]
git push origin v1.5
把所有不在远程仓库上的标签全部传送到远程仓库
git push origin --tags
检出标签
git checkout -b [branchname] [tagname]
git checkout -b version2 v2.0.0
Git 别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --' #取消暂存文件
git config --global alias.last 'log -1 HEAD' #最后一次提交
----------------------------------------------------------------------
分支创建
git branch testing
分支切换
git checkout testing #分支切换会改变你工作目录中的文件
新建一个分支并同时切换到新分支上,-b 参数
git checkout -b iss53
删除分支
git branch -d hotfix
合并分支 merge
git checkout master
git merge hotfix #合并分支hotfix到主分支master
遇到冲突时的分支合并
<<<<<<< , ======= , >>>>>>>
git add <file>
git status
git commit
分支管理
git branch #当前所有分支
git branch -v
git branch --merged
git branch --no-merged
远程分支
git ls-remote (remote)
git remote show (remote)
git remote show origin
推送分支
git push (remote) (branch)
git push origin serverfix
git push origin serverfix:serverfix
抓取新的远程跟踪分支
git fetch origin
合并到当前所在的分支
git merge origin/master
git merge origin/serverfix
跟踪分支
# 在一个跟踪分支上输入 git pull,Git 能自动地识别去哪个服务器上抓取、合并到哪个分支。
git checkout -b [branch] [remotename]/[branch]
git checkout --track origin/serverfix # 快捷方式--track,等同于上个命令
要在自己的 serverfix 分支上工作,可以将其建立在远程跟踪分支之上
git checkout -b serverfix origin/serverfix
设置已有的本地分支跟踪一个刚刚拉取下来的远程分支,或者想要修改正在跟踪的上游分支,你可以在任意时间使用 -u 或 --set-upstream-to 选项
git branch -u origin/serverfix 或
git branch --set-upstream-to=origin/<branch> master
查看设置的所有跟踪分支
git branch -vv #本地缓存的服务器数据
git fetch --all; git branch -vv #统计最新的领先与落后数字
拉取
git fetch
git pull #相当于 git fetch; git merge 不建议用
删除远程分支
git push origin --delete serverfix
----------------------------------------------------------------------
变基
git checkout experiment
git rebase master
git rebase --onto master server client #选中在 client 分支里但不在 server 分支里的修改,将它们在 master 分支上重演
git rebase [basebranch] [topicbranch]
git rebase master server
变基的风险
[不要对在你的仓库外有副本的分支执行变基]
只对尚未推送或分享给别人的本地修改执行变基操作清理历史,从不对已推送至别处的提交执行变基操作!
----------------------------------------------------------------------
贡献代码-提交准则
git diff --check # 空白错误检查
信息应当以少于 50 个字符(25个汉字)的单行开始且简要地描述变更,接着是一个空白行,再接着是一个更详细的解释。
Git 项目要求一个更详细的解释,包括改动的动机和它的实现与之前行为的对比 - 这是一个值得遵循的好规则。 在这些信息中使用现在时态祈使语气也是一个好想法。
----------------------------------------------------------------------
Linux的相关命令:
切换用户
su newuser 只切换身份,但Shell环境仍然是原来用户的Shell
su - newuser 同时切换身份和Shell环境
环境变量
echo $PATH
当前用户工作目录
pwd
更改密码
passwd username
删除用户
userdel username
用户列表文件:cat /etc/passwd
用户组列表文件:cat /etc/group
查看系统中有哪些用户:cut -d : -f 1 /etc/passwd
查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
查看某一用户:w 用户名
查看登录用户:who
查看用户登录历史记录:last
ls -A 列出所有条目,除了 .(点)和 ..(点-点)。
ls -a 列出目录中所有项,包括以 .(点)开始的项。